본문 바로가기
✨ DBMS/Oracle

[Oracle / SQL] SQL SELECT, FROM, WHERE 기초 공부

by 환풍 2023. 2. 16.
728x90
반응형

EMP_EXAMPLE.sql
0.00MB

 혼자서 이것저것 하기 위해 예제 파일을 다운받았다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 계정 생성 시 계정명 및 비밀번호를 내 마음대로 할 수있도록 설정.
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
 
--계정명 : MYDB , 비밀번호 : ORACLE로 계정 생성.
CREATE USER MYDB IDENTIFIED BY ORACLE;
 
-- MYDB 계정에 디비 접속 및 기본 권한을 부여
GRANT CONNECT, RESOURCE TO MYDB;
 
-- MYDB 계정이 메모리를 사용할 수 있도록 권한 부여
ALTER USER MYDB DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
 
DROP USER MYDB;
cs

위와 같이 계정을 생성해주었다. 


Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-- 부서 테이블 제거하기
DROP TABLE EMP;
-- 사원 테이블 제거하기
DROP TABLE DEPT;
-- 급여 테이블 제거하기
DROP TABLE SALGRADE;
-- 부서 테이블 제거하기
DROP TABLE EMPLOYEE;
-- 사원 테이블 제거하기
DROP TABLE DEPARTMENT;
-- 급여 테이블 제거하기
DROP TABLE SALGRADE;
 
