SELECT 컬럼명1, 컬럼명2 ... FROM 테이블명 WHERE 조건절;
UPDATE 테이블명 SET 컬럼명=새로운데이터 WHERE 조건절;
ex)
UPDATE TEACHER SET CLASS_NAME='PE' WHERE NAME='Valentina';
DELETE FROM 테이블명 WHERE 조건절;
ex)
DELETE FROM TEACHER WHERE NAME='Valentina';
| 연산자 | 의미 |
|---|---|
| != | 같지 않음 |
| ^= | 같지 않음 |
| <> | 같지 않음 |
| not 컬럼명 = | 같지 않음 |
| not 컬럼명 > | 크지 않음 |
| 연산자 | 의미 |
|---|---|
| BETWEEN A AND B | A와 B의 사이 (A, B 포함) |
| LIKE '비교 문자열' | 비교 문자열을 포함 ‘%’: 문자열, ‘’: 하나의 문자 ‘’ 혹은 ‘%’ 기호가 포함된 문자열 검색 시 ESCAPE 지정 |
| IN (LIST) | LIST 중 하나와 일치 |
| IS NULL | NULL 값 |
escape 예시
SELECT COUNT(*) WHERE NAME='%@%%' ESCAPE '@';
/* NAME 에 % 이 들어가는 것의 개수 세기 */
IN 예시
SELECT COUNT(*) WHERE FLAVOR IN('strawberry', 'melon');
/* 맛이 strawberry 이거나 melon 인 것의 개수 세기 */
| 연산자 | 의미 |
|---|---|
| NOT BETWEEN A AND B | A와 B의 사이가 아님 (A, B 미포함) |
| NOT IN (LIST) | LIST 중 일치하는 것이 없음 |
| IS NOT NULL | NULL 값이 아님 |
| 연산자 | 의미 |
|---|---|
| AND | 모든 조건이 TRUE여야 함 |
| OR | 하나 이상의 조건이 TRUE여야 함 |
| NOT | TRUE면 FALSE이고 FALSE이면 TRUE |
| 함수 | 의미 |
|---|---|
| COUNT(*) | 전체 Row를 Count하여 반환 |
| COUNT(컬럼) | 컬럼값이 Null인 Row를 제외하고 Count하여 반환 |
| COUNT(DISTINCT 컬럼) | 컬럼값이 Null이 아닌 Row에서 중복을 제거한 Count를 반환 |
| SUM(컬럼) | 컬럼값들의 합계 반환 |
| AVG(컬럼) | 컬럼값들의 평균 반환 |
| MIN(컬럼) | 컬럼값들의 최소값 반환 |
| MAX(컬럼) | 컬럼값들의 최댓값 반환 |
GROUP BY 절과 함께 사용하며, WHERE 절 처럼 조건을 추가할 수 있음
주로 데이터를 그룹화한 후 특정 그룹을 추출할 때 사용
논리적으로 SELECT 절 전에 수행되기 때문에 SELECT 절에 명시되지 않은 집계 함수로도 조건 부여 가능
주의할 점: WHERE 절을 사용해도 되는 조건까지 HAVING 절로 쓰면 성능상 불리할 수 있음(WHERE 절에서 필터링이 선행되면 GROUP BY 할 데이터량 감소)
/* 재구매가 일어난 상품과 회원 리스트 구하기 */
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC;
SELECT 문 수행순서
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
ASC: 오름차순. 생략 가능
DESC: 내림차순
Oracle 의 경우 NULL 값을 최댓값으로 취급
FROM table1 [INNER] JOIN table2 ON join_condition
FROM table1 LEFT [OUTER] JOIN table2 ON join_condition
FROM table1 RIGHT [OUTER] JOIN table2 ON join_condition
FROM table1 FULL [OUTER] JOIN table2 ON join_condition
LEFT JOIN 또는 RIGHT JOIN 에서는 ON 뒤에 오는 조건을 만족하지 못해도 왼쪽 또는 오른쪽 테이블의 모든 행이 결과에 포함. 조건을 만족하지 않으면 오른쪽 또는 왼쪽 테이블 값이 NULL로 나옴
OUTER JOIN 에서 기준이 되는 테이블은 항상 모두 출력되지만 최종적으로 WHERE 조건에 의해 필터링을 거치게 됨
두 테이블에서 같은 이름을 가지는 모든 attribute pair 에 대해서 equi join 수행
USING 조건절을 이용하여 같은 이름을 가진 컬럼 중 원하는 컬럼만 JOIN 에 이용할 수 있음
NATURAL JOIN 에서는 ON 절을 쓸 수 없음
두 테이블의 tuplease pair 로 만들 수 있는 모든 조합을 결과 테이블로 반환
별도의 JOIN 조건이 없는 경우 두 테이블은 Cartiesian Product(카티션 곱)가 됨