전체 보기

코테 대비 SQL 복습 정리

작성일자
2023/04/27
태그
PS
프로젝트
책 종류
1 more property

SQL

작년에 정말 재밌게, 그리고 열심히 수강했던 학교 수업인 기초데이터베이스 수업에서 배웠던 내용들을 리마인드하면서, 코테 SQL 풀이에 꼭 필요해 보이는 것들만 여기에 정리해보겠다.

join, 부속질의

/* 조인질의 나 저래? */ select student.sno, student.sname from student, enroll where student.sno = enroll.sno and enroll.cno = 'C102'; /* 본인(투플들)들로 조인된 투플 출력됨 */ select * from student, enroll where student.sno = enroll.sno and enroll.cno = 'C102'; /* 부속질의 - exists 나 저거 돼? */ select sno, sname from student where exists (select * from enroll where student.sno = enroll.sno and enroll.cno = 'C102'); /* 본인(투플)으로 부속질의에서 조인 가능한 student 투플 출력됨 */ select * from student where exists (select * from enroll where student.sno = enroll.sno and enroll.cno = 'C102'); /* 부속질의 - in 나 저기 속해? */ select sno, sname from student where sno in (select sno from enroll where cno = 'C102'); /* 본인 투플의 제품번호가 부속질의에서 뽑은 제품번호 집합에 속하는 student 투플 출력됨 */ select * from student where sno in (select sno from enroll where cno = 'C102');
SQL
복사

DML

(대괄호 안 내용은 생략 가능하단 의미임)

select

SELECT [ALL|DISTINCT] 속성리스트 [AS'출력명'] FROM 테이블리스트 [WHERE 조건] [GROUP BY 속성리스트 [HAVING 조건]] [ORDER BY 속성리스트 [ASC|DESC]];
SQL
복사
all : 중복 허용(default)
distinct : 중복 허용 X
SELECT COUNT(DISTINCT NAME)
집계함수 : 속성리스트 → count/max/min(속성), sum/avg(숫자속성), round(숫자속성,남길소수자리수)
null은 제외하고 계산함
select와 having절에 사용 가능
where절에선 사용 불가능
조건
비교(=, <>, <, >, <=, >=), 논리(and, or, not)
like(%, _) → 문자열만 가능. %는 모든 문자. _는 한 글자.
WHER DATE_OF_BIRTH LIKE '%-03-%’
is null: 아직 입력x | is not null: 이미 입력된
null은 다른 값과 크기 비교 시 전부 거짓
asc: 오름차순(default) - 점점 커짐
desc: 내림차순 - 점점 작아짐
null은 가장 작은 수로 취급함. 오름차순에서 가장 위.
기타 유용한 문법
DATE_FORMAT(변경전, 변경후)
DATE_FORMAT(’1992/03/04’, ‘%Y-%m-%d’) → 1992-03-04
CASE
CASE WHEN 조건 THEN '반환값' WHEN 조건 THEN '반환값' ELSE 'WHEN 조건에 해당 안되는 경우 반환 값' // 없으면 NULL반환 END
SQL
복사
올림/버림/반올림
반올림 : ROUND(변경전, 소수자리수)
올림 : FORMAT(CEIL(변경전 * 10) / 10, 1) → 소수 한 자리수까지
버림 :FORMAT(FLOOR(변경전 * 10) / 10, 1) → 소수 한 자리수까지
1이면 소수 한자리까지(소수 아래 자리 개수). -1이면 십의자리까지 (0의 개수)
참고

insert

insert into 테이블이름[(속성리스트)] values(속성값리스트);
SQL
복사

update

update 테이블이름 set 속성이름=속성값,... [where 조건];
SQL
복사

delete

delete from 테이블이름 [where 조건];
SQL
복사