📌
[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들의 순서가 매우매우 중요함!