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 EMAIL 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 EMAIL 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)가 가능하다.