1. SELECT 문
데이터베이스에서 정보(데이터)를 조회하는 문
SELECT 컬럼이름, 컬럼이름, ...-- 절
FROM 테이블명, 뷰명 -- 절
- SELECT 기능
1) PROJECTION : 열 단위 추출
SELECT employee_id
FROM hr.employees;
2) SELECTION : 행 단위 추출
SELECT *
FROM hr.employees
WHERE employee_id = 100 ;
SELECT *
FROM hr.departments
WHERE department_id = 90 ;
3) JOIN : 서로 다른 테이블에 있는 데이터를 추출
SELECT e.*, d.*
FROM hr.employees e, hr.departments d
WHERE e.department_id = d.department_id
AND e.employee_id = 100 ;
SQL 문 작성시 주의사항
1) SQL문 은 대소문자를 구분하지 않습니다.
(단, 튜닝에서는 대소문자를 구분한다. 컬럼명, 테이블명등은 소문자로 작성해야 하고, cup에서 차이가 난다.)
SELECT * FROM hr.employees WHERE employee_id = 100 ;
select * from hr.employees where employee_id = 100 ;
- 단, 성능으로 보면 SQL 문의 대소문자를 규칙적으로 개발해야 좋다.
2) 공백문자 구분한다.
SELECT last_name, first_name FROM hr.employees WHERE employee_id = 100 ;
SELECT last_name, first_name FROM hr.employees WHERE employee_id = 100 ;
3) tap key와 enter key 구분한다.
- 절들은 서로 다른 줄로 구분하는 것이 좋다.(enter key 구분)
SELECT last_name, first_name FROM hr.employees WHERE employee_id = 100 ;
SELECT last_name, first_name
FROM hr.employees
WHERE employee_id = 100 ;
4) hint(힌트, 실행계획을 제어하는 기능)
SELECT *
FROM hr.employees
WHERE employee_id = 100 ;
SELECT /*+ full(e) */ *
FROM hr.employees e
WHERE employee_id = 100
;
5) 주석 처리 기능
-- 단일행 주석 처리
/*
여러행 주석 처리
*/
SELECT
employee_id, -- 사원번호
last_name -- 성
FROM hr.employees ;
테이블 구조
desc employees
■ 산술연산자 *, /, +, -
1) NUMBER : *, /, +, - 사칙연산 가능
SELECT salary, salary * 12 , salary / 12, salary + 1000, salary - 1000
FROM hr.employees ;
2) DATE : +, - 가능
SELECT hire_date, hire_date + 300, hire_date - 300
FROM hr.employees ;
3) VARCHAR2(가변길이), CHAR(고정길이) : 사칙연산 불가능.
사칙연산 우선 순위
1. *, / , +, - 순으로
SELECT 1+2
FROM dual ; -- dual : 가상테이블
-- 여러개의 연산자를 같이 사용할 때는 괄호를 표현하면 가독성이 좋아진다.
SELECT ((((a * b) / c) + d) - e)
FROM dual ;
-- 연산자 우선순위를 제어하는 방법은 괄호를 이용하면 된다.
SELECT (((a * b) /c) + (d - e))
FROM dual ;
■ null
- null 사용할 수 없거나 할당되지 않았거나 알 수 없거나 적용할 수 없는 값. 결측값
- null : 0, 공백이 아니다.
SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * commission_pct))
FROM hr.employees;
SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * nvl(commission_pct,0)))
FROM hr.employees;
■ nvl() : null 값을 실제값으로 대처하는 함수
SELECT commission_pct, nvl(commission_pct, 0)
FROM hr.employees ;
-- PL/SQL 문법 구조
IF commission_pct IS NULL THEN
return 0
ELSE
return commission_pct
END IF;
■ 열 별칭
- 열 이름을 다른 이름으로 출력한다.
- 열이름 바로 뒤에 한칸 띄어쓰기 한 후 입력하면 된다.
- 열 이름과 별칭 사이에는 as 키워드를 사용할 수 있다. (선택사항)
- 열 별칭에 공백, 특수문자(_, $, # 제외), 대소문자 구분하려면 큰 따옴표를 묶어야 한다.
- 열 별칭에 숫자가 먼저 나오면 큰 따옴표를 묶어야 한다.
SELECT employee_id 사번, salary 급여, commission_pct, ((salary * 12) + (salary * 12 * nvl(commission_pct,0))) as "annual salary"
FROM hr.employees;
SELECT employee_id 사번, salary 급여, commission_pct, ((salary * 12) + (salary * 12 * nvl(commission_pct,0))) as "1000annual_salary"
FROM hr.employees;
■ 연결 연산자
- 열이나 문자열을 다른 열에 연결한다.
- 두 개의 세로선(||)으로 표현한다.
- 결과 열은 문자열로 생성된다.
SELECT last_name, first_name, last_name||first_name
FROM hr.employees;
SELECT last_name, first_name, last_name||salary -- salary 숫자 타입이기 때문에 암시적(내부적)으로 to_char(salary) 문자형으로 변환된다.
FROM hr.employees;
SELECT last_name, first_name, last_name||to_char(salary) -- 명시적으로 사용하는 습관을 갖자.
FROM hr.employees;
SELECT '오늘 하루도 행복하자!!' || null -- 문자 || null : 문자 출력한다.
FROM dual;
■ 리터럴 문자열
- 숫자, 날짜, 문자는 작은 따움표로 묶어야 한다.
SELECT '사원번호 '||employee_id||' 입니다'
FROM hr.employees ;
SELECT '0000'||salary
FROM hr.employees ;
'Data Base > Oracle SQL' 카테고리의 다른 글
23.10.06. Oracle SQL NULL / LIKE 연산 (1) | 2023.10.06 |
---|---|
23.10.06. Oracle SQL WHRER 절, IN 연산자 (0) | 2023.10.06 |
23.10.06. Oracle SQL ② SELECT 문 (0) | 2023.10.06 |
23.10.05. Oracle SQL_DQL, DML, TCL, DDL, DCL (0) | 2023.10.05 |
23.10.05. Oracle SQL Developer _ DBA (0) | 2023.10.05 |