[DB] SQL과 select문
SQL (Structured Query Language)
- 구조화된 질의(요청) 언어
- 관계형데이터베이스 관리시스템의 데이터를 관리하기 위해서 설계된 특수 목적의 프로그래밍 언어이다
- 데이터의 검색, 관리(수정/삭제/변경), 데이터베이스 객체 생성과 수정, 데이터베이스 접근제어를 위해 설계되었다.
- Oracle, MySQL, DB2, MS SQL Server 등이 SQL을 표준으로 채택하고 있다.
SQL 명령어의 종류
- DDL(Data Definition Language: 데이터 정의 언어)
- 데이터베이스 객체 생성, 수정, 삭제
- CREAT, DROP, ALTER, TRUNCATE
- DML (Data Manipulation Language: 데이터 조작 언어)
- 데이터의 추가, 조회, 수정, 삭제
- INSERT, SELECT, UPDATE, DELETE
- DCL (Data Control Language: 데이터 제어 언어)
- 권한의 부여, 박탈
- GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT
SELECT문
- 테이블의 데이터를 조회하는 명령문이다.
- 조회 기능
- 프로젝션 : 조회결과로 반환되는 열(컬럼)을 사용자가 선택할 수 있다.
- 선택 : 조회결과로 반환되는 행을 다양한 조건으로 제한할 수 있다.
- 조인 : 두 개 이상의 테이블을 연결해서 각 테이블에 저장된 데이터를 한 번에 가져올 수 있다.
- 테이블의 모든 행과 모든 열을 조회하기
SELECT * FROM 테이블명;
- 테이블에서 특정 컬럼을 선택해서 조회하기
SELECT 컬럼명, 컬럼명, 컬럼명, ... FROM 테이블명;
- 산술연산자(+, -, *, /) 사용하기
SELECT 컬럼명 + 10, 컬럼명 + 컬럼명, (컬럼명*2) + 컬럼명, ... FROM 테이블명;
- 산술연산자를 사용하는 산술식에 NULL값이 포함되어 있으면 연산결과는 항상 NULL이다.
- 오라클에서 NULL은 값이 결정되지 않았다는 의미다.
- 별칭(Alias) 정의하기
SELECT 컬럼명 별칭, 컬럼명 AS 별칭, ... FROM 테이블명
- 컬럼명의 이름을 변경한다.(단, 테이블의 컬럼명이 변경되는 것은 아니다.)
- 계산식이 포함된 컬럼에 적절한 이름을 붙일 때 유용하다.
- 별칭은 컬럼명 바로 뒤에 적는다. 컬럼명과 별칭 사이에 AS 키워드를 사용할 수 있다.
- 별칭에 특수문자, 공백이 포함되는 경우 ““를 사용해야 한다.
- 중복행없이 조회하기
SELECT DISTINCT 컬럼명, 컬럼명, ... FROM 테이블명
- DISTINCT 키워드는 제시된 컬럼의 값이 동일한 행은 한 번만 조회한다.
- 조회 기능
- 선택되는 행의 제한
SELECT 컬럼명, 컬럼명, 컬럼명, ... FROM 테이블명 WHERE 조건식;
- 조건식의 연산결과가 true로 판정되는 행만 선택된다.
- 비교 연산자
- between 하한값 and 상한값: 값의 범위에 포함(하한값, 상한값도 포함)
- in (값1, 값2, 값3, …): 제시된 값들 중에서 하나라도 일치한 것
- like 문자패턴: 문자패턴과 일치하는 것
- is null: null값인 것
- in not null: null값이 아닌 것
- 조건식
- where 컬럼명 비교연산자 값
- where 연산식 비교연산자 값
- where 연산식 비교연산자 연산식
- 작성예)
- where salary > 6000;
- where department_id = 70;
- where salary*12 > 50000;
- where manager_id is not null;
- where department_id in (10, 20)
- where job_id in (‘AD_PRES’, ‘AD_VP’);
-
논리 연산자 - and 조건식의 모든 조건이 true일 때 true를 반환한다. - or 조건식의 조건 중 하나라도 true일 때 true를 반환한다. -not 조건식의 연산결과를 반전시킨다.
- 논리 연산자가 포함된 조건식
- where 컬럼명 비교연산자 값 and 컬럼명 비교연산자 조건식
- 작성예)
- where department_id = 60 and salary >= 5000;
- where department_id = 50 and job_id like ‘%MAN’;
- where salary >= 10000 and salary <= 20000;
- where department_id in (50, 60, 70) and salary > 15000;
- 작성예)
- where 컬럼명 비교연산자 값 and 컬럼명 비교연산자 조건식
- 정렬하기
- ORDER BY 절을 사용하면 행을 정렬할 수 있다.
- ORDER BY 절은 SELECT문의 가장 끝에 위치한다.
- ORDER BY 절에서는 정렬조건으로 컬럼명, 연산식, 별칭, 컬럼의 순번을 지정할 수 있다.
- ORDER BY 절
SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명 [WHERE 조건식] [ORDER BY 정렬조건 ASC|DESC]