< select 문의 순서 >
select 컬럼1, 컬럼2, ...
from 테이블명
[where 조건문]
[group by 그룹화의 기준이 되는 컬럼명]
[having 행그룹 제한 조건문]
[order by 기준컬럼 ASC or DESC]
Select
1) 모든 컬럼 조회 : *
SQL> select *
from 테이블명
[where 조건문];
2) 특정 컬럼 조회 : 출력 원하는 순서대로 컬럼명 나열
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
[where 조건문];
3) 산술연산자 활용
- select 절에 산술 연산자(+, -, *, %)를 활용한 산술식 작성 가능함.
- 컬럼 alias : 컬럼 제목을 컬럼명이나 산술식이 아닌 원하는 제목으로 출력할 경우 사용. as는 생략 가능
SQL> select 컬럼1, 컬럼2 [AS] ‘alias’
from 테이블명
[where 조건문];
-- ex)
SQL> select prod_id, prod_name, price + 50 as '인상 예정 가격'
from products;
SQL> select prod_id, prod_name, price as ‘원가’, price * 0.9 as '10% 세일 가격'
from products;
4) distinct 키워드
- 중복된 값을 자동으로 제거해주는 키워드
SQL> select distinct 컬럼명
from 테이블명;
Where(조건문)
- 문자나 날짜 리터럴은 작은 따옴표로 묶어서 작성해야함
- MySQL은 작은따옴표, 큰따옴표 모두 허용하나 다른 DBMS가 작은따옴표만 허용하는 경우가 많으니 작은따옴표로 기억하는 것을 권장함
- 문자 : MySQL은 대소문자 구분하지 않음. (DBMS에 따라 다름)
- 날짜 : MySQL은 년-월-일 순서로 작성해야함. (DBMS에 따라 다름)
- where절에 조건문을 여러 개 작성할 경우 AND, OR 논리연산자로 나열
- where절에 AND와 OR 논리연산자가 함께 사용되어 있는 경우 우선순위가 높은 연산자는 AND 연산자
- 우선순위를 지정하고 싶은 경우에는 괄호를 사용
< 비교 연산자 >
= | 같다 | <> (또는 !=) | 같지 않다 |
> | 크다 | < | 작다 |
>= | 크거나 같다 | <= | 작거나 같다 |
between A and B | A 이상 B 이하 | not between A and B | A 미만 B 초과 |
like | 작성된 패턴이 일치하는 값 검색 | not like | 작성된 패턴과 일치하지 않는 값 검색 |
is null | null 값 검색 | is not null | null이 아닌 값 검색 |
- 1) between 비교연산자
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
where 좌변 [not] between A and B;
- 2) like 비교연산자
- 패턴 일치 여부를 비교해 주는 연산자로 값의 일부분만 아는 경우 사용됨.
- % : 문자가 안와도 되고 여러개 올 수 있음을 나타내는 기호 (0 또는 여러개의 문자)
- _ : 반드시 문자가 하나 와야됨을 나타내는 기호 (반드시 1개의 문자)
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
where 좌변 [not] like ‘패턴’;
- 3) IS NULL 비교연산자
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
where 좌변 is [not] null;
- 4) IN 비교연산자
- 다중형 비교연산자로 우변에 값 리스트가 올 수 있음.
- =과 OR의 성격을 내포함.
- 우변의 값 리스트와 비교해서 하나 이상 동일(=)하면 true를 반환함.
SQL> select 컬럼1, 컬림2, 컬럼3, ...
from 테이블명
where 컬럼명 in (값1, 값2, 값3...);
Group By (그룹화)
- 그룹함수와 group by절 사용 시 규칙(문법) => select절의 컬럼리스트들 중 그룹함수(min, avg, sum 등..)에 포함되지 않은 컬럼은 반드시 group by절에 포함되어 있어야 함
SQL > SELECT 컬럼1, 컬럼2, 그룹함수(컬럼3) ..
FROM 테이블명
GROUP BY 컬럼1, 컬럼2;
ex) 그룹화 예시
SQL> SELECT department_id, job_id, avg(salary)
FROM employees
GROUP BY department_id, job_id;
HAVING절
- WHERE절이 행 제한 조건절이면 HAVING절은 행그룹 제한 조건절(그룹 함수가 포함된 조건문)
ex) HAVING절 예시
SQL> SELECT job_id, sum(salary)
FROM employees
WHERE job_id NOT LIKE '%REP%'
GROUP BY job_id
HAVING sum(salary) > 13000;
Order By (데이터 조회시 정렬)
- 데이터 정렬 : order by 구문을 쿼리구문 마지막에 넣어줌
- 오름차순 : asc (생략 가능)
- 내림차순 : desc
-- 오름차순 정렬 : asc (생략 가능)
SQL> select 컬럼1, 컬럼2, ...
from 테이블명
[order by 컬럼명 [asc] ];
-- 내림차순 정렬 : desc
SQL> select 컬럼1, 컬럼2, ...
from 테이블명
[order by 컬럼명 desc];
1) column alias 사용
- alias한 컬럼명을 기준으로 정렬 가능
혹은 [ order by salary*12 ] 로 작성해도 OK
SQL> select employee_id, last_name, salary*12 annsal
from employees
order by annsal;
2) 위치표기법 사용
- 첫 번째 컬럼부터 1
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
order by 3;
3) 다중 컬럼을 기준으로 정렬하기
SQL> select 컬럼1, 컬럼2, 컬럼3, ...
from 테이블명
order by 컬럼1, 컬럼2 DESC;
-- 컬럼1을 기준으로 오름차순 정렬하고, (컬럼1에서 중복되는 값들은) 컬럼2를 기준으로 내림차순 정렬
* null 값의 경우 오름차순에서는-> 가장 앞 / 내림차순에서는 -> 가장 뒤에 출력
'5. DB > 4-1. MySQL DBMS' 카테고리의 다른 글
MySQL - [JOIN (Inner Join / Outer Join / Cross Join / Self Join) ] (0) | 2022.04.08 |
---|---|
MySQL - [ 모델링 / 역모델링(ER 다이어그램) ] (0) | 2022.04.04 |
MySQL - [데이터조작어(DML) - Insert / Update / Delete ] (0) | 2022.03.04 |
MySQL - [데이터 정의어(DDL) - Create / Alter / Drop / Truncate ] (0) | 2022.02.28 |
MySQL - [DB(스키마) 설치 / DB 생성] (0) | 2022.02.25 |