728x90
반응형
혼자서 이것저것 하기 위해 예제 파일을 다운받았다.
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(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13) ) ; -- 사원 테이블 생성하기 CREATE TABLE EMP( EMPNO NUMBER(4) CONSTRAINT 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(2) CONSTRAINT 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'), 300, NULL, 20); INSERT INTO EMP VALUES(1002, '한예슬', '대리', 1005, to_date('2007-04-02','yyyy-mm-dd'), 250, 80, 30); INSERT INTO EMP VALUES(1003, '오지호', '과장', 1005, to_date('2005-02-10','yyyy-mm-dd'), 500, 100, 30); INSERT INTO EMP VALUES(1004, '이병헌', '부장', 1008, to_date('2003-09-02','yyyy-mm-dd'), 600, NULL, 20); INSERT INTO EMP VALUES(1005, '신동협', '과장', 1005, to_date('2005-04-07','yyyy-mm-dd'), 450, 200, 30); INSERT INTO EMP VALUES(1006, '장동건', '부장', 1008, to_date('2003-10-09','yyyy-mm-dd'), 480, NULL, 30); INSERT INTO EMP VALUES(1007, '이문세', '부장', 1008, to_date('2004-01-08','yyyy-mm-dd'), 520, NULL, 10); INSERT INTO EMP VALUES(1008, '감우성', '차장', 1003, to_date('2004-03-08','yyyy-mm-dd'), 500, 0, 30); INSERT INTO EMP VALUES(1009, '안성기', '사장', NULL, to_date('1996-10-04','yyyy-mm-dd'),1000, NULL, 20); INSERT INTO EMP VALUES(1010, '이병헌', '과장', 1003, to_date('2005-04-07','yyyy-mm-dd'), 500, NULL, 10); INSERT INTO EMP VALUES(1011, '조향기', '사원', 1007, to_date('2007-03-01','yyyy-mm-dd'), 280, NULL, 30); INSERT INTO EMP VALUES(1012, '강혜정', '사원', 1006, to_date('2007-08-09','yyyy-mm-dd'), 300, NULL, 20); INSERT INTO EMP VALUES(1013, '박중훈', '부장', 1003, to_date('2002-10-09','yyyy-mm-dd'), 560, NULL, 20); INSERT INTO EMP VALUES(1014, '조인성', '사원', 1006, to_date('2007-11-09','yyyy-mm-dd'), 250, NULL, 10); -- 급여 테이블에 샘플 데이터 추가하기 INSERT INTO SALGRADE VALUES (1, 700,1200); INSERT INTO SALGRADE VALUES (2, 1201,1400); INSERT INTO SALGRADE VALUES (3, 1401,2000); INSERT INTO SALGRADE VALUES (4, 2001,3000); INSERT INTO SALGRADE VALUES (5, 3001,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
반응형
'✨ DBMS > Oracle' 카테고리의 다른 글
[Oracle / SQL] 더미테이블(DUAL)과 유용한 문자 함수 예제 (0) | 2023.02.21 |
---|---|
[Oracle / SQL] 쿼리문 합치기 UNION, UNION ALL (0) | 2023.02.21 |
[Oracle / SQL] sqldeveloper 경고 - 일부 모듈을 설치하지 못했습니다. (0) | 2023.02.17 |
[Oracle / SQL] SQL 별칭(AS), 와일드카드, LIKE 연산자, '%' , '_' (0) | 2023.02.16 |
[Oracle] DBMS와 SQLD에 대해서 알아보자. (0) | 2023.02.16 |
댓글