SQL에 관련해 포스팅을 진행하려해요
저도 배우는 입장이고 아는게 많지 않아 글을 보며 같이 공부하고 배워나가고 싶어요
정정, 질문, 지적 언제나 환영입니다!!
제가 코드블럭에 예시를 든 코드들은 모두 https://livesql.oracle.com/apex/f?p=590:1000 에서 실행가능해요
(오라클 계정 생성 후 무료로 이용가능하며 Oracle과 DB Tool 설치 필요없이 이용가능해요)
다만 테이블명 앞에 hr. 을 붙여 주셔야 hr 스키마로 이용 가능합니다
그럼 시작할게요~
SELECT문 기본 구조
| (vertical bar) : or, 또는
{} (brace) : 문법의 범위, 묶음
[] (braket) : 생략 가능한 옵션
SELECT * | { [DISTINCT] column | expression [alias], ...}
FROM 테이블명
* SELECT문 실행 순서(중요)
- 문법 작성 순서
- SELECT 컬럼명 > FROM 테이블명 > JOIN 조건식 ON 테이블명 > WHERE 조건식 > GROUP BY 컬럼명
- HAVING 조건식 > ORDER BY 컬럼명 > LIMIT 갯수(FETCH)
- 실제 실행 순서
FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
Column Alias
- AS(생략가능)를 붙여 앞에 위치하는 컬럼명을 구문이 실행되는 동안 바꾸어 출력해줌
→ 생략 가능하지만 가독성 및 유지보수의 용이성을 위해 붙이는 것이 좋음 - ORACLE에서 Alias를 명시하면 컬럼명이 무조건 대문자로 출력됨
→ “”를 통해 명시할 시 대소문자 구분하여 지정됨 - 컬럼명 +(공란) , “ “를 통해 명시 가능하며, 띄어쓰기 포함 시 “ “를 통해서만 지정가능
(표현식 : 컬럼 자리 “ ” 내 텍스트 입력 시 컬럼과 모든 row에 리터럴(literal) 상수가 출력됨)
CONCAT
- 연결 연산자를 통해 여러 컬럼의 값이나 문자열을 합쳐 데이터를 출력가능함
- Oracle에서 다중 CONCAT시 ‘ | | ’ 를 복수로 사용하여 연결가능
※ 단, CONCAT사용 시 3개 이상의 컬럼 또는 문자열을 연결하려면 2개 단위로 CONCAT함수를 사용해야함 - MySql, MariaDB 등 RDBMS에서는 CONCAT 함수 내에 복수개의 컬럼(또는 문자열)을 통해 데이터 출력가능
CONCAT(컬럼0 | '문자열', CONCAT(컬럼1 | '문자열', 컬럼2 | '문자열'))
IN
- ‘=’과 같은 기능을 하지만 여러 개의 조건값을 받을 수 있는 연산자
- 조건값과 조건 컬럼은 동일한 데이터 타입이어야 함
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
LIKE
- 패턴문자의 패턴과 일치하는 형식을 가진 행을 출력하는 연산자(패턴문자 시작에 ‘%’ 지양 → 성능 문제 발생)
- ‘_’ : 임의의 1자리의 문자
- ‘%’ : 임의의 0~n자리의 문자
- ex) ‘_o%’ → 첫자리는 임의의 한 문자, 두번째 문자는 ‘o’ 그 뒤로는 길이 제한없이 임의의 문자열
IS NULL
- NULL값을 가진 행을 찾는 연산자
- ‘=NULL’연산으로 조회가 불가능하므로 IS NULL 연산자를 사용해야함
AND와 OR
- AND와 OR은 연산자 우선순위에 의해 AND가 우선 실행됨
- OR이 먼저 실행되어야 하는 경우 괄호()를 활용하여 우선순위를 바꿔 실행할 수 있음
❓ 사원들 중 급여(salary)가 10000이상이면서 job_id의 값이 'MAN' 또는 'REP'포함하고 있는 행의
employee_id, last_name, job_id, salary컬럼을 출력하는 구문을 작성하시오.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE (job_id LIKE '%MAN%' OR job_id LIKE '%REP%') AND salary >= 10000;
'DBMS > ORACLE' 카테고리의 다른 글
[ORACLE] COUNT 함수와 NULL (0) | 2023.08.17 |
---|