📌
[SELECT
FROM] ←requirement clause
(WHERE) ← 생략가능
[GROUP BY
HAVING
ORDER BY] ← option clause
🔑(LIKE / ARITHMETIC / ORDER BY DESCENT or ASCENT / AS)
: 스트링 매치 비교 연산
‘% ~ %’ : 첫번째 % 앞쪽과 두번째 %의 뒤쪽에 임의의 스트링이 와도 상관없음
‘___’ : 어떤 문자가 와도 됨
LIKE에서 문자열을 나눠서 비교하니까 ⇒ Relational Model 어김! 사칙연산자 +, -,*, /
정렬 연산자
ORDER BY옆에 ordering attribute를 명시해준다(GROUP-BY에서 grouping attribute 명시해주는 것과 동일 )DESC / ASC SELECT문에서도 Ordering attribute를 명시해줌SELF- JOIN 연산 시, AS연산자를 통해 alias를 표현 할 수 있다.
AS를 사용한다.ex. EMPLOYEE AS E, EMPLOYEE AS S
기존에 있던 attribute의 이름을 바꿔서 표현하고 싶다면 AS를 쓰고 E 하면서 renamed 할 수 있다.
Multi-Set Operation으로 UNION, EXCEPT, INTERSECT
IN : SET과 SET사이 , 명백한 SET을 주고 그 안에 속하면 ‘TRUE’로 Nested query를 사용하지 않고 명시된 explicit sets이다 .
*basic sql(3) 참고
ALL, ANY, SOME : 비교 연산자 사용시 (‘<, > , = , <=, >=’) ALL, SOME, ANY 를 사용해 값과 비교 할 수 있다.
double negation
NOT EXIST , EXCEPT
제외한 것에 존재하지 않는 모든것 = for all = double negation.
→ 시간이 오래걸려서 부정의 부정을 하기보다 긍정으로 하는게 좋음
WHERE NOT EXIST …
EXCEPT … ⇒ `Double negation`
절 clause 별로 올 수 있는 것 및 특징
🔑 ( INSERT / DELETE / UPDATE ) → 데이터베이스 STATE 갱신
INSERT INTO / VALUES)
( positional matching )
value 값에 NULL을 집어넣고 싶으면 → 그 value 자리에 , , or ‘ ‘로 비워넣기
ALTERNATE Form
새로운 tuple의 value 들에 대응되는 attribute 이름을 명시적으로 기록

‘내가 원하는 VALUE에다가만 넣고 싶다’
INSERT INTO를 통해 3개의 재구성된 ATTRIBUTE에 대해 SQL 문을 작성해서 값 INSERT
💡 original 데이터가 변경되어도 DEPTS_INFO 속 value들은 UP - TO - DATE 되지 않는다. = 'Dirty함'
WHERE절에 DELETE 될 Tuple들을 선정하고 조건에 맞는 것들이, 삭제되고 회복되지 않음 .
기존에 튜플이 있어야 업데이트 즉 수정될 수 있음
(UPDATE / SET)
WHERE절에 만족할 조건을 달고, SET절에 수정될 NEW values들을 명시해준다.

→ 부서번호가 오른쪽에 있는 Nested Query에서 '연구' 부서의 부서번호를 대상으로 Salary를 10% 인상 해서 바꿔라
+attribute들의 순서가 매우매우 중요함!