데이터 조작어
데이터 조작 언어(DML, Data Manipulation Language)은 데이터베이스 사용자(DBA, DataBase Administrator) 또는 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스(Database)에 대해 데이터 검색, 등록, 삭제, 갱신을 위한, 데이터베이스 언어(Database Language) 또는 데이터베이스 언어 요소이다. 사용자와 데이터베이스 관리시스템(DBMS,database management system)간의 인터페이스를 제공하며 응용 프로그램을 통하여 사용자가 데이터베이스의 데이터를 조작할 수 있도록 하기 위해 포트란(Fortran), 코볼(COBOL) 등의 호스트 언어에 데이터베이스 기능을 추가시켜 만든 언어이다.[1][2]
목차
개요
데이터베이스 언어인 DDL, DML, DCL 중 DML 즉, 데이터 조작어는 데이터베이스 내의 검색, 삽입, 수정, 삭제의 명령을 수행한다. 쉽게 말해 사용자가 데이터를 처리할 수 있게 하는 도구이며 데이터를 조작하여 저장하는 일련의 과정을 트랜잭션(transaction)이라고 하는데 그런 트랜잭션을 다루는 언어이다. 대표적인 조작어에는 질의어(query language)가 있으며 질의어는 터미널(terminal)에서 주로 이용하는 비절차적 데이터 언어이다. 데이터 조작 언어에는 SELECT, INSERT, UPDATE, DELETE등이 있으며 각각 SELECT는 데이터의 검색, INSERT는 데이터의 삽입, UPDATE는 데이터의 수정, DELETE는 데이터의 삭제 역할을 한다.[1]
형태
- 절차적 조작 언어 : 사용자가 어떤 데이터가 필요하면, 필요한 데이터를 어떻게 구하는지 절차에 맞게 구체적으로 명시하는 언어
- 비절차적 조작 언어 : 사용자가 어떤 데이터가 필요하지만을 명시하고 어떻게 구하는지 명시하지 않는 언어로서, 배우기 쉽고 사용하기 쉬우나 코드의 효율성 면에서 비효율적이다.[3]
조건
- 사용하기 쉽고 자연 언어에 가까워야한다.
- 데이터에 대한 연산뿐만 아니라 뷰(view) 내의 데이터나 데이터 간의 관계를 정확하고 완전하게 명시할 수 있어야 한다.
- 데이터 언어의 효율적인 구현을 지원해야 한다. 즉 데이터 언어의 구문이 DBMS가 제공하는 기본적인 연산과 관련을 갖도록 해야 한다.[3]
검색
SELECT문은 하나 또는 그 이상의 테이블에서 데이터를 추출하는 SQL의 데이터 조작 언어(DML) 중 하나이다. 이것은 데이터베이스 중 하나 또는 그 이상의 테이블에서 데이터를 추출하기 위한 명령으로 데이터 조작 언어 (DML)에서 가장 많이 사용된다.[4] SELECT문은 테이블 전체를 불러올 수 있고 일부 열, 일부행만 지정하겨 불러오는 것도 가능하며 테이블간 결합하여 검색하는 것이 가능하다.
- 일반적 검색문
SELECT [PREDICATE] 테이블명.속성명[테이블명.속성명, ...] FROM 테이블명1,[테이블명2, ...] [WHERE 조건];
SELECT절은 내가 원하는 테이블의 속성을 선택하여 데이터를 가져오도록 하는 것이다. [PREDICATE]에는 불러올 튜플을 제한하는 명령어인데 ALL, DISTINCT가 있다. ALL은 말 그대로 지정된 모든 튜플(Tuple)을 검색하게 되며 기호로 '*' 을 사용할 수 있다. 생략되면 자동으로 모든 튜플을 검색한다. DISTINCT는 검색 시 중복된 튜플이 있으면 하나만 보여주게 된다. FROM절은 SELETE가 어느 테이블에서 검색할 것인가를 지정하게 된다. WHERE을 사용하여 조건을 부여해 원하는 데이터만 가져오게 할 수 있다. 요약하면 무엇을 가져올지(SELECT), 어디서 가져올지(FROM), 검색 조건(WHERE)라고 할 수 있다.[5]
- 검색문 활용 예시
SELECT 번호 FROM 학생 WHERE 이름 = '김통신'
첫 절부터 해석하면 '번호'속성을 모두 검색하는데 그 학생은 '학생'테이블에 존재하는 속성을 검색한다. 단, '이름'속성값이 '김통신'이다. 즉,학생 중 이름이 '김통신'인 학생번호를 검색하는 SQL문이 된다.
지정 검색
검색문에서 원하는 데이터를 얻기 위해 WHERE 조건 연산자를 사용하여 데이터를 필터링해야 한다. WHERE절에 사용할 수 있는 연산자의 종류는 비교 연산자, 논리 연산자, BETWEEN A AND B, IN, LIKE 연산자 등이 있다.
비교 연산자[5] 연산자 의미 = 같다. <> 또는 != 같지 않다. < ~보다 작다. <= ~보다 작거나 같다. !< ~보다 작지 않다. > ~보다 크다. >= ~보다 크거나 같다. !> ~보다 크지 않다.
- 비교 연산자 예시
'직원'테이블의 '월급'속성값이 200이상인 직원의 속성 모두를 검색하는 SQL문이다.
SELECT * FROM 직원 WHERE 월급 >= 200;
논리 연산자 연산자 의미 AND 제시된 모든 조건을 충족하는 데이터만 도출 OR 제시된 조건 중 하나 이상의 조건이 충족하는 데이터 도출 NOT 조건이 충족되지 않는 데이터 도출
- 논리 연산자 활용 예시
'사원'테이블에서 나이가 22세 이고, 월급이 200이상인 직원의 속성 모두를 검색하는 SQL문이다.
SELETE * FROM 사원 WHERE 나이 = '22' AND 월급 >= 200;
그외 연산자 연산자 의미 BETWEEN A AND B A와 B사이의 데이터 도출 IN 제시된 특정 데이터 중 일치하는 데이터 도출 LIKE'김%' 데이터 첫 문자가 '김'으로 시작되는 데이터 도출
- BETWEEN 연산자 활용 예시
'직원'테이블에 '월급'이 300에서 500사이인 직원의 모든 속성을 검색하는 SQL문이다.
SELECT * FROM 직원 WHERE 월급 BETWEEN 300 AND 500;
- LIKE연산자 활용 예시
'직원'테이블에 '이름'이 '유'로 시작하는 직원의 모든 속성을 검색하는 SQL문이다.
SELECT * FROM 직원 WHERE 이름 LIKE '유%';
이렇게 꼭 앞자리의 검색이 아니여도 사용할 수 있다. '%유'를 사용하게 되면 뒷자리가 '유'로 끝나는 단어를 검색하게 된다. 또한 '_'의 사용으로 글자수를 지정할 수 있다. '__피자'를 사용하면 앞 두 글자 뒤에 피자가 붙는 데이터를 검색하게 할 수 있다.
- IN 연산자 활용 예시
'직원'테이블에 부서가 '개발', '기획'인 직원의 모든 속성을 검색하는 SQL문이다.
SELECT * FROM 직원 WHERE 부서 IN ('개발', '기획');
IN연산자는 BETWEEN AND 연산자나 OR연산자보다 가독성이 훨씬 좋기 때문에 BETWEEN AND, OR연산자를 IN연산자로 바꿔서 사용하는 경우가 많다. 하지만 IN 연산자는 OR 연산자로 완벽하게 바꿀 수 있지만OR 연산자는 IN연산자로 완벽하게 바꿀 수 없다.[6]
정렬 검색
하위 질의
WINDOW 함수
집합 연산자 검색
결합 검색
삽입
수정
삭제
각주
- ↑ 1.0 1.1 미니송, 〈데이터베이스 언어(DDL, DML, DCL) - DO의 IT〉, 《출처》, 2017-12-05
- ↑ 〈데이터 조작 언어〉, 《위키백과》
- ↑ 3.0 3.1 subsay , 〈데이터베이스의 개념 - 데이터베이스 언어〉, 《티스토리》, 2017-09-20
- ↑ 〈Select (SQL)〉, 《위키백과》
- ↑ 5.0 5.1 datata29, 〈[1]〉, 《velog》, 2021-02-09
- ↑ 홍큐리티, 〈[2]〉, 《티스토리》, 2019-12-04
참고자료
- 미니송, 〈데이터베이스 언어(DDL, DML, DCL) - DO의 IT〉, 《출처》, 2017-12-05
- 〈데이터 조작 언어〉, 《위키백과》
같이 보기