2. SQL (DML: SELECT)

2021. 8. 19. 02:40SERVER/SQL

Data Manipulation Language

데이터 조작 언어, 관리 체계에 저장된 자료에 접근하고 조회하기 위해 대화 방식으로 사용

SQL 문장을 말하며 선택 · 삽입 · 갱신 · 삭제 · 완료 · 복귀와 같은 명령이 DML의 모든 예시다

 

 

테이블의 데이터 호출

테이블에서 데이터를 가져올 때는 용도에 맞는 query문을 사용해야 한다

데이터베이스 테이블을 조작할 때의 대표적인 명령어는 아래와 같다

① SELECT : 검색 

② FROM  : ~로 부터 (Which table)

③ WHERE : 조건

 

* SQL에서 마침표 역할로 세미콜론(;)을 사용한다

 

 

SELECT

해당 테이블에서 어떤 컬럼의 데이터를 가져올 것인지 명시하여 검색할 수 있다

SELECT email, pw, name (FROM User;)

유저 테이블의 email, pw, name 컬럼을 검색한 것, SELECT는 컬럼을 대상으로 검색하게 된다

 

SELECT * (FROM User;)

*all을 의미하는데, 데이터베이스 내의 데이터가 5GB 이상이면 사용하지 않는 것이 좋다

(모든 데이터를 검색해주는만큼 용량이 크면 클수록 비효율적이며, 멈출 수 있다)

 

SELECT DISTINCT name, age (FROM User;)

뚜렷한, 분명한이란 뜻을 가진DISTINCT는 컬럼의 중복을 제거한 데이터를 보여준다

단, 2개 이상의 컬럼이 있을 때 한 쪽에 중복이 있어도 다른 쪽 컬럼의 값이 다르면 다르게 취급

예) ① 이름 : 홍길동, 나이 20

     ② 이름 : 홍길동, 나이 25

 

 

 

FROM

어떤 테이블로부터 데이터를 가져올 것인지 명시한다

SELECT (...) FROM User
SELECT (...) FROM Project
SELECT (...) FROM Award

유저, 프로젝트, 어워드 각 테이블에 접근하여, 해당 테이블의 컬럼 데이터를 가져오게 된다

 

 

 

WHERE

검색하려는 데이터에 조건을 설정하여 원하는 데이터를 명확하게 검색할 수 있다

SELECT * FROM User
WHERE name = "testName";

이름이 testName인 데이터를 유저 테이블에서 검색 후 가져오게 된다

 

WHERE의 조건이 하나 이상인 경우

비교 연산자를 사용해서 조건을 추가해줄 수 있다, 비교 연산자는 아래와 같다

연산자 연산 방법 의미
>, < N > 5
N < 5
N이 5보다 클때
N이 5보자 작을때
>=, <= N >= 5
N <= 5
N이 5보다 크거나 같을때
N이 5보다 작거나 같을때
= N = 5 N이 5일 때
!= N != 5 N이 5와 같지 않을때
SELECT * FROM User
WHERE age >= 20;

유저 테이블에서 나이가 20이거나 이상인 데이터를 모두 검색한다

 

복합조건 연산자를 사용해서 조건을 추가하는 방법도 있다, 복합조건 연산자는 아래와 같다

연산자 연산 방법 의미
AND, && A AND B
A && B
A와 B를 모두 만족하는 값
OR, || A OR B
A || B
A 또는 B인 값
NOT, ! NOT A, !A A가 아닌 값
SELECT * FROM User
WHERE age <= 10 AND age >= 90;

유저 테이블에서 나이가 10이거나 이하 그리고 90이거나 이상인 데이터를 검색한다

 

기타 연산자를 사용하여 조건을 추가하는 방법도 있다, 기타 연산자는 아래와 같다

연산자 연산 방법 의미
BETWEEN A BETWEEN 5 AND 10 A가 5와 10 사이에 포함되는 값
IN A IN B B에 A가 포함되는 값
NOT IN A NOT IN B B에 A가 포함되지 않는 값
SELECT * FROM User
WHERE age BETWEEN 20 AND 30;

유저 테이블에서 나이가 20에서 30사이인 데이터를 검색한다 (20, 30도 포함된다)

 

 

 

LIKE

찾고자 하는 테이블에서 특정 문자가 포함된 문자열을 찾고 싶을 때 사용한다

SELECT * FROM User
WHERE name LIKE "testName";

유저 테이블에서 이름이 "testName"인 데이터만 검색한다

 

SELECT * FROM User
WHERE name LIKE "%Name";

위와 같이 사용시 이름이 Name으로 끝나는 데이터만 검색한다

 

SELECT * FROM User
WHERE name LIKE "test%";

위와 같이 사용시 이름이 test로 시작하는 데이터만 검색한다

 

SELECT * FROM User
WHERE name LIKE "%eNa%";

위와 같이 사용시 이름에 eNa가 포함된 데이터만 검색한다

 

 

 

ORDER BY

데이터를 검색할 때 정렬하여 결과를 출력하는 명령어

① ASC : 오름차순 정렬 (작은 값부터)

② DESC : 내림차순 정렬 (큰 값부터)

 

* 데이터베이스의 테이블 명을 검색할 때 사용한 DESC와 기능이 다르다

 

SELECT * FROM User
ORDER BY age ASC;

유저 테이블에서 나이가 낮은 수의 데이터부터 정렬하여 검색한다

 

SELECT * FROM User
ORDER BY age DESC;

나이가 높은 수의 데이터부터 정렬하여 검색한다

'SERVER > SQL' 카테고리의 다른 글

5. SQL (DML: DELETE)  (0) 2021.08.19
4. SQL (DML: UPDATE)  (0) 2021.08.19
3. SQL (DML: INSERT)  (0) 2021.08.19
1. SQL (Prologue)  (0) 2021.08.19