파게로그
[SQL] 기본적인 문법 본문
Oracle Database 18c
docs.oracle.com/en/database/oracle/oracle-database/18/index.html
Oracle Database 18c SQL
Oracle Dev Gym
devgym.oracle.com/pls/apex/f?p=10001:200:3380860704584:::RP::
아래와 같은 쿼리를 통해 테이블을 생성하고, 이를 계속해서 사용할 것이다.
ALTER SESSION SET NLS_DATE_FORMAT = 'RR/MM/DD';
CREATE TABLE dept (
deptno NUMBER(10) NOT NULL,
dname VARCHAR2(15),
city VARCHAR2(15),
budget NUMBER(10)
);
CREATE TABLE emp (
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
title VARCHAR2(15),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7, 2),
comm NUMBER(7, 2),
deptno NUMBER(2)
);
INSERT INTO dept VALUES (10, 'DEVELOPMENT', 'GYEONGGI', 1368);
INSERT INTO dept VALUES (20, 'SHIPMENT', 'BUSAN', 1049);
INSERT INTO dept VALUES (30, 'SALES', 'SEOUL', 542);
INSERT INTO dept VALUES (40, 'FACILITIES', 'DAEJEON', 315);
INSERT INTO emp VALUES (3741, '안철수', 'PRESIDENT', NULL, '91-11-14', 5200, NULL,10);
INSERT INTO emp VALUES (3494, '나문희', 'LEADER', 3741, '91-05-11', 3540, NULL, 30);
INSERT INTO emp VALUES (3679, '도재욱', 'LEADER', 3741, '91-05-19', 3410, NULL, 10);
INSERT INTO emp VALUES (3466, '백은지', 'LEADER', 3741, '91-03-21', 3930, NULL, 20);
INSERT INTO emp VALUES (3554, '방유원', 'COOPERATOR', 3494, '91-09-07', 1300, 1400, 30);
INSERT INTO emp VALUES (3330, '김철수', 'COOPERATOR', 3494, '91-02-12', 1750, 300, 30);
INSERT INTO emp VALUES (3752, '차도남', 'COOPERATOR', 3494, '91-08-22', 1660, 0, 30);
INSERT INTO emp VALUES (3802, '박찬호', 'RESEARCHER', 3494, '91-12-12', 820, NULL, 30);
INSERT INTO emp VALUES (3415, '허윤지', 'COOPERATOR', 3494, '91-02-24', 1210, 500, 30);
INSERT INTO emp VALUES (3803, '동치미', 'ANALYST', 3466, '91-10-01', 5000, NULL, 20);
INSERT INTO emp VALUES (3126, '이상해', 'RESEARCHER', 3803, '90-12-13', 790, NULL, 20);
INSERT INTO emp VALUES (3695, '윤동주', 'ANALYST', 3466, '92-12-06', 5000, NULL, 20);
INSERT INTO emp VALUES (3792, '강백호', 'RESEARCHER', 3695, '95-02-03', 1200, NULL, 20);
INSERT INTO emp VALUES (3848, '사유리', 'RESEARCHER', 3679, '92-01-12', 1400, NULL, 10); COMMIT;
SELECT * FROM dept;
SELECT * FROM emp;
SELECT ename, * -- 이렇게 작성하면 오류가 발생한다.
FROM emp;
SELECT ename, emp.*
FROM emp;
*
모든 column을 출력할 수 있다.
특정 column을 추가로 출력할 때에는, table명.*을 사용한다.
SELECT empno 번호, ename||':'||sal||'원' "Name and Salary"
FROM emp
ORDER BY sal DESC, deptno ASC;
AS
column의 별칭을 지정할 수 있다.
column명 AS 별칭에서 AS는 생략할 수 있다.
|| (concatenation operator, 연결 연산자)
column과 column을 연결해서 출력하거나,
column과 문자열을 연결해서 출력할 수 있다.
ORDER BY
ASC 대신 ASCENDING을, DESC 대신 DESCENDING을 사용할 수 있다.
생략하면 오름차순으로 정렬된다.
맨 마지막에 실행되므로 column 별칭을 사용할 수 있다.
여러 개의 column을 기준으로 정렬할 수도 있으며, 이 때 나열 순서에 영향을 받는다.
SELECT ename, deptno, sal
FROM emp
ORDER BY 3 desc, 2 asc;
ORDER BY절에서 사용된 숫자는 SELECT절의 column 순서이다.
위 예시에서 3은 sal을, 2는 deptno를 뜻한다.
'콤퓨타 왕기초 > SQLD/JDBC/Oracle DB' 카테고리의 다른 글
[SQL] 날짜 (0) | 2021.03.31 |
---|---|
[SQL] WHERE절 (0) | 2021.03.31 |
optimizer 종류 (1) | 2021.03.22 |
optimizer와 실행 계획 (0) | 2021.03.22 |
table partition (0) | 2021.03.22 |
Comments