INSERT
테이블에 데이터를 넣는 작업
--구문
INSERT INTO table_name[(column_name,[column_name])]
VALUES (value1,[value2 ...])
다양한 INSERT 하는 방법
1. 모든 칼럼 이름을 명시하는 방법
2. 칼럼을 생략하는 방법(모든 값을 입력할 때만 가능하다)
3.NULL 입력하는 방법
1)암시적 방법 - INSERT INTO 절에서 해당 칼럼 이름 생략
2) 명시적 방법 - VALUES 절에서 NULL 키워드나 '' 사용
지금 현재 위에 INSERT와 비교해 보면 칼럼과 값이 생략되어 있다.
4.DEFAULT로 INSERT하는 방법
DEFAULT 설정된 컬럼 이름을 생략하면 DEFAULT 값이 입력됨
5. 서브 쿼리로 INSERT 하는 방법
※INSERT와 무결성 제약조건(O일 때만 신경 쓰면 된다.)
구분 |
부모 |
자식 |
INSERT |
X |
O |
UPDATE |
O |
O |
DELETE |
O |
X |
지금 같은 경우에는 무결성 제약에 걸려 오류를 발생시킨다. 부모 키에서 해당 값이 없어 오류가 난다.
이렇듯 데이터를 넣을 때는 무결성 제약 조건에 맞춰서 넣어줘야 한다.
UPDATE문
테이블에 포함된 데이터를 수정한다.
--구문
UPDATE table_nameSET
column_name=value[,column=value]
[where condition]
#where 절이 없으면 전체 행이 갱신된다.
1. 기본적인 UPDATE 구조
2.SET 절에 서브 쿼리가 들어가는 방법
3.UPDATE 에 DEFAULT를 사용하는 방법.(테이블을 생성할 때 DEFAULT를 썼을 때만 가능)
4.UPDATE의 WHERE 절에 서브 쿼리를 사용하는 방법
※UPDATE와 무결성 제약조건
데이터 무결성이 손상되는 변경 작업은 허용되지 않는다.
이미 데이터가 존재하는 상태에서 부모 키의 값을 바꾸는 것은 불가능하다. 자식 키에서 키를 잃어버리게 되기 때문이다.
DELETE
테이블에 포함된 기존 데이터를 삭제한다. 이때 열이 아닌 행 단위의 삭제를 한다.
--DELETE 구문
DELETE FROM table_name
[where 조건식]
테이블 전체 데이터 삭제하는 방법
--DELETE 구문
DELETE FROM table_name
--TRUNCATE 구문
TRUNCATE TABLE table_name;
DELETE 특징
1.TRUNCATE보다 느리다.
2.AUTO COMMIT이 되지 않아 지운 데이터를 되돌릴 수 있다.
3. 삭제 후에도 데이터 용량은 그대로이다.
TRUNCATE 특징
1.DELETE 보다 빠르다
2.AUTO COMMIT 내장되어 있어서 지운 데이터는 다시 되돌릴 수 없다(롤백 불가능).
3.AUTO COMMIT을 하기 때문에 사용 즉시 데이터 용량이 줄어들고 인덱스 자체도 사라진다.
참조하고 있는 데이터가 있을 경우 삭제가 안된다.
'Base > Database' 카테고리의 다른 글
[Database]트랜잭션(COMMIT,ROLLBACK)과 Lock 이란? (0) | 2020.07.21 |
---|---|
[Database] DDL(데이터 정의어), DML(데이터 조작어), DCL(데이터 제어어) 이란? (0) | 2020.07.19 |
[Database] 테이블 생성(CREATE TABLE) 및 제약조건(CONSTRAINT) (0) | 2020.07.18 |
[Database] Subquery(단일,다중) 사용법 (0) | 2020.07.17 |
[Database] SEP Operator(UNION,UNION ALL, INTERSECT,MINUS) & IN Operator사용법 (0) | 2020.07.17 |