데이터 조작어 (DML, Data Manipulation Language)

심준석·2024년 6월 4일
0

데이터베이스

목록 보기
3/5

데이터 조작어 (DML, Data Manipulation Language)

테이블의 행(row)에 대하여 추가/수정/삭제 등을 수행하기 위한 언어

  • Transaction 및 undo 데이터에 대한 지식이 필요함

행(row) 추가하기

(명령어)

insert into 테이블이름(컬럼01, 컬럼02,)
values(01,02,)

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('yusin', '김유신', 'abc123', '남자', '1990/12/25', '결혼', 220, '용산', null);

다시, employees 테이블 생성

CREATE TABLE employees ( 
	id VARCHAR(20) PRIMARY KEY, 
	name VARCHAR(30) NOT NULL, 
	password VARCHAR(20) NOT NULL, 
	gender VARCHAR(10), 
	birth DATE, 
	marriage VARCHAR(30), 
	salary DECIMAL(10, 2) DEFAULT 100.00, 
	address VARCHAR(50), 
	manager VARCHAR(50) 
);

몇 건의 데이터 추가


Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('yusin', '김유신', 'abc123', '남자', '1990/12/25', '결혼', 220, '용산', null);

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('lee', '이순신', 'abc123', '남자', '1990/12/25', '이혼', 220, '용산', null);

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('choi', '최영', 'abc123', '남자', '1990/12/25', '결혼', 155, '용산', 'yusin');

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('kang', '강감찬', 'abc123', '남자', '1990/12/25', '결혼', null, '용산', 'yusin');

(결과)

컬럼 이름을 명시하는 경우
컬럼의 갯수와 데이터의 타입을 반드시 맞춰줘야함

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('yoon', '윤봉길', 'abc123', '남자', '1990/12/25', '미혼', 230, '용산', 'yusin');

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('kim9', '김구', 'abc123', '남자', '1990/12/25', '이혼', 280, '강남', null);

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('general', '김좌진', 'abc123', '남자', '1990/12/25', '결혼', 550, '마포', 'kim9');

Insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('an', '안중근', 'abc123', '남자', '1990/12/25', '결혼', 155, '용산', 'kim9');

입력이 필요 없는 컬럼을 명시하지 않는 경우
굳이 명시할 필요가 없는 컬럼은 insert 구문에 작성할 필요없음, 급여가 책정되지 않은 직원의 경우 기본값 100으로 입력됨

Insert into employees(id, name, password, gender, birth, marriage, address, manager)
values('nongae', '논개', 'abc1234', '여자', '1990/12/25', '미혼', '강남', 'soon');

연산자 살펴 보기

비교 연산자

연산자연산자의미수학적 기호오라클 결과
항등 연산자=같다=False
항등 연산자<>같지않다!=True
비교 연산자>좌측이 크다>True
비교 연산자>=좌측이 크거나 같다>=False
비교 연산자<좌측이 작다<True
비교 연산자<=좌측이 작거나 같다<=True

논리 연산자

연산자의미
And논리곱
Or논리합
not부정

예시

select * from employees where name='강감찬' or name='논개';

행 수정하기

Update 구문은 이미 저장이 되어 있는 데이터 값을 변경하고자 하는 경우 사용하는 문장

(명령어)

update 테이블_이름
set 컬럼1=1, 컬럼2=2,, 컬럼n = 값n
Where 조건식;

Ex) 모든 직원들의 월급 100으로 설정

update employees 
set salary=100;

Ex) 모든 회원들의 생일을 오늘로

Ex) 모든 회원들의 급여를 500으로, 비번은 ‘abcd1234’로 변경

Ex) 안중근의 급여를 400으로 조정

다시 뒤로 (Rollback)

(명령어)

rollback;

Ex) 모든 직원들의 급여 10% 인상

in 연산자

아이디가 kim9 이거나 lee이거나 kang 인 항목을 찾아보는 문구?

그런데 in을 사용한다면?
(명령어) in (set)

or 연산자 대신에 간략히 표현할 목적으로 만든 키워드
or 연산자의 조합으로 셋트 목록 중의 하나와 일치하는 모두를 의미함

select * from employees where id in ('kim9', 'lee', 'kang');

Ex) in 키워드를 사용해 관리자가 ‘김유신’이나 ‘김구’인 회원들의 급여를 555로 변경

update employees set salary=555 where manager in ('yusin','kim9');

행 삭제하기

delete 문법을 사용함

delete from 테이블_이름 where 조건식;

주의) column 삭제는 불가능하며, 문자와 날짜는 ''(외따옴표)로 둘러싸야함

(예시)

delete from employees;
select * from employees;

"안중근" 회원에 대한 정보 삭제

delete from employees where id='an';
select * from employees;

관리자가 "김유신"인 회원 이름 삭제

delete from employees where manager='yusin';
select * from employees;

관리자가 "soon"이고 급여가 220 이상인 회원 삭제

delete from employees where manager='soon' and salary>=220;
select * from employees;

주소가 '서대문'과 '강남'을 제외한 다른 지역에 거주하는 회원을 삭제

delete from employees where address not in ('서대문', '강남');
select * from employees;

profile
Developer & Publisher 심준석 입니다.

0개의 댓글