데이터베이스에는 계층형, 관계형, 객체 관계형, 문서형 등 다양한 형태가 있다. 그러나 그중에서 가장 많이 사용되는 것은 관계형 데이터베이스(Relational Database)이며 관계형 DB를 관리하는 프로그램을 RDBMS(Relational DataBase Management Sytem)이라고 한다. RDBMS에는 MySQL, MSSQL, 오라클(Oracle), MariaDB 등이 있다.
이 카테고리에서는 카테고리 명칭에서 알 수 있듯이 오라클 데이터베이스를 사용하여 DBMS를 다루는 방법에 대해서 알아보고자 한다. SQL문의 사용법은 DBMS마다 대부분 동일하나 조금씩 다른 부분이 있을 수 있으니 참고하길 바란다.
SQL도 일종의 언어이기 때문에 주석문이 존재한다. SQL에서 '--'는 한 줄 주석 시작, '/*'과 '*/'은 블록 주석의 끝을 나타낸다.
--한 줄 주석
/*
블록 주석
*/
데이터베이스를 다루기 위해서는 데이터베이스에 관한 언어를 알아야 한다. DB 언어는 다음과 같다.
1. DQL(Data Query Language): 데이터 조회 언어
- SELECT: 데이터베이스에서 데이터를 검색해서 사용자가 원하는 데이터를 확인 및 사용할 수 있다.
2. DML(Data Manpulation Language): 데이터 조작 언어
- INSERT, ALTER, DROP, TRUNCATE: 데이터베이스의 테이블에 새로운 행의 삽입, 수정, 삭제를 위한 명령어
3. DDL(Data Definition Language): 데이터 정의 언어
- CREATE, VIEW, DROP, TRUNCATE: 데이터베이스에서 테이블의 생성, 변경, 삭제 등을 수행하는 명령어
테이블 뷰, 유저, 시퀀스 동의어
4. DCL(Data Control Language): 데이터 제어 언어
- GRANT, REVOKE: 데이터베이스에 접속하는 사용자에게 데이터베이스와 그 안의 구조에 대한 액세스 권한을 부여 또는 제거
5. TCL(Transaction Control Language): 트랜잭션(데이터 수행 처리 단위) 제어 언어
- COMMIT, SAVEPOINT, ROLLBACK: 확정, 어느 시점의 데이터 저장, 되돌리기를 위한 명령어
1. 데이터 조회 언어(Data Query Language) - SELECT
기본 문법: SELECT 칼럼명 FROM 테이블명 WHERE 조건;
칼럼명에 해당하는 칼럼(열)을 테이블명에 해당하는 테이블에서 조회 또는 가져오는 명령어이다. SQL에서 명령어 단위가 끝난 후에는 ';'(세미콜론)을 붙여서 명령어의 끝을 알려주어야 한다.
칼럼명은 일반적인 산술 연산(숫자형은 +, -, *, /, 날짜형은 +, -)이 가능하며, AS 구문으로 별칭(Alias)을 만들 수 있다.
예: SELECT 칼럼명 AS 별칭 FROM 테이블명 WHERE 조건;
SELECT문을 사용하면 조건에 해당하는 자료들(혹은 열들)을 모두 가져온다. 만약 중복되지 않는 자료를 가져오기 위해서는 DISTINCT라는 키워드를 사용하면 된다.
예: SELECT DISTINCT 칼럼명 FROM 테이블명 WHERE 조건;
DISTINCT를 사용하지 않으면 기본적으로 조건에 해당하는 모든 자료를 가져온다. 이는 DISTINCT 키워드 대신 ALL 키워드를 사용한 것과 같다.
예: SELECT ALL 칼럼명 FROM 테이블명 WHERE 조건;
조건이 두 개 이상일 때는 AND나 OR 연산자를 사용하면 된다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 조건1 AND 조건2;
예: SELECT 칼럼명 FROM 테이블명 WHERE 조건1 OR 조건2;
위 두 SELECT문이 '~사이의 수/날짜'나 '~중에 하나'를 뜻하는 조건일 경우, BETEEN~AND~, IN() 구문을 사용할 수 있다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 BETWEEN 숫자/날짜1 AND 숫자/날짜2;
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 IN(값1, 값2);
오라클 DB에서 문자열은 '(작은따옴표)로 감싼다.(큰따옴표가 아님에 주의)
문자열 중 일부가 일치하는 자료를 검색할 때는 LIKE와 와일드 문자를 사용한다.
%-여러 문자를 의미
_ - 한 문자를 의미
칼럼의 자료 중 세 번째 문자가 'A'인 자료를 찾는다면 다음과 같다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 LIKE '__A%';(언더바가 두 개이므로 두 글자 다음 글자가 A이고 A 뒤에 문자 여러 개가 있는 자료를 찾는다.)
만약 와일드 문자가 아니라 '%'와 '_'를 자료형에서 찾으려면 ESCAPE 키워드를 사용하면 된다.
다음과 같이 ESCAPE '\'을 붙여주면 LIKE 문에서 '\' 이후의 글자를 문자 '%'나 '_'로 인식하게 된다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 LIKE '_\_A\%%' ESCAPE '\';(첫 번째 문자 뒤에 '_a%'가 들어가 있고 뒤에 다른 문자열이 붙는 자료를 찾는다.)
NULL 값이거나 NULL이 아닌 자료를 찾을 경우 다음과 같다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 IS NULL;
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 IS NOT NULL;
조건식에서 논리 연산자 AND, OR, NOT이 사용 가능하다.
AND는 위에서 BETWEEN 조건1 AND 조건2와 같이 조건과 조건 사이에 사용한다.
OR도 마찬가지이며, NOT은 연산자 앞에 사용하여 부정 연산을 시행해준다.
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 NOT BETWEEN 조건1 AND 조건 2;
예: SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 NOT IN('값1', '값2');
특정 필드(칼럼)의 자료의 크기 순으로 정렬하기 위해서는 ORDER BY 구문을 사용하며 ASC와 DESC 옵션이 있다. 기본값은 오름차순 ASC이며, 생략이 가능하다.
예: SELECT 칼럼명 FROM 테이블명 ORDER BY 칼럼명 ASC;
예: SELECT 칼럼명 FROM 테이블명 ORDER BY 칼럼명 DESC;
ORDER BY는 칼럼명 대신 별칭(Alias)도 사용 가능하다.
NULL 값을 먼저 출력하려면 NULLS FIRST, 마지막에 출력하려면 NULLS LAST 키워드를 사용하면 된다.
예: SELECT 칼럼명 FROM 테이블명 ORDER BY 칼럼명 ASC NULLS FIRST;
예: SELECT 칼럼명 FROM 테이블명 ORDER BY 칼럼명 ASC NULLS LAST;
'💿DBMS > 오라클' 카테고리의 다른 글
프로시저 vs. 함수 (0) | 2021.07.26 |
---|---|
[20210610] DDL, DCL, 오라클 자료형, PL/SQL (0) | 2021.06.10 |
[20210609] 조인2, 서브쿼리, DML, TCL (0) | 2021.06.09 |
[20210608] 단일 행 함수2, 다중 행 함수, 그룹 함수, 키, 조인 (0) | 2021.06.08 |
[20210607] 단일 행 함수 (0) | 2021.06.07 |