1. 데이터 정의어 (ALTER,MODIFY) 324P
Q1)
--Q1.
CREATE TABLE EMP_HW(
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_HW;
SELECT * FROM EMP_HW;
Q2)
--Q2
ALTER TABLE EMP_HW
ADD BIGO VARCHAR2(20);
SELECT * FROM EMP_HW;
Q3)
--Q3
ALTER TABLE EMP_HW
MODIFY BIGO VARCHAR2(30);
DESC EMP_HW;
Q4)
--Q4
ALTER TABLE EMP_HW
RENAME COLUMN BIGO TO REMARK;
SELECT * FROM EMP_HW;
Q5)
--Q5
-- 실수 : INSERT ALL INTO EMP_HW VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20,NULL)
-- 서브 쿼리 : SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL FROM EMP;
INSERT INTO EMP_HW
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL FROM EMP;
SELECT * FROM EMP_HW;
Q6)
--Q6
DROP TABLE EMP_HW;
SELECT * FROM EMP_HW;
2. 객체 종류 357P
Q1)
--Q1 357P
--1)
CREATE TABLE EMPIDX AS SELECT * FROM EMP;
SELECT * FROM EMPIDX;
--2)
CREATE INDEX IDX_EMPIDX_EMPNO
ON EMPIDX(EMPNO);
SELECT * FROM USER_IND_COLUMNS;
--3)
SELECT * FROM USER_INDEXES;
Q2)
--Q2 OR REPLEACE 를 하기
--서브쿼리 :
SELECT EMPNO,ENAME,JOB,DEPTNO,SAL,NVL2(COMM,'O','X') AS COMM FROM EMPIDX WHERE SAL > 1500;
--뷰 생성 권한 부여
GRANT CREATE VIEW TO SCOTT;
--뷰 생성
CREATE VIEW EMPIDX_OVER15K
AS (SELECT EMPNO,ENAME,JOB,DEPTNO,SAL,NVL2(COMM,'O','X') AS COMM FROM EMPIDX WHERE SAL > 1500);
SELECT * FROM EMPIDX_OVER15K;
--뷰 수정
CREATE OR REPLACE VIEW EMPIDX_OVER15K AS (SELECT EMPNO,ENAME,JOB,DEPTNO,SAL,NVL2(COMM,'O','X')
* CREATE 할 때 OR REPLACE 넣어주기!
Q3)
--Q3
--1) 테이블 생성 DEPT 참조
CREATE TABLE DEPTSEQ AS (SELECT * FROM DEPT);
SELECT * FROM DEPTSEQ;
--2) 시퀀스 생성
CREATE SEQUENCE SEQ_DEPTSEQ_SEQUENCE
START WITH 1
INCREMENT BY 1
MAXVALUE 99
MINVALUE 1
NOCYCLE
NOCACHE ;
SELECT * FROM USER_SEQUENCES;
--3) 왜 안될까?
--쓰면 안되는 형식
INSERT ALL
INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL, 'DATABASE', 'SEOUL')
INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL+1, 'WEB', 'BUSAN')
INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL+2, 'MOBILE', 'ILSAN')
SELECT * FROM DUAL;
--INTO 형태로 수정해서 쓰기
INSERT INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL, 'DATABASE', 'SEOUL');
INSERT INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL, 'WEB', 'BUSAN');
INSERT INTO DEPTSEQ VALUES (SEQ_DEPTSEQ_SEQUENCE.NEXTVAL, 'MOBILE', 'ILSAN');
SELECT * FROM DEPTSEQ;
--테이블, 시퀀스 버리기
DROP TABLE DEPTSEQ;
DROP SEQUENCE SEQ_DEPTSEQ_SEQUENCE;
728x90
반응형
LIST
'개인공부 정리 > 문제풀이' 카테고리의 다른 글
0209 오라클 DB 문제풀이 - PL/SQL, 커서와 예외처리 (0) | 2023.02.09 |
---|---|
0208 오라클 DB 문제풀이 - 제약 조건 및 사용자, 권한, 롤 관리 (0) | 2023.02.08 |
0206 오라클 DB 문제풀이 - 데이터 조작어 (INSERT, UPDATE), 트랜잭션 (0) | 2023.02.06 |
0203 오라클 DB 문제풀이 - 조인(JOIN), 서브쿼리 (0) | 2023.02.03 |
0202 오라클 DB 2강 - SQL 문제풀이 (오라클 함수) (함수 설명 포함) (0) | 2023.02.02 |