오늘부터 본격적인 SQL 이론과 실습을 진행한다.
금일부터 진행하는 벨로그는 진행하면서 내가 몰랐거나, 실수 혹은 부족했던 부분을
빨강색 으로 표기할 예정이다.
또한, 기억하면 좋은 내용(혹은 문법) 등 에 대해 파랑색 으로 적고
매일 작성하는 벨로그 주제에 연관 될 경우 상단에 기입할 것이다.
들어가기에 앞서,
누군가 작성한 SQL Query 에 대해 분석 시 우선순위 (먼저 보아야 하는 것) 을 알아보자.
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
SQL 학습을 진행하면서 알아두고 항시 습관화하기
SELECT : 테이블의 값 (열, 컬럼, 필드) 를 선택
DISTINCT : 중복값을 제외
FROM : 레코드를 선택할 테이블 지정
구문 마지막은 ';' 으로 마무리select * from DB명.테이블명 ## 모든 칼럼 조회 select col1, col2 from DB명.테이블명 ## col1, col2 조회* : 아스테리크 (명칭)
특정 조건의 데이터 값을 추출하고자 할때
select * from db명.테이블명 where 조건;
다양한 케이스 별 조건에 따른 결과 값을 달리 하고 싶을 때
select case when 조건식1 then 결과1 when 조건식2 then 결과2 else 결과3 end as 새로운 컬럼명 from db명.테이블명;1) 조건문이 여러 개인 경우,
조건식1에 해당하지 않는 경우는 제외가 됨.
2) IF 문은 잘 쓰이지 않음
조건이 단일인 경우가 적고, 여러 조건을 IF문을 쓰게 된다면 쿼리가 난잡해진다.
익숙치 않은 연산자만 작성함
연산자 예시 의미 !=a!=10 a가 10이 아닌 값 LIKELIKE(%과자%) ~과자~ 의 모든 값을 포함하는 조건 INA IN B B에 A가 포함된 값 NOT INA NOT IN B B에 A가 포함되지 않은 값 NOT, !NOT A, !A A가 아닌 값 IS NULLA IS NULL A가 비어있는 값 사전 캠프 실습문제를 풀면서도 'IN' 과 'LIKE' 혼동 하면서 오답노트 진행한 기억이 있다.
텍스트 where name in ('이선호') where name like ('%이선호%') 강한이선호 집계 안됨 집계 됨 약한이선호 집계 안됨 집계 됨 비 고 정확하게 '이선호'인 경우만 집계 ~이선호~ 에 대한 모든 경우 집계 추가적으로, 다수 연산자를 사용하는 경우 필수적으로 '( )'를 사용 하도록 하자
order by 구문의 경우 항상 구문 마지막에 등장 (Limit 포함)
필수 구문이 아님
- ASC(Ascending) : 오름차 순
- DESC(Descending) : 내림차 순
order by [column]
여기서 col 개수가 여러 개가 들어 갈 수 있다.
** 먼저 입력한 col 이 우선순위가 높음
ex>order by age_value desc, date_value asc
→ age 값을 먼저 내림차 순으로 나열 후, date 값을 오름차 순으로..