-- 부서 테이블 생성하기
CREATE TABLE DEPT(
     DEPTNO NUMBER(2CONSTRAINT PK_DEPT PRIMARY KEY,
     DNAME VARCHAR2(14),
     LOC   VARCHAR2(13) ) ;
 
-- 사원 테이블 생성하기
CREATE TABLE EMP( 
       EMPNO NUMBER(4CONSTRAINT PK_EMP PRIMARY KEY,
     ENAME VARCHAR2(10),
      JOB   VARCHAR2(9),
     MGR  NUMBER(4),
     HIREDATE DATE,
     SAL NUMBER(7,2),
     COMM NUMBER(7,2),
     DEPTNO NUMBER(2CONSTRAINT FK_DEPTNO REFERENCES DEPT);
 
 -- 급여 테이블 생성하기
CREATE TABLE SALGRADE(
     GRADE NUMBER,
     LOSAL NUMBER,
     HISAL NUMBER );
 
-- 사원 테이블에 샘플 데이터 추가하기
INSERT INTO DEPT VALUES(10'경리부''서울');
INSERT INTO DEPT VALUES(20'인사부''인천');
INSERT INTO DEPT VALUES(30'영업부''용인'); 
INSERT INTO DEPT VALUES(40'전산부''수원');
 
-- 부서 테이블에 샘플 데이터 추가하기
INSERT INTO EMP VALUES(1001'김사랑''사원'1013, to_date('2007-03-01','yyyy-mm-dd'), 300NULL20);
INSERT INTO EMP VALUES(1002'한예슬''대리'1005, to_date('2007-04-02','yyyy-mm-dd'), 250,   8030);
INSERT INTO EMP VALUES(1003'오지호''과장'1005, to_date('2005-02-10','yyyy-mm-dd'), 500,  10030);
INSERT INTO EMP VALUES(1004'이병헌''부장'1008, to_date('2003-09-02','yyyy-mm-dd'), 600NULL20);
INSERT INTO EMP VALUES(1005'신동협''과장'1005, to_date('2005-04-07','yyyy-mm-dd'), 450,  20030);
INSERT INTO EMP VALUES(1006'장동건''부장'1008, to_date('2003-10-09','yyyy-mm-dd'), 480NULL30);
INSERT INTO EMP VALUES(1007'이문세''부장'1008, to_date('2004-01-08','yyyy-mm-dd'), 520NULL10);
INSERT INTO EMP VALUES(1008'감우성''차장'1003, to_date('2004-03-08','yyyy-mm-dd'), 500,    030);
INSERT INTO EMP VALUES(1009'안성기''사장'NULL, to_date('1996-10-04','yyyy-mm-dd'),1000NULL20);
INSERT INTO EMP VALUES(1010'이병헌''과장'1003, to_date('2005-04-07','yyyy-mm-dd'), 500NULL10);
INSERT INTO EMP VALUES(1011'조향기''사원'1007, to_date('2007-03-01','yyyy-mm-dd'), 280NULL30);
INSERT INTO EMP VALUES(1012'강혜정''사원'1006, to_date('2007-08-09','yyyy-mm-dd'), 300NULL20);
INSERT INTO EMP VALUES(1013'박중훈''부장'1003, to_date('2002-10-09','yyyy-mm-dd'), 560NULL20);
INSERT INTO EMP VALUES(1014'조인성''사원'1006, to_date('2007-11-09','yyyy-mm-dd'), 250NULL10);
 
-- 급여 테이블에 샘플 데이터 추가하기
INSERT INTO SALGRADE VALUES (1700,1200);
INSERT INTO SALGRADE VALUES (21201,1400);
INSERT INTO SALGRADE VALUES (31401,2000);
INSERT INTO SALGRADE VALUES (42001,3000);
INSERT INTO SALGRADE VALUES (53001,9999);
COMMIT;
 
 
cs

예제파일은 위와 같이 쿼리가 짜여져있다.


 

 

1
2
-- EMP 테이블에 속한 모든 사원의 이름을 조회.
SELECT ENAME FROM EMP;
cs

1
2
-- EMP테이블에 속한 모든 사원의 사번, 이름을 조회
SELECT ENAME,EMPNO FROM EMP;
cs

1
2
-- EMP 테이블에 속한 모든 사원의 모든 정보 조회
SELECT * FROM EMP;
cs

 

 

1
2
-- 테이블의 컬럼 정보를 확인하는 쿼리
DESC EMP;
cs

 

 


-- 특정 조건을 만족하는 데이터를 조회하는 문법
-- 문법
-- SELECT 컬럼명들 FROM 테이블명 WHERE 조건;

 

1
2
3
4
-- 급여가 500이상인 사원들의 사번, 이름, 급여 조회
SELECT EMPNO, ENAME, SAL 
FROM EMP 
WHERE SAL>=500;
cs

 

1
2
3
4
-- 사원명이 오지호인 사원의 사번, 이름, 부서번호, 입사일 조회
SELECT EMPNO, ENAME, DEPTNO, HIREDATE
FROM EMP
WHERE ENAME = '오지호';
cs

 

1
2
3
4
5
--그리고 : AND , 이거나 : OR
--부서번호가 20번이면서 급여가 500이상인 사원들의 사번, 이름, 부서번호, 급여 조회
SELECT EMPNO, ENAME, DEPTNO, SAL
FROM EMP
WHERE DEPTNO = 20 AND SAL >=500;
cs

 

1
2
3
-- 커미션이 NULL인 사원의 모든 정보 조회
SELECT * FROM EMP
WHERE COMM IS NULL;
cs

1
2
3
4
--1. 직급이 사원인 직원의 사번, 직급, 사원명 조회
SELECT EMPNO, JOB, ENAME
FROM EMP
WHERE JOB = '사원';
cs

 

1
2
3
4
--2. 직급이 사원이 아니고 급여가 800 미만 직원의 사번, 직급, 급여, 부서번호 조회
SELECT EMPNO, JOB, SAL, DEPTNO
FROM EMP
WHERE JOB != '사원' AND SAL < 800;
cs

 

1
2
3
4
--3. 급여가 400이상 700이하인 사원 중 인센티브를 받는 사원의 이름, 급여, COMM을 조회
SELECT ENAME, SAL, COMM
FROM EMP
WHERE SAL >= 400 AND SAL <=700 AND COMM IS NOT NULL;
cs

 

1
2
3
4
--급여가 400 ~ 700사이인 모든 사원 정보 조회. 컬럼명 BETWEEN A AND B
SELECT *
FROM EMP
WHERE SAL BETWEEN 400 AND 700;
cs

1
2
3
4
5
--4. 10번 부서를 제외한 모든 직원중에서 직급상사가 없으며 급여는 500 이상을 받고, 
-- 사번은 1005번 이상인 사원들의 모든 정보를 조회
SELECT *
FROM EMP
WHERE DEPTNO != 10 AND MGR IS NULL AND SAL >=500 AND EMPNO >= 1005;
cs


이렇게 SELECT를 이용해 각종 테이블을 출력하는 연습을 해보았다. 

조건문 (WHERE) , >= , BETWEEN, IS NULL, AND, OR 등 다양하게 연습해보았는데, 

다음엔 좀 더 어려운 쿼리로 해보려고한다.

728x90
반응형

댓글