SQL
INSERT
INSERT INTO table(name, age, sex)
VALUES ('Lenir', 27, 'male');
table에 (name, age, sex)의 값이 (‘Lenir’, 27, ‘male’)인 튜플을 삽입하는 INSERT 명령입니다.
UPDATE
UPDATE table
SET age = 27, sex = 'male'
WHERE name = 'Lenir';
name값이 ‘Lenir’인 튜플의 age, sex 값을 27, ‘male’로 바꾸는 UPDATE 명령입니다.
DELETE
DELETE
FROM table
WHERE name = 'Lenir';
name값이 ‘Lenir’인 튜플을 지우는 DELETE 명령입니다.
JOIN
Cross Join
단순히 테이블 합치기. 튜플의 갯수는 \(table1.size() * table2.size()\)가 됩니다.
SELECT *
FROM table1, table2;
table1과 table2의 모든 튜플을 JOIN하여 모두 보여주는 구문입니다.
Inner Join
사원들 정보(이름, 사원번호, 성별, 소속팀)가 담긴 테이블 emp와 사원들의 월급 지급내역(사원번호, 지급일자, 월급)이 있는 테이블 sal이 있다고 칩시다. 그러면 테이블에 있는 튜플들은 다음과 같을 겁니다.
emp = (emp.name, emp.num, emp.sex, emp.team);
sal = (sal.empNum, sal.date ,sal.salary);
여기서 사원별로 월급 지급 내역을 뽑으려면 다음과 같이 하면 될 것입니다.
SELECT emp.num, emp.name, sal.date, sal.sal
FROM emp, sal
WHERE emp.num == sal.num;
즉, 조건에 맞는(위의 예시에서는 emp의 사원번호와 sal의 사원번호가 일치하는) 튜플만 Join해서 보여주는 것이 Inner join입니다.
하나 더 예시를 들어 볼까요. 이번엔 사원 번호, 사원 이름, 사원별 월급의 합을 사원 번호로 정렬해봅시다.
SELECT emp.num, emp.name, sal.date, SUM(sal.sal)
FROM emp, sal
WHERE emp.num == sal.num
GROUP BY emp.num
ORDER BY emp.num
Outer Join
기준에 따라 데이터가 없는(Null) 튜플도 Join. 기준에 따라 Left, Right, Full Outer Join등이 있습니다.
UPDATE table SET field1=value1, field2=value2, WHERE condition;
조건에 맞지 않는 튜플도 Join
Union
UPDATE table SET field1=value1, field2=value2, WHERE condition;