
오라클 WITH 구문
2022. 12. 4. 16:25
DB/SQL
WITH TEST1 AS ( SELECT 'CN1' A FROM DUAL UNION ALL SELECT 'CN2' FROM DUAL ), TEST2 AS ( SELECT 'CN3' A FROM DUAL UNION ALL SELECT A FROM TEST1 ) SELECT * FROM TEST2 WITH절의 내용을 한번에 올려놓고 계속 재사용 할수록 검색 횟수가 줄어드니까 쿼리 성능이 좋아짐 1번만 사용할 시 서브쿼리랑 똑같음

계층형 쿼리 START WITH, CONNECT BY PRIOR, ORDER SIBLINGS BY
2022. 12. 3. 16:20
DB/SQL
START WITH : 트리 구조의 최상위 행을 지정 CONNECT BY : 부모, 자식의 관계를 지정 PRIOR : CONNECT BY 절에 사용되며 PRIOR에 지정된 컬럼이 맞은편 컬럼을 찾아감 CONNECT BY PRIOR 자식 컬럼 = 부모 컬럼 : 부모 → 자식 순방향 전개 CONNECT BY PRIOR 부모 컬럼 = 자식 컬럼 : 자식 → 부모 역방향 전개 ORDER SIBLINGS : 계층형 쿼리에서 정렬 예시 준비 테이블 생성 쿼리 CREATE TABLE TESTTABLE ( CODE_SE VARCHAR(20) NOT NULL, UPPER_CODE VARCHAR(10), SORT_ORDR NUMBER(5,0) ); insert into TESTTABLE values ('001', null..
merge into
2022. 9. 29. 12:19
DB/SQL
1. 값이 있는지 확인 2. 있으면 UPDATE 3. 없으면 INSERT MERGE INTO TABLE명 -update 또는 insert할 테이블 혹은 뷰 USING TABLE명 - 비교할 대상 테이블 혹은 뷰 (위 테이블과 동일할 경우 DUAL을 사용) ON [조건] - UPDATE 와 INSERT 처리할 조건문 (조건이 일치하면 UPDATE / 불일치 시 INSERT) WHEN MATCHED THEN UPDATE SET [COLUMN1] = [VALUE1], [COLUMN2] = [VALUE2], ... (DELETE [TABLE] WHERE [COLUMN 1] = [VALUE 1] AND ...) - UPDATE 뿐만 아니라 DELETE 구문도 사용 가능 WHEN NOT MATCHED THEN IN..
오라클 sql Practice9 [SEQUENCE]
2022. 5. 31. 10:45
DB/SQL
-- SCOTT 계정으로 시작 -- 데이터 사전 확인 SELECT * FROM DICT; SELECT * FROM DICTIONARY; SELECT TABLE_NAME FROM USER_TABLES; -- 허가 받은 범위에서 다른 사용자의 테이블을 표시함 SELECT OWNER,TABLE_NAME FROM ALL_TABLES; -- 오류나옴. SCOT은 권한이 없다. 데이터베이스 관리 권한 을 가진 사용자만 조회 -- SYSTEM 계정으로 로그인 후 확인 SELECT * FROM DBA_TABLES; SELECT * FROM DBA_USERS WHERE USERNAME = 'SCOTT'; SELECT * FROM DBA_USERS; --SCOTT 계정으로 SELECT * FROM USER_INDEXES;..
오라클 sql Practice8 [퀴즈 해답]
2022. 5. 30. 11:21
DB/SQL
SQL 처음 공부했을 때 썼던 코드 복습하는 느낌으로 기록합니다. 연습 Table은 오라클에서 처음 제공하는 emp, dept 를 이용하였습니다. DESC EMPLOYEES; SELECT * FROM EMPLOYEES; SELECT * FROM DEPARTMENTS; SELECT OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMPLOYEES' OR TABLE_NAME = 'DEPARTMENT'; --------------------------------------------------1번 SELECT DEPARTMENT_NAME FROM EMPLOYEES E JOIN DEPARTME..
오라클 sql Practice7 [JOIN]
2022. 5. 28. 11:58
DB/SQL
SQL 처음 공부했을 때 썼던 코드 복습하는 느낌으로 기록합니다. 연습 Table은 오라클에서 처음 제공하는 emp, dept 를 이용하였습니다. CREATE TABLE DEPT_FK1 AS SELECT * FROM DEPT; SELECT * FROM DEPT_FK1; -- DESC DEPT_FK1 과 DESC DEPT 의 결과값이 다름. NOT NULL 제약 조건이 다르게 생성된다. DESC DEPT_FK1; DESC DEPT; CREATE TABLE EMP_FK1 AS SELECT* FROM EMP; ALTER TABLE DEPT_FK1 MODIFY(DEPTNO CONSTRAINT TBLDTFK1_DPTNO_PK PRIMARY KEY); ALTER TABLE EMP_FK1 MODIFY(DEPTNO C..
오라클 sql Practice6 [UNIQUE, ALTER, PK, FK]
2022. 5. 27. 10:56
DB/SQL
SQL 처음 공부했을 때 썼던 코드 복습하는 느낌으로 기록합니다. 연습 Table은 오라클에서 처음 제공하는 emp, dept 를 이용하였습니다. CREATE TABLE TABLE_NOTNULL( LOGIN_ID VARCHAR2(20) NOT NULL, LOGIN_PWD VARCHAR2(20) NOT NULL, TEL VARCHAR2(20) ); DESC TABLE_NOTNULL; ---NULL 값 입력이 안됨. INSERT INTO TABLE_NOTNULL(LOGIN_ID,LOGIN_PWD,TEL) VALUES('TEST_ID_01',NULL,'010-1234-5678'); INSERT INTO TABLE_NOTNULL(LOGIN_ID,LOGIN_PWD) VALUES('TEST_ID_01',1234);..
오라클 sql Practice6 [Select, Insert, create, drop, delete]
2022. 5. 26. 11:40
DB/SQL
CREATE TABLE EMP_DDL( EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ); DESC EMP_DDL; CREATE TABLE EMP_ALTER AS SELECT * FROM EMP; ALTER TABLE EMP_ALTER ADD HP VARCHAR2(20); SELECT * FROM EMP_ALTER; DESC EMP_ALTER; ALTER TABLE EMP_ALTER RENAME COLUMN HP TO TEL; ALTER TABLE EMP_ALTER MODIFY EMPNO NUMBER(5); A..
오라클 sql Practice5 [DML, SubQuery, UNION, CASE, TCL]
2022. 5. 26. 11:39
DB/SQL
SQL 처음 공부했을 때 썼던 코드 복습하는 느낌으로 기록합니다. 연습 Table은 오라클에서 처음 제공하는 emp, dept 를 이용하였습니다. SELECT ENAME AS "사원명", DEPTNO AS "부서번호", DECODE(DEPTNO,10,'Accounting',20,'Research',30,'Sale') AS "부서명" FROM EMP; SELECT SUM(DECODE(DEPTNO,10,1,0)) FROM EMP; SELECT DECODE(DEPTNO,10,1) FROM EMP; -- 지정 안해주면 NULL 나옴 SELECT COUNT(DEPTNO) FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING DEPTNO = ..
오라클 sql Practice4 [DML, AVG, <>, ^= ]
2022. 5. 25. 10:28
DB/SQL
SQL 처음 공부했을 때 썼던 코드 복습하는 느낌으로 기록합니다. 연습 Table은 오라클에서 처음 제공하는 emp, dept 를 이용하였습니다. SELECT * FROM EMP; SELECT * FROM DEPT; CREATE TABLE MEMBER(ID NUMBER(5), NAME VARCHAR2(10)); INSERT INTO MEMBER(ID, NAME) VALUES(1000,'KIM'); INSERT INTO MEMBER(ID, NAME) VALUES(1001,'YI'); INSERT INTO MEMBER(ID, NAME) VALUES(1002,'KANG'); DELETE FROM MEMBER WHERE ID = 1002; DROP TABLE MEMBER; CREATE TABLE BOARD ( ..