[DB] DML: 갱신문 INSERT, DELETE, UPDATE

젠니·2023년 5월 26일
0

데이터베이스

목록 보기
3/21

1. INSERT

일반 형식 1

Format

INSERT INTO 	테이블명 (컬럼명_리스트들)
VALUES 			(컬럼값_리스트);

컬럼 데이터 타입이 문자라면 '' 사용, 숫자라면 그냥 쓴다.

Example

INSERT INTO 	PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION,
HEIGHT, WEIGHT, BACK_NO)
VALUES 			('2002007', '박지성', 'K07', 'MF', 178, 73, 7);

INSERT INTO 	PLAYER
VALUES 			('2002010', '이청용', 'K07', '', 'BlueDragon',
'2002', 'MF', '17', NULL, NULL, '1', 180, 69);

위와 같이 NULL과 공백도 넣을 수 있다.

일반 형식 2

Format

INSERT INTO 테이블명 (컬럼명_리스트들)
SELECT 문;

Example

CREATE TABLE 		BLUE_DRAGON_TEAM1 (
    PLAYER_ID 		CHAR(7) NOT NULL,
    PLAYER_NAME 	VARCHAR(20) NOT NULL,
    BACK_NO 		TINYINT
);
INSERT INTO 		BLUE_DRAGON_TEAM1
SELECT 	PLAYER_ID, PLAYER_NAME, BACK_NO
FROM 	PLAYER
WHERE 	TEAM_ID = 'K07';

BLUE_DRAGON_TEAM1 테이블이 미리 정의되어 있어야한다.

2. DELETE

Format

DELETE FROM 	테이블명
[WHERE 			투플_조건식];

WHERE절은 생략 가능한데, 생략 시 테이블의 전체 데이터를 삭제한다. (테이블은 남김)

하지만, 테이블의 전체 데이터를 삭제하는 경우에는 DELETE FROM 보다는 TRUNCATE TABLE을 권한다.

Example

DELETE FROM 	PLAYER
WHERE 			PLAYER_ID = '2002007';

여기서 PLAYER_ID는 PK이기 때문에 튜플 한개만 삭제하는 경우이다.

DELETE FROM 	PLAYER
WHERE 			POSITION = 'GK';

하지만, 여기서는 두개 이상 튜플이 제거되기때문에 safe_update mode에서 거부된다.

DELETE FROM 	PLAYER;

이 경우는 테이블의 모든 튜플을 삭제하는 것인데 이것도 거부된다.

여기서 잠깐, self_update mode 란?
'PK를 사용하는 WHERE절'이 없는 DELETE문은 실행되지 않는다.

그렇다면 거부되지 않으려면 어떻게 해아하나? -> 비활성화 시켜주면 된다.

SET sql_safe_updates=0; /* safe update mode 비활성화 */
DELETE FROM 	PLAYER;

이렇게 하면 비활성화가 되고, 삭제가 된다.

SET sql_safe_updates=1; /* safe update mode 활성화 */

하지만 이렇게 다시 활성화 시켜주는게 안전하다.

3. UPDATE

Format

UPDATE 		테이블명
SET 		{컬럼명 = 산술식,}⁺
[WHERE 		투플_조건식];

Example

UPDATE 		PLAYER
SET 		BACK_NO = 99
WHERE 		PLAYER_ID = '2000001';
profile
젠니의 개발 라이푸우

0개의 댓글