SQLD/SQL
[DML]INSERT,UPDATE,DELETE
김귤🐵
2023. 8. 29. 13:59
1.INSERT
- 테이블에 데이터를 삽입한다.
- INSERT는 컬럼명을 명시하여 삽입하거나 명시하지 않고 삽입하는 두 가지 유형으로 나뉜다.
1)데이터 삽입하는 방법
1️⃣컬럼명을 명시하고 INSERT
INSERT INTO 테이블명(컬럼명1,컬럼명2) VALUES(데이터1,데이터2);
INSERT INTO USER(ID,EMAIL,NAME) VALUES(1,'bcde@naver.com','김길똥')
ID | NAME | AGE | |
1 | bcde@naver.com | 김길똥 | NULL |
- 원하는 컬럼에만 값을 입력한다.
- 지정한 컬럼명과 입력되어야하는 값을 서로 1:1로 매핑해서 입력하면 된다.
- 데이터 유형이 문자형이라면 '로 입력하고 숫자형은 그대로 입력한다.
- 컬럼의 순서는 테이블의 컬럼 순서와 같을 필요는 없으며, 정의하지 않은 컬럼의 값은 DEFAULT로 NULL값이 된다.
- 컬럼이 PK나 NOT NULL제약조건이 있는경우 반드시 값을 입력해야한다.
2️⃣컬럼명을 명시하지 않고 INSERT
INSERT INTO 테이블명 VALUES(전체 컬럼 수에 맞는 데이터);
INSERT INTO USER VALUES(1,'abcd@naver.com','홍길동',23)
ID | NAME | AGE | |
1 | abcd@naver.com | 홍길동 | 23 |
- 모든 컬럼에 데이터를 넣는다.
- 컬럼의 순서에 맞게 데이터 값을 입력해야한다.
2)오라클과 SQL Server에서 공백의 차이
INSERT INTO 테이블명 VALUES('001','','2023-08-29');
오라클에서는 공백('')이 NULL값으로 입력이 된다.
*단, 공백이 한칸(' ')이라도 있으면 NULL이 아니라 공백이 들어간 값이 된다.
SQL Server에서는 공백('')이 공백 문자열로 입력이 된다.
2.UPDATE
UPDATE 테이블명 SET 컬럼명 = 새로운 데이터 WHERE 조건
- 이미 저장된 데이터를 수정하기 위한 명령어
- 수정해야할 컬럼이 많다면 SET절에 이어서 명시할 수 있다.
- WHERE절이 없으면 모든 ROW가 변경되므로 주의
3.DELETE
DELETE FROM 테이블명 WHERE 조건
- 이미 저장된 데이터를 삭제할때 사용하는 명령어
- WHERE절이 없다면 모든 ROW가 삭제되므로 주의
- 로그를 남기므로 ROLLBACK이 가능하다.
1)DELETE와 TRUNCATE의 비교
TRUNCATE | DELETE |
DDL | DML |
ROLLBACK 불가능 | COMMIT이전으로 ROLLBACK 가능 |
테이블의 컬럼은 남기고 모든 행을 제거한다. 로그를 남기지 않으므로 DELETE보다 효율적이다. |
WHERE절 없이 사용 시 TRUNCATE와 동일한 동작한다. 로그를 남기므로 롤백(undo)가 가능하다. |