파게로그

[SQL] 기본적인 문법 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

[SQL] 기본적인 문법

파게 2021. 3. 31. 01:30

Oracle Database 18c

docs.oracle.com/en/database/oracle/oracle-database/18/index.html

 

Oracle Database 18c SQL

docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/Introduction-to-Oracle-SQL.html#GUID-049B7AE8-11E1-4110-B3E4-D117907D77AC

 

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