[SQL] 데이터조작어(DML)
데이터 조작어(DML)
DML(Data Manipulation Language)은 데이터를 조작하는 언어다.
SQL명령어 중에서 데이터 검색/쿼리언어(DQL)다 따로 분류되어 있는데 select만 사용하기 때문에 DML로 포괄적으로 이해하면 된다.
데이터 질의, 데이터 삽입, 데이터의 수정, 데이터 삭제를 조작할 때 사용한다.
데이터의 조작어의 명령어
select : 데이터를 질의한다.
insert : 데이터를 삽입한다.
update : 데이터를 수정한다.
delete : 데이터를 삭제한다.
select (데이터 질의)
-- 사원 테이블에서 모든 컬럼을 조회한다.
select * from emp;
-- 사원테이블에서 사원 번호와 사원명을 조회한다.
select empno, ename from emp;
조건 질의 (where)
-- 사원 테이블에서 부서 번호가 10인 일반사원(CLERK) 정보를 조회한다.
select empno, ename, job, deptno from emp
where deptno = 10 and job = 'CLERK';
between A and B 연산자
특정 범위의 값을 크거나 같다는 조건과 작거나 같다는 조건을 적용하여 select …from 절로 조회한다.
--사원테이블에서 급여자 3,000과 4,000 사이가 아닌 사원 정보를 조회한다.
-- not 연산자를 사용하면 특정 범위의 값을 조회할 때 설정된 컬럼값 A 와 B는 값의 범위헤서 제외된다.
select empno, ename, sal from emp
where sal not between 3000 and 4000;
in 연산자
-- 사원테이블에서 직급이 president가 아닌 사원정보를 조회한다.
select empno, ename, job from emp
where job not in('PRESIDENT');
like 연산자
-- 사원 테이블에서 이름이 j문자로 시작하는 사원명을 조회한다.
select empno, ename, hiredate, sal from emp
where ename like 'j%';
--사원테이블에서 이름에 N 문자를포함하지 않는 사원명을 조회한다.
select empno, ename, hiredate, sal from emp
where ename not like '%N%';
order by 연산자
asc 명령어에 의해 오름차순으로 데이터가 정렬된다.
-- 사원 테이블에서 급여가 낮은 순으로 사원 정보를 조회한다.
select empno, ename, sal from emp
order by sal asc;
desc 명령어에 의해 내림차순으로 데이터가 정렬된다.
-- 사원 테이블에서 입사일이 가장 최근 순인 순서로 사원 정보를 조회한다.
select empno, ename, hiredate from emp
order by hiredate desc;
insert (데이터 삽입)
★ 데이터를 입력하고 나면 반드시 commit 명령어로 실제적인 물리적 디스크에 저장해야 외부에서 확인할 수 있다.
insert into member(num, title, name, content)
values(1,'', '홍길동', '테스트입니다.');
commit; -- 이거를 해주지 않으면 외부에서 불러올수 없어 -- 물리적으로 내가 저장했다
외래키인 foreign key 제약조건이 설정되면 부모 테이블의 기본키가 자식 테이블에서 컬럼이 된다.
부모테이블의 키가 존재하지 않는 데이터를 입력하면 오류가 발생한다.
-- 부모테이블의 키가 존재하지 않는 데이터를 입력하면 오류가 발생한다.
insert into emp(empno, ename, deptno)
values(6789, ‘홍길동’, 70);
### update (데이터 수정) ###
-- 부서테이블의 부서 번호가 50인 부서명을 기획실로 수정하여 조회한다.
update dept
set dname = '기획실'
where deptno = 50;
where 절을 생략할 때는 설정한 컬럼의 모든 컬럼값이 수정되므로 주의해야 한다.
delete (데이터 삭제)
-- 부서 테이블의 사원 번호가 50인 컬럼값을 삭제하고 조회한다.
delete from dept
where deptno = 50;
select * from dept;
-- 외래키가 존재하는 부모 테이블의 데이터를 삭제하면 오류가 발생한다.
delete from dept
where deptno = 30;
댓글남기기