본문 바로가기
DB/Oracle

[Oracle] DB 오라클 DML select, insert, update, delete 쿼리 조회, 삽입, 수정, 삭제 sql문

by 졸린이 2022. 10. 5.
반응형

지난 글에서 DDL(Data Definition Language) create, alter, drop 쿼리에 대해 작성했다.

참고 링크 : 

https://hellodoor.tistory.com/230?category=931129 

 

[Oracle] DB 테이블 생성, 수정, 삭제 sql create, alter, drop DDL & 오라클 코맨트

DDL [Data Definition Language] 데이터 정의 언어로써 쉽게 테이블 생성 수정 삭제와 같은 sql문이다. 1. CREATE create table user_info ( id varchar2(20) not null, password varchar2(30) not null, name var..

hellodoor.tistory.com

이번 글에서는 DML(Data Manipulation Language) 데이터 조작어로 select, insert, update, delete가 있다.

조회, 삽입, 수정, 삭제로 간단하게만 알아본다.

오늘 조작할 테이블의 형식. table 명은 user_info이다.

 

1.select

select * from 테이블

select * from user_info;

 * (애스터리스크) 별표라고도 하는 저 구문은 해당 테이블에 있는 전체 컬럼을 조회한다.

또한 특정 컬럼만 조회하고 싶을 때도 있다.

select id, name from user_info;

 

이런식으로 * 대신 조회하고 싶은 컬럼명만 붙여서 사용하기도 한다.

 

2.where

where절은 조건절로 셀렉, 업데이트, 딜리트 할때 원하는 데이터를 조작하기 위해 붙이는 구문이다.

예를 들어 select 문에서는 아이디가 'admin'인 데이터를 조회하고 싶으면

select * from 테이블 where 컬럼명 = 'admin' 이런식으로 작성해야 한다.

select * from user_info where id = 'admin'

 

 

3. insert

insert는 데이터를 삽입하는 쿼리이다.

기본적으로 insert into 테이블 values ('데이터', '데이터');

이런식으로 쓴다.

insert into user_info values ('admin', '1234', '관리자', 'N', SYSDATE);
insert into user_info values ('user1', 'qwer', '유저1', 'N', SYSDATE);
insert into user_info values ('user2', 'asdf', '유저2', 'N', SYSDATE);

이렇게 사용하면 되긴 하지만 이것은 user_info의 모든 컬럼에 데이터가 들어가야 하고 values() 에 있는 데이터 순서도 컬럼 순서와 맞춰야 한다.

이렇게 쓰지 않고 원하는 데이터만 삽입하고 싶으면

insert into 테이블 (컬럼1, 컬럼2) values ('데이터1', '데이터2'); 이렇게 쓰면 된다.

insert into user_info (id, password) values ('user3', '1555');

이렇게 id, password만 들어가게 된다. 참고로 del_flag와 create_date는 default 값이 있어서 자동으로 데이터가 들어간다.

4. update

update는 데이터 수정하는 쿼리이다.

기본적으로 update 테이블 set 컬럼 = '수정데이터'; 이런식으로 쓴다.

update user_info set password = '5678';

그런데 이렇게만 쓰면 문제가 되는게 조건이 붙지 않아서 user_info 테이블의 모든 password 데이터를 5678로 업데이트 한다.

실무에서 이렇게 쿼리를 날리면 아주 난리가 난다.

그래서 무조건 조건을 붙여줘야 하는데 select 과 마찬가지로 where을 붙여주면 된다.

 

update 테이블 set 컬럼명 = '수정데이터' where 컬럼명 = '수정할데이터'

id 가 admin인 데이터의 password 6789로 변경하고 싶으면

update user_info set password = '6789' where id = 'admin';

 

이런식으로 쓰면 id가 admin인 데이터의 password만 update가 된다.

update나 delete는 함부로 쓰기 위험하기 때문에 거의 무조건 select를 먼저 해서 내가 원하는 데이터를 눈으로 확인하고 update나 delete를 써야 한다.

 

5. delete

delete 문 역시 간단하지만 자칫하면 큰일이 날 수 있는 쿼리이기 때문에 조심 조심 또 조심해서 사용해야 한다.

기본적으로

delete from 테이블; 이렇게 쓰면 되지만 해당 테이블의 데이터가 싹 날라간다.

delete from user_info;

실무에서 이렇게 쓰면 정말 생난리 난다.

delete도 마찬가지로 where 절을 붙여서 꼭 원하는 데이터만 제거하도록 해야 한다.

delete from user_info where id = 'user3';

id 가 user3 인 데이터를 날리는 쿼리이다. 이렇게만 쓰면 된다.

그리고 여담이지만 delete 자체가 위험하기도 하고 데이터 자체를 날리는 것은 관리하는 측면에서 좋지 않을 수 있기 때문에 실제로 데이터를 삭제하는 것보단 flag 값을 줘서 삭제 상태가 된 데이터로 만드는 것도 많이 한다.

 

저 테이블을 보면 del_flag라고 있는데 N 은 이 데이터는 삭제되지 않은 데이터라고 표시 해둔것이다.

update user_info set del_flag = 'Y' where id = 'user2';

이런식으로 user2가 회원탈퇴를 하면 데이터를 지우는것이 아닌 del_flag를 Y 로 업데이트 하여 죽은 데이터라고 표기하는 것이다.

실무에서는 이렇게 데이터 관리하는 경우가 많다.

여기까지!

반응형

댓글