[Inflearn] SQL 강의 고급 -DML

🌹Haeri Lee·2022년 2월 15일
0

[MySql] 인프런 강의

목록 보기
1/9
post-custom-banner

SQL 고급 인강 DML

[1] INSERT

INSERT INTO 테이블명 (COLUMN LISFT) VALUSE (VALUER_LIST) ;
지정해주지 않은 칼럼에 대해서는 NULL값이 디폴트

[2] UPDATE : 칼럼 전체에 데이터 업데이트

UPDATE 테이블명 SET 칼럼 - 값 ;
(업데이트 하고 싶은 칼럼)

EX) UPDATE salary SET salary = salary +100 ;
= : 비교 연산자 -> salary = 300 : 참 거짓
하지만 set에서 쓰인 = 은 대입 연산자!

특정 칼럼에 특정 행만 업데이트 하고싶을 땐?
UPDATE 테이블명 SET 칼럼 = 값 WHERE 조건식;

UPDATE salary
SET salary = salary +100
WHERE id = 2;

[3] DELETE : 테이블 전체 삭제

특정 행만 삭제 : WHERE 조건 사용

DELETE FROM 테이블명 ;
DELETE FROM 테이블명 WHERE 조건식;

[4] LEETCODE 672번 문제

UPDATE 테이블명
SET 칼럼명 = CASE
	WHEN ... THEN
	WHEN ... THEN
ELSE
END
(WHERE 조건식) ;

>UPDATE Salary 
SET sex = CASE
WHEN sex = 'f' THEN 'm'
ELSE 'f'
END;

[5] LEETCODE 196번 문제

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 
profile
안녕하세요 공부한 내용을 기록하기 위해서 시작했습니다.
post-custom-banner

0개의 댓글