UNSIGNED
: 칼럼내에서 음수를 포함하지 않거나 혹은 수의 range를 양수쪽으로 더 넓게 가지고싶을때 사용.
-2147483648 부터 2147483647 에서 --> 0 부터 4294967295.
UNIQUE
:해당 컬럼에 동일한 값이 들어가지 않게함.
CONCAT(a,b)
:두 문자열 합쳐줌
ex) CONCAT(salary,'만원')
=> 50만원
TRUNCATE(AVG(salary),0)
=>소수점 뒤에 자리 0자리 나옴 5,500.000에서 아래처럼 바뀜
IF(deptId=1,'홍보','기획' )
: 1이면 홍보 아니면 기획
SELECT IF(deptId = 1, '홍보', '기획') AS `부서명`,
GROUP_CONCAT(`name` ORDER BY id DESC SEPARATOR ', ') AS `사원리스트`,
CONCAT(TRUNCATE(AVG(salary), 0), '만원') AS `평균연봉`,
CONCAT(MAX(salary), '만원') AS `최고연봉`,
CONCAT(MIN(salary), '만원') AS `최소연봉`,
CONCAT(COUNT(*), '명') AS `사원수`
FROM emp
GROUP BY deptId;
CASE WHEN THEN
GROUP_CONCAT
을 이용한다.GROUP_CONCAT(필드명)
GROUP_CONCAT(필드명 SEPARATOR '구분자')
GROUP_CONCAT(DISTINCT 필드명)
GROUP_CONCAT(필드명 ORDER BY 필드명)
SELECT D.`name` AS '부서',
GROUP_CONCAT(E.`name`)AS '사원리스트'
FROM emp AS E
INNER JOIN dept AS D
ON E.deptId=D.id
GROUP BY deptId;
여기서 GROUP_CONCAT
안하면 홍길동만 나오고 홍길순 안나옴
WHERE
과 HAVING
의 차이점WHERE
: 항상 FROM
뒤에 위치 ,우선적으로 모든 필드를 조건에 둘 수 있음HAVING
: 항상 GROUP BY
뒤에 위치 , 그룹화 되어진 새로운 테이블에 조건을 줄 수 있음.UNION
규격 맞는 SELECT
들 하나로 묶어서 출력해줌SELECT
로 뽑은 애들도 테이블로 생각해준다. 그래서 서브쿼리가 가능한것.