데이터베이스에 있는 데이터 조회 시 사용
단지 선택된 데이터를 화면에 출력할 뿐 데이터의 값이 데이터베이스에 반영(삽입, 갱신, 삭제)되지는 않음
// [] 안에 있는 내용은 선택 사항
// ; SQL문이 끝났음을 의미
// 볼드체는 필수 입력
// SELECT절은 열을 선택하는 역할
// FROM절은 테이블을 지정하는 역할
/* SELECT [DISTINCT] 열 이름 [or 별칭(alias)]
FROM 테이블 이름
[WHERE 조건식]
[ORDER BY 열 이름 [ASC or DESC]]; */
SELECT * // *은 '모든 열'을 의
FROM employees;
SELECT employee_id, first_name, last_name
FROM employees;
ORDER BY 열 이름 [ASC or DESC]
SELECT employee_id, first_name, last_name
FROM employees
ORDER BY employee_id DESC;
// ASC : 오름차순 정렬 (기본 정렬 방법이므로 ASC를 입력하지 않아도 오름차순으로 정렬됨)
// DESC : 내림차순 정렬
DISTINCT 열 이름
SELECT DISTINCT job_id
FROM employees;
SELECT문의 결과를 출력할 때 일반적으로 열 이름은 테이블을 정의할 때 명명한 열의 제목(열 이름)을 출력함
→ 원래 명명된 열 이름 외에 열 이름으로 임의로 바꿔 쓰고자 할 때 사용하는 것이 별칭(alias)
AS
열 이름을 변경하려면 AS 접속사를 사용해야 함
단, SELECT 문에 기술할 때는 AS 접속사 생략 가능
SELECT 열 이름 AS 별칭
// 별칭의 특징
// (1) 별칭은 열 이름을 임시로 변경하는 데 사용함 (원래의 열 이름이 물리적으로 변경되는 것은 아님)
// (2) 별칭은 열 이름 바로 뒤에 사용하며 열 이름과 별칭 사이에는 AS 접속사를 넣음
// (3) AS 접속사는 생략 가능
// (4) 별칭에 공백, 특수문자, 대소문자 등을 사용하려면 "Emp Id"와 같이 ""로 묶어서 사용해야함
SELECT employee_id AS 사원번호, first_name AS 이름, last_name AS 성
FROM employees;
||
각 열에 따로 담겨 있는 데이터 값을 하나로 붙이거나 추가 수식을 붙여 출력하는 경우 사용
[열 이름]||[열 이름] or [열 이름]||'[문자]' // 문자를 붙일 때는 '' 사용
SELECT employee_id, first_name||last_name
FROM employees;
EMPLOYEE_ID | FIRST_NAME | |
---|---|---|
1 | 100 | StevenKing |
2 | 101 | NeenaKochhar |
SELECT employee_id,
first_name||' '||last_name,
email||'@'||'company.com'
FROM employees;
SELECT employee_id, salary, salary+500, salary-100, (salary * 1.1)/2
FROM employees;
SELECT employee_id AS 사원번호,
salary AS 급여,
salary+500 AS 추가급여,
salary-100 AS 인하급여,
(salary*1.1)/2 AS 조정급여
FROM employees;
사용자가 원하는 데이터를 조회할 때 사용 (조건 지정 용도)
FROM절 다음에 위치
조건 절에는 비교 연산자, SQL 연산자, 논리 연산자, 열 이름, 표현식, 숫자, 문자 등을 쓸 수 있음
SELECT 열 이름 // 출력하려는 열 (3) 열을 선택하여 조회
FROM 테이블 이름 // 참조하려는 테이블 (1) 참조하려는 테이블로부터
WHERE 원하는 조건; // 조건식 (2) 해당 조건식으로
연산자 우선 순위 : 괄호 > 부정 연산 > 비교 연산 > SQL 연산
논리 연산자 우선 순위 : NOT > AND > OR
연산자 종류 | 설명 | 예시 |
---|---|---|
비교 연산자 | 조건을 비교 | = (같다) <> (같지 않다) > (보다 크다) >= (보다 크거나 같다) < (보다 작다) <= (보다 작거나 같다) |
SQL 연산자 | 조건 비교를 확장 | BETWEEN a AND b (a와 b 사이에 값이 있음, a와 b값 포함) IN (list 중 어느 값이라도 일치) LIKE ‘비교 문자’ (비교 문자와 형태가 일치 : %, _ 사용) IS NULL (null 값을 가짐) |
논리 연산자 | 조건 논리를 연결 | AND (앞의 조건과 뒤의 조건을 동시에 만족해야 할 때) OR (앞이나 뒤 중 하나라도 참인 경우) NOT (뒤의 조건에 대해 반대 결과를 반환) |
SELECT *
FROM employees
WHERE employee_id = 100; // 숫자가 아니라 문자라면 ''를 붙여야 함 (WHERE first_name = 'David')
SELECT *
FROM employees
WHERE first_name = 'David';
SELECT *
FROM employees
WHERE employee_id >= 105;
SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 20000;
SELECT *
FROM employees
WHERE salary IN (10000, 17000, 24000);
LIKE 연산자
employees 테이블에서 job_id 값이 AD를 포함하는 모든(%) 데이터를 조회하기
SELECT *
FROM employees
WHERE job_id LIKE 'AD%'; // 맨 앞에 AD라는 문자 값을 가지면서 그 뒤로 모든 문자(%)를 포함하는 데이터
// '%AD'나 '%AD%' 조건 등으로 응용 가능
SELECT *
FROM employees
WHERE job_id LIKE 'AD___';
IS NULL 연산자
employees 테이블에서 manager_id가 null 값인 직원 정보를 출력하기
SELECT *
FROM employees
WHERE manager_id IS NULL;
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG';
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';
구분 | 연산자 |
---|---|
부정 비교 | != (같지 않다) <> (같지 않다) NOT 열 이름 = (~와 같지 않다) NOT 열 이름 > (~보다 크지 않다) |
부정 SQL | NOT BETWEEN a AND b (a와 b 사이에 값이 없다) NOT IN (list 값과 일치하지 않는다) IS NOT NULL (null 값을 갖지 않는다) |
SELECT *
FROM employees
WHERE employee_id <> 105;
SELECT *
FROM employees
WHERE manager_id IS NOT NULL;