데이터 조작어 DML
DML; Data Manipulation Language
DDL은 테이블 자체를 생성하거나 수정하는 등 테이블을 관리하기 위해 사용하는 언어였다면
DML은 그 테이블 안에 있는 데이터 즉, 튜플·어트리뷰트와 같은 값을 관리한다.
INSERT, UPDATE, DELETE, SELECT를 사용하는데 데이터베이스 4대 요소 CRUD를 구현한다.
C = Create → INSERT
R = Read → SELECT
U = Update → UPDATE
D = Delete → DELETE
그 중 가장 많이 사용하게 될 데이터를 검색하는 SELECT의 기본 문법에 대해서 알아볼 수 있다.
SELECT 구성
SELECT [ ADD | DISTINCT ] {속성}
FROM {테이블}
[WHERE]
[GROUP BY]
[ORDER BY]
select를 사용할 때는 select, from이 필수로 들어가고, 조건을 추가하는 where, 그룹으로 묶는 group by, 정렬하는 order by가 있다. 대괄호 안에 들어간 것은 필수 조건이 아닌 생략이 가능한 것으로 이 글에서는 필수로 작성해야 하는 select, from을 사용한 기본 연산을 알아본다.
SELECT 속성 FROM 테이블
FROM의 테이블을 먼저 읽고, 그 뒤에 테이블에서 가져올 속성을 읽어온다.
From : …에서, …로 부터
Select : 고르다, 선택하다
From 테이블 - 테이블에서
select 속성 - 속성을 선택한다.
테이블에서 특정 속성을 선택해 가져오는 것
select를 통해 조회된 결과는 테이블로 반환된다.
예시 테이블 -볼펜
제품번호 | 제품명 | 가격 | 제조사 |
1001 | 자바 스프링업 | 1400 | 자바펜 |
1002 | 모나미FX153 | 1500 | 모나미 |
1003 | 크로닉스DX | 1200 | 동아 |
어떻게 볼펜이 자바 스프링
1. 기본 조회문
SELECT 제품명, 가격
FROM 볼펜;
볼펜 테이블에서 제품명과 가격을 조회하는 쿼리문을 만들었다.
이 쿼리를 실행하면 아래와 같은 테이블이 반환된다.
제품명 | 가격 |
자바 스프링업 | 1400 |
모나미FX153 | 1500 |
크로닉스DX | 1200 |
지정한 테이블=볼펜 에서 선택한 속성=제품명, 가격만 따로 생성되었다.
여러 속성을 지정할 때는 쉼표를 이용해 구분하며, 모든 속성을 조회하고 싶을 때는 와일드 카드 문자를 이용한다. = *
2. 별칭 사용
미리 설정된 속성 이름이 아닌 내가 알아볼 수 있는 이름으로 결과를 보고 싶을 때는 'AS'를 사용한다.
보통 산술식을 사용하거나 내장 함수를 통해 특정 값에 변경을 주고, 그 필드를 좀 더 쉽게 이해하기 위해 사용한다.
SELECT 제품명 AS "볼펜 종류"
FROM 볼펜
볼펜 종류 |
자바 스프링업 |
모나미FX153 |
크로닉스DX |
제품명이라는 이름 대신 볼펜 종류라는 이름으로 변경되어 조회되었다.
SELECT를 통해 조회하는 반환 결과는 하나의 테이블로, 이름을 변경해 조회한다고 해도 원본값이 바뀌지는 않는다.
3. 산술식 사용
SELECT 자체에서 산술식을 사용해 조회할 수 있다. WHERE을 사용하지 않고도 기본 + - * / 를 이용하는 것이 가능하다.
SELECT 제품명, 가격*0.8 AS "할인 가격"
FROM 볼펜
제품명 | 할인 가격 |
자바 스프링업 | 1120 |
모나미FX153 | 1200 |
크로닉스DX | 960 |
제품의 가격을 낮추어 판매하기 위해 가격에 0.8을 곱해 특별 할인을 진행했다.
그 가격의 이름은 "할인 가격"을 사용했고, select절에서 가격에 직접 산술식을 사용했다.
4. 튜플의 중복을 비허용
다른 조건을 추가하지 않으면 기본적으로 중복된 값을 가지고 있어도 그대로 반환한다.
중복을 허용하지 않고 확인하고 싶을 때는 DISTINCT를 사용하면 된다.
SELECT [ ALL | DISTINCT ] 에서 따로 지정하지 않으면 기본값은 ALL이며 동일한 튜플의 중복을 허용하고, DISTINCT를 사용하면 튜플의 중복을 허용하지 않은 결과가 반환된다.
학번 | 이름 | 학년 | 성별 |
A1001AA | 홍길동 | 2 | M |
A1002AA | 성춘향 | 2 | F |
B1001AB | 이몽룡 | 1 | M |
B1002AA | 임꺽정 | 1 | M |
중복된 값을 가지고 있을 학생 테이블을 생성하였다. 학번과 이름은 4개가 모두 다르지만, 학년과 성별은 중복된 값을 가지고 있다.
SELECT DISTINCT 학년
FROM 학생
학년 |
2 |
1 |
중복되었던 다른 값은 사라지고 2개만 남았다. 보기 좋게 오름차순으로 정렬하기 위해서는 ORDER BY를 사용할 수 있다.
'Database > MySQL' 카테고리의 다른 글
[MySQL] ALTER TABLE의 ADD와 DROP (0) | 2024.12.09 |
---|---|
[MySQL] 데이터 정의어 DDL의 CREATE (1) | 2024.12.03 |