SQL(Structured Query Language) - SELECT
SQL(Structured Query Language)
1. SQL(Structured Query Language) : 관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어로 원하는 데이터를 찾는 방법이나 절차를 기술하는게 아닌 조건을 기술하여 작성.
2. 분류
분류 | 용도 | 명령어 |
DQL (Data Query Language) |
데이터 검색 | SELECT |
DML (Data Manipulation Language) |
데이터 조작 | INSERT, UPDATE, DELETE |
DDL (Data Definition Language) |
데이터 정의 | CREATE, DROP, ALTER |
TCL (Transcation Control Language) |
트랜잭션 제어 | COMIT, ROLLBACK |
3. SELECT
1) 작성법
-- 작성법
SELCET 컬럼명[, 컬럼명, 컬럼명 ....] -- 조회하고자 하는 컬럼명을 작성
FROM 테이블명 -- 조회 대상 컬럼이 포함된 테이블 명 작성
[WHERE 조건식]; -- 행을 선택하는 조건을 작성, 각각의 제한 조건은 논리연산자로 연결
2) 컬럼값에 대한 산술 연산한 결과도 조회가 가능하다.
-- EMPLOYEE테이블에서 사원명, 부서코드, 직책코드, 월급, 연봉, 보너스포함연봉 조회하기
SELECT EMP_NAME, DEPT_CODE, JOB_CODE, SALARY, SALARY*12, (SALARY+(SALARY*NVL(BONUS, 0)))*12
FROM EMPLOYEE;
3) 컬럼 별칭 지정해주기
-- AS 예약어를 사용하여 컬럼의 별칭을 지정해 줄 수 있음
SELECT EMP_NAME AS 사원명, EMAIL AS 이메일, SALARY AS 월급, BONUS AS 보너스
FROM EMPLOYEE;
-- 숫자 혹은 특수문자가 포함되는 경우에는 " " 사용
-- AS 생략 가능
4) 임의로 지정한 문자열을 SELECT절에 사용하면 테이블에 존재하는 데이터처럼 사용 가능
SELECT EMP_NAME, '님'
FROM EMPLOYEE;
5) 중복된 값을 제외하고 싶을때 : DISTINCT
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;
-- 두개의 컬럼을 사용했을 경우 두 컬럼을 하나의 값으로 보고 중복값을 제거한다
-- => 두 컬럼 모두 중복되는 경우에만 중복값이 제거된다.
6) WHERE절 : 검색할 컬럼의 조건을 설정하여 행을 결정할 때 사용
-- SELECT 컬럼명, 컬렴명...
-- FROM EMPLOYEE
-- WHERE 조건식 -> WHERE절 : 테이블에 저장된 ROW를 FILTER하는 기능, 조건식이 TRUE가 되는 ROW만 출력
-- EMPLOYEE테이블에서 DEPT_CODE='D9'인 사원을 조회하자.
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';
7) WHERE - AND/OR 사용 : 여러개의 조건 작성 시
-- EMPLOYEE테이블에서 월급이 350만원 이상이고 부서코드가 D5인 사원을 조회하자
SELECT *
FROM EMPLOYEE
WHERE SALARY >= 3500000 AND DEPT_CODE ='D5';
8) 연결 연산자 : '||'를 사용하여 컬럼과 컬럼, 컬럼과 리터럴을 연결
SELECT EMP_NAME || '님 월급' || SALARY AS MESSAGE
FROM EMPLOYEE;
9) 논리연산자 : AND(여러 조건이 동시에 TRUE일경우 TRUE 반환) / OR(조건중 하나만 TRUE여도 TRUE 반환) / NOT(조건에 대한 반대값으로 반환)
10) 비교연산자
연산자 | 설명 |
= | 같다 |
> | 크다 / 작다 |
>= | 크거나 같다 / 작거나 같다 |
<>, !=, ^= | 같지 않다 |
BETWEEN 범위 AND 범위 | 특정 범위에 포함되는지 |
LIKE / NOT LIKE | 문자 패턴 비교 |
IN NULL / IS NOT NULL | NULL 여부 비교 |
IN / NOT IN | 비교값 목록에 포함 / 미포함 여부 비교 |
11) 비교연산자 - BETWEEN
SELECT EMP_NAME, SALARY, BONUS, HIRE_DATE
FROM EMPLOYEE
WHERE SALARY BETWEEN 2000000 AND 3000000;
👏 날짜도 대소 비교가 가능하다. 오라클에서는 날짜를 년/월/일로 표기하는데, 문자열로 형식에 맞춰서 비교를 하면 비교가 가능하다.
-- EMPLOYEE테이블에서 입사일이 00년01월01일보다 빠른 사원 조회. 이름, 월급, 고용일
SELECT EMP_NAME, SALARY, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE < '00/01/01';
-- 날짜도 BETWEEN으로 비교가 가능하다
-- WHERE HIRE_DATE BETWEEN '95/01/01' AND '99/12/31';
12) 비교연산자 - LIKE
① % : 글자가 0개 이상 아무문자나 모두 허용 EX) '%강' = 글자수에 상관없이 강으로 끝나는 문자열은 TRUE
② _ : 표시된 자리에 무조건 아무문자 한개가 있다 EX) '_강' -> 두글자인데 강으로 끝나는 문자열 TRUE
-- LIKE는 WHERE절에 사용
-- WHERE 컬럼명 LIKE 패턴
-- EMPLOYEE테이블에서 유씨성을 가진 사원을 조회해라. 사원번호, 사원명 출력
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '유%';