기본적인 순서 SELECT >> FROM >> WHERE >> ORDER BY
1.쿼리문 기본 문법
SELECT [DISTINCT]] 열 이름 [or 별칭(alias, AS)]
FROM 테이블이름
[WHERE 조건식]
[ORDER BY 열이름 [ASC or DESC]]
(ASC: 오름차순 1 > 2 > 3 > 4 > 5
DESC: 내림차순 5 > 4 > 3 > 2 > 1)
sql문 작성규칙
- SQL문은 대문자와 소문자를 구별하지 않습니다. SELECT와 select 동일하게 인식
- SQL문은 한 줄 또는 여러 줄로 작성할 수 있습니다.
- 가독성과 편집의 용이성을 위해 내용이 달라지면 줄을 나눕니다.
- 명령어는 여러 줄로 나눌 수 없습니다. 예를 들어 SEL ECT
- 코드 수준에 따른 들여쓰기는 SQL 문장을 좀 더 읽기 쉽게 합니다.
- 명령어를 대문자로 작성하고 나머지를 소문자로 작성하면 가독성이 좋아집니다.
이상 권장 규칙
2.SELECT문
1.특정 열만 조회
SELECT employee_id, first_name, last_name
FROM employees;
2. 정렬
어떤 열을 기준으로오름차순(ASC) 또는 내림차순으로 정렬(DESC)
ORDER BY 열 이름 [ASC or DESC];
3. 별칭
열 이름을 임시로 변경한다. (원래 열 이름이 물리적으로 변경되는 것은 아님)
SELECT employee_id AS 사번, first_name AS 이름, last_name AS 성
FROM employees;
4. 중복된 행 제거 후 출력
데이터 종류별로 하나씩 출력하게 된다.
SELECT DISTINCT 열 이름
FROM employees;
5. 데이터 값 연결하기
연결 연산자인 '||'를 사용하면 각 열의 결과를 연결해 하나의 열로 결과를 표현할 수 있고 문자열을 추가해 새로운 데이터를 표현하는 열을 만들 수도 있습니다.
SELECT employee_id, first_name||last_name
FROM employees
ORDER BY 사번 DESC;
문자열도 연결 가능
SELECT employee_id,
first_name||' '||last_name,
email||'@'||'company.com'
FROM employees;
6. 산술 처리하기: 데이터 값끼리 계산
산술연산자
'+, -, *, /'
SELECT 문에서는 FROM절을 제외한 모든 절에서 산술연산자 사용 가능
우선순위
(), *, /, +, -
SELECT employee_id AS 사원번호,
salary AS 급여,
salary+500 AS 추가급여,
salary-100 AS 인하급여,
(salary)*1.1 AS 조정급여
FROM employees;
3. WHERE 조건 절을 활용한 데이터 검색
사용자가 원하는 데이터를 조회할 때 사용하는 것이 WHERE 절
어디에서 어떻게 가져올지 정한다.
FROM 절 바로 다음에 기술
- WHERE 절을 사용하여 조회하려는 조건을 지정할 수 있습니다.
- WHERE 절은 FROM 절 다음에 위치합니다.
- 수행될 조건 절에는 비교 연산자, SQL 연산자, 논리 연산자, 열 이름, 표현식, 숫자, 문자 등을 쓸 수 있습니다.
데이터가 조회되는 논리 순서
SELECT 열 이름
FROM 테이블 이름
WHERE 원하는 조건;
참조하려는 테이블로부터(FROM) 해당 조건식으로(WHERE) 열을 선택(SELECT)하여 조회합니다.
연산자
WHERE 절에서는 연산자(operator)를 같이 쓸 수 있는데, 데이터 값을 조작하는데 사용
연산자의 종류
연산자 종류 | 설명 | 예시 |
---|---|---|
비교 연산자 | 조건을 비교 | = < > 등 |
SQL 연산자 | 조건 비교를 확장 | BETWEEN, IN 등 |
논리 연산자 | 조건 논리를 연결 | AND, OR 등 |
1. 비교 연산자
비교 연산자의 종류는 다음과 같습니다. 다양한 조건을 적용하여 사용자가 원하는 결과를 얻을 수 있습니다.
|구분|연산자|의미|
| --- | --- | --- |
|비교연산자|=|같다.|
||<>(!=)|같지 않다.|
||>|보다 크다.|
||>=|보다 크거나 같다,.|
||<|보다 작다.|
||<=|보다 작거나 같다.|
2. SQL 연산자
구분 | 연산자 | 의미 |
---|---|---|
SQL 연산 | BETWEEN a AND b | a와 b 사이에 값이 있다. |
IN(list) | list 중 어느 값이라도 일치한다. | |
LIKE '비교 문자' | 비교 문자와 형태가 일치한다. | |
IS NULL | null 값을 갖는다. |
1.BETWEEN a AND b 연산자
BETWEEN 연산자는 두 값의 범위에 해당하는 행을 출력할 때 사용
a에 작은 값을 기술, b에 큰 값을 기술
2.IN 연산자
조회하고자 하는 데이터 값이 여러 개 일 때 사용합니다.
SELECT *
FROM employees
WHERE salary IN (10000, 17000, 24000);
3.LIKE 연산자
조회 조건이 명홧하지 않을 때 사용
LIKE 연산자는 '~와 같다'라는 의미
- Like 연산자는 %와 _ 같은 기호 연산자(wild card)와 함께 사용합니다.
- 조건에 문자나 숫자를 포함할 수 있습니다.
- %는 '모든 문자'라는 의미고, _는 '한 글자'라는 의미입니다.
SELECT *
FROM employees
WHERE job_id LIKE 'AD%';
예 | 문법 | 의미 |
---|---|---|
1 | first_name LIKE 'Le%' | first_name에서 Le~는 모두 출력 |
2 | first_name LIKE '%ame%' | first_name에서 |
3 | first_name LIKE '%in' | first_name에서 ~in은 모두 출력 |
SELECT *
FROM employees
WHERE job_id LIKE 'AD___';
4. IS NULL 연산자
데이터 값이 null인 경우를 조회할 때 사용
SELECT *
FROM employees
WHERE manager_id IS NULL;
3. 논리 연산자
논리 연산자는 여러 조건을 논리적으로 연결할 때 사용하는 연산자 SQL 문의 조건을 계속 추가해야 할 때 필수 연산자 입니다.
구분 | 연산자 | 의미 |
---|---|---|
논리연산 | AND | 기술 순서로 봤을 때 앞의 조건과 뒤의 조건이 동시에 참(TRUE)이어야 참이다. 즉, 앞뒤 조건을 동시에 만족해야 한다. |
논리연산 | OR | 앞의 조건이 참이거나 뒤의 조건이 참인 경우, 즉 한쪽이라도 참이면 참이다. |
논리연산 | NOT | 뒤의 조건에 대해 반대 결과를 반환한다. |
and 연산
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG';
AND, OR 연산
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';
부정 연산자의 종류
구분 | 연산자 | 의미 |
---|---|---|
부정비교 | != | 같지 않다. |
부정비교 | <> | 같지 않다(ISO 표준). |
부정비교 | NOT 열 이름 = | ~와 같지 않다. |
부정비교 | NOT 열 이름 > | ~보다 크지 않다. |
부정 SQL | NOT BETWEEN a AND b | a와 b 사이에 값이 없다. |
부정 SQL | NOT IN (list) | list 값과 일치하지 않는다. |
부정 SQL | IS NOT NULL | null 값을 갖지 않는다. |
<>연산자 이용
SELECT *
FROM employees
WHERE employee_id <> 105;
IS NOT NULL 연산자 사용
SELECT *
FROM employees
WHERE manager_id IS NOT NULL;