INSERT INTO 테이블명 (COLUMN LISFT) VALUSE (VALUER_LIST) ;
지정해주지 않은 칼럼에 대해서는 NULL값이 디폴트
UPDATE 테이블명 SET 칼럼 - 값 ;
(업데이트 하고 싶은 칼럼)
EX) UPDATE salary SET salary = salary +100 ;
= : 비교 연산자 -> salary = 300 : 참 거짓
하지만 set에서 쓰인 = 은 대입 연산자!
특정 칼럼에 특정 행만 업데이트 하고싶을 땐?
UPDATE 테이블명 SET 칼럼 = 값 WHERE 조건식;
UPDATE salary
SET salary = salary +100
WHERE id = 2;
특정 행만 삭제 : WHERE 조건 사용
DELETE FROM 테이블명 ;
DELETE FROM 테이블명 WHERE 조건식;
UPDATE 테이블명
SET 칼럼명 = CASE
WHEN ... THEN
WHEN ... THEN
ELSE
END
(WHERE 조건식) ;
>UPDATE Salary
SET sex = CASE
WHEN sex = 'f' THEN 'm'
ELSE 'f'
END;
SELECT * FROM crimes
WHERE date = ( SELECT MIN(date) FROM crimes)
WHERE date IN (SELECT date FROM crimes ORDER BY date DESC LIMIT 5)
DELETE FROM Person
WHERE id NOT IN : Id 칼럼을 기준으로 mid_id를 제외하고 나머지들을 다 삭제해줘
SELECT sub.min_id
FROM (
SELECT email, MIN(id) AS min_id
FROM Person
GROUP BY Email
) sub )
#### DELETE에 JOIN 활용하기
DELETE A, B
FROM C
INNER JOIN B ON A.key = B.key
WHERE condition ;
DELETE p2
SELECT
FROM Person p1
INNER JOIN Person p2 ON p1.Email = p2.Email
WHERE p1.id > p2.id
[결과] INEERJOIN 까지의 결과
p1.id p1.email p2.id p2.email
1 john@email.com 1 john@email.com
1 john@email.com 3 john@email.com (keep)
2 bob@emial.com 2 bob@emial.com (keep)
3 john@email.com 1 john@email.com
3 john@email.com 3 john@email.com