본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

SK 네트웍스 AI 캠프

SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day10_SQL 고급

select문에 함수 사용하기

select emp_id, emp_name, emp_no, salary*12 from employee;
select emp_id as 사번, emp_name 이름, substr(emp_no, 1, 6) 주민번호, salary*12 연봉 from employee;

 

 

 

칼럼 대소문자 구분하게하기

utf8mb4

alter table employee 
MODIFY marriage char(1) 
CHARACTER set utf8mb4 COLLATE utf8mb4_bin;

 

 

 

database 단위 대소문자 구분

create DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
alter DATABASE scottdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

 

 

 

 

 

show variable like ~ 변수조회

 

 

 

 

 

sql 표준에서는 "" ''는 식별자로 컬럼명으로 인식되나 mysql은 기본이 sql표준이 아니라 ""를 그저 문자열 취급할 수 있다. 실무에서 는 그래서 백틱, `` 을 권장한다.
이때 ansi_quotes를 켜 활성화시킬수있다.

default시 초기화

 

 

 

 

 

 

join using 연결할 컬럼명 두케이블의 컬럼명 같을때

 

 

 

join on 조건으로 연결

 

 

 

 

inner join on

조건문인 join on을 쓰면되는데 왜 inner가있을까?
같은 의미지만 가독성때문에 '내부 조인이다'를 명확히 표현한다. inner join의 생략형이 join일 뿐.
팀/회사스타일이 inner join을 명확히하고 left join을 필수로 명시, right join을 가끔 사용하기에 inner join을 더 선호할 수 있다.

 

 

 



left join 왼쪽기준 매칭없으면 null

FROM A 👉 A는 무조건 다 살림
LEFT JOIN B 👉 B는 있으면 붙이고, 없으면 NULL
ON A.id = B.id;

 

 

 


right join 오른쪽 기준

FROM A 👉 A는 있으면 붙이고 없으면 NULL
RIGHT JOIN B 👉 B는 무조건 다 살림
ON A.id = B.id;

이름이나 사번이 없으면 null로 뜨는것. 직급 기준.

 

 

 


full join 양쪽다 기준인데, mysql에서는 사용하지않음

 

 

 

 

 

 

 

 

 

coalesce() 

 

 

 

 

그렇다면 둘의 차이는?
COALESCE랑 IFNULL은 둘 다 NULL을 다른 값으로 바꾸는 함수
ifnull이 2개만 비교한다면 

SELECT IFNULL(NULL, 'A');   -- A
SELECT IFNULL('B', 'A');    -- B


coalesce는 여러개중 첫 null 아닌 값을 반환한다.

SELECT COALESCE(NULL, NULL, 'A', 'B');  -- A

 

 

 

 

 

distince 값의 종류를 파악할때

 

 

 

 

현재 날짜와 시간 확인

 

 

 

 

날짜 계산하기 date_sub, date_add

 

 

 

 

날짜또한 연산이 된다.

''로 감싸고 비교 컬럼과의 포맷이 일치하여야함

 

 

 

 

 

concat() 글자 붙여 출력하기

기존 data나 컬럼을 건들이는 것이 아니라 새로운 컬럼을 만들어 보여주는것일 뿐이다.

이때 다른 데이터도 보고싶다면 *, 를 앞에 붙일것.다만 중복될 수 있다. 

SELECT *,
       CONCAT(EMP_NAME, '님') AS EMP_NAME_KR
FROM employee
WHERE HIRE_DATE BETWEEN '2015-01-01' AND '2021-12-31';

 

 

 

 

대문자, 소문자 출력

 

 

 

 

 

 

 

 

distinct null값을 제외한다.

 

 

 

 

 

GROUP BY

그룹핑, 합계를 구할 수 있다

 

 

 

 

 

group by case when else end

그룹으로 묶기 위한 계산식으로 group by 를 사용할 수도 있다. 

case when else end 는 if문과 같다.

https://standout.tistory.com/177

 

조건문, if와 switch

if문과 switch는 비슷하나, 범위는 if문, 값은 switch문이 좋다. if는 그 뜻이 "만약에~"기 때문에 쉽게 이해할 수 있으나 switch-case문은 생소할 수 있는데, 카페에서 메뉴를 선택하는 키오스크를 연상하

standout.tistory.com

 

 

 

 

 

max(sum()) 이중 함수는 지원하지않는다. 이 경우 서브쿼리를 활용한다.

 

 

 

 

having절은 group다음에 온다.

 

 

 

 

 

join은 여러개의 테이블을 하나로 합쳐 큰 테이블을 만든다.