SQL에서 가장 많이 쓰이는 DML에 대해 알아보자.
DML (Data manipulation language) - 데이터 조작어
- 데이터를 조작하는데 사용되는 언어
- SELECT : 선택
- INSERT : 삽입
- UPDATE : 수정
- DELETE : 삭제
1.SELECT
SELECT문은 앞에서 다루었기 때문에 이전 포스팅을 참고하기 바란다.
또한 사용되는 여러 함수들도 이전 포스팅을 참고하면 되겠다.
2021/02/02 - [Database/개념정리] - [DataBase] Oracle SQL 기본 문법 - 1 (SELECT, FROM)
2021/02/03 - [공부] - [DataBase] Oracle SQL 기본문법 - 2 (Where절, 연산자의 종류)
2. INSERT
- 테이블에 데이터를 추가하는 구문
- INSERT INTO 테이블이름 (열1,열2 ... ) VALUES (열1 데이터, 열2 데이터 ... )
- 테이블 이름 뒤에 열을 명시하지않으면 열 순서대로 데이터가 들어간다.
임의의 테이블 하나를 만들어서 INSERT문을 실습해보자.
create table test1 (
testno number(2) primary key,
testch1 varchar2(2) unique,
testch2 varchar2(10),
testdate date);
이전 포스팅에서 사용했던 DDL 언어를 이용하여 테이블을 새로 만들었다.
이제 여기에 INSERT 문을 이용하여 데이터를 삽입해보자.
SYSDATE는 현재 시간을 불러온다.
insert into test1 values(1, 'A', 'HEllo', sysdate);
insert into test1 (testno, testch1, testch2) values(2, 'B', 'Hi');
insert into test1 (testno, testch1, testdate) values(3, 'C', '21/03/03');
insert into test1 values(4,'D', null, null);
3줄의 데이터를 넣어보았다.
첫번째 줄에서는 테이블의 각 열을 지정해주지 않았기 때문에 4개의 데이터가 각각 순차적으로 삽입되고
두번째 줄과 세번째 줄에서는 지정한 열 순으로 데이터가 삽입되고 지정하지 않은 열에는 NULL값이 삽입된다.
또한 네번째 줄과 같이 직접적으로 NULL 값을 삽입할 수도 있다.
다만 이 때에는 열의 속성이 NULL값이 들어갈 수 있는 열이어야 한다 (NOT NULL이나 PRIMARY KEY라면 오류 발생)
3. UPDATE
- 테이블의 데이터를 수정할 때 사용되는 구문
- UPDATE 변경할 테이블 SET 변경할 열 = 데이터 , 변경할 열 2 = 데이터 2, ... WHERE 조건
UPDATE 문을 이용하여 NULL값이 들어있는 TESTDATE 열의 값을 바꾸어보자.
update test1 set testdate = sysdate;
조건을 지정하지 않아서 모든 TESTDATE값이 현재 날짜로 바뀌었다.
이번에는 TESTCH2의 null 값들을 바꾸어보자.
update test1 set testch2 = 'not null' where testch2 is null;
조건절에 TESTCH2 is NULL 이라는 조건을 추가하여 NULL값을 가진 데이터들만 'not null' 이라는 문자열로 바꿔주었다.
또한 여러개의 데이터를 한번에 UPDATE할 수도 있다.
update test1 set testch2 = 'SQL', testdate = '21/03/09' where testno = 4;
TESTNO 가 4인 행만 데이터가 바뀐 것을 볼 수 있다.
4. DELETE
- 테이블에 있는 데이터를 삭제할 때 사용되는 구문
- DELETE FROM 테이블이름 WHERE 조건
DELECT문을 이용하여 특정 데이터를 삭제해보자.
delete from test1 where testno = 1;
TESTNO = 1 이란 조건에 부합하는 행이 삭제된 것을 볼 수 있다.
조건절을 지정하지 않으면 테이블의 모든 데이터가 삭제된다.
앞서 DDL 에서 써봤던 TRUNCATE과 같다고 볼 수 있다.
delete from test1;