-----
SELECT *
FROM USER_TAB_COMMENTS
WHERE TABLE_NAME ='TBL_DEPT';
--F20
IS '부서 테이블' ;
SELECT *
FROM USER_TAB_COMMENTS
WHERE TABLE_NAME ='TBL_DEPT';
--F21
SELECT *
FROM USER_TAB_COMMENTS;
-- F22
SELECT * FROM TAB;
-- SCOTT 에서
GRANT SELECT ON EMP TO DB402USER1;
--
SELECT EMPNO, ENAME, JOB,SAL
FROM SCOTT.EMP
WHERE DEPTNO =10;
-- F23
CREATE TABLE TBL_EMP
AS
SELECT EMPNO, ENAME, JOB,SAL
FROM SCOTT.EMP
WHERE DEPTNO =10;
SELECT *
FROM USER_TABLES
WHERE TABLE_NAME = 'TBL_EMP';
-- 새로 만들어지는 테이블 이므로 해당 사용자의 DEFAULT TABLESPACE에 생성
--F24
CREATE TABLE TBL_EMP20
TABLESPACE PROJECTTBS
AS
SELECT EMPNO, ENAME, JOB,SAL, COMM
FROM SCOTT.EMP
WHERE DEPTNO =20 ;
SELECT *
FROM USER_TABLES
WHERE TABLE_NAME = 'TBL_EMP20';
--F25
CREATE OR REPLACE VIEW VIEW_EMP20
AS
SELECT EMPNO, ENAME, SAL
FROM TBL_EMP20
WHERE SAL>=2000;
-- F26 권한 불충분
GRANT CREATE VIEW TO DB402USER1;
로 권한 부여
CREATE OR REPLACE VIEW VIEW_EMP20
AS
SELECT EMPNO, ENAME, SAL
FROM TBL_EMP20
WHERE SAL>=2000;
SELECT *
FROM VIEW_EMP20;
-- F27
SELECT *
FROM TAB;
--F28
-- 자신이 생성한 테이블과 뷰에 대해 알려줌
-- 그외의 BIN$로 시작되는 값들은 휴지통 과 같은 역할을 한다!
-- ORACLE 10G의 새로운 기능임!
SELECT *
FROM TBL_EMP;
--F29
DROP TABLE TBL_EMP;
SELECT *
FROM TAB;
--F30
DROP VIEW VIEW_EMP20;
SELECT *
FROM TAB;
--F31
-- 뷰 자체는 기존 테이블로 부터 보기 편하게 끌어온 쿼리의 결과이므로
사라진다.
SELECT *
FROM "BIN$CizNpBtpT7eMR8cU853r5w==$0"
--F32
-- DROP한 테이블에 대한 결과가 보임!!
-- FLASH BACK DATA 이다 - 추후 상세
SELECT *
FROM TAB
WHERE TNAME NOT LIKE 'BIN$%';
-- F33
# 고급 프로그래밍 방법
1. 주석문 처리
성능, 필요 변수, 결과값, 과정, 알고리즘 등
-- COLUMN에 주석 COMMENT 추가!
COMMENT ON COLUMN
TBL_DEPT.LOC IS '부서주소';
SELECT *
FROM USER_COL_COMMENTS
WHERE TABLE_NAME = 'TBL_DEPT';
-- F34
--- FK와 CHECK 제약 > CASECADE
CREATE TABLE TBL_EMP
(EMPNO NUMBER(4)
CONSTRAINT TBL_EMP_EMPNO_NN NOT NULL,
ENAME VARCHAR2(10),
JUBUN VARCHAR2(13)
CONSTRAINT TBL_EMP_JUBUN_NN NOT NULL,
EMAIL VARCHAR2(30),
MGR NUMBER(4),
DEPTNO NUMBER(4),
CONSTRAINT TBL_EMP_EMPNO_PK PRIMARY KEY(EMPNO),
CONSTRAINT TBL_EMP_JUBUN_UK UNIQUE(JUBUN),
CONSTRAINT TBL_EMP_MGR_FK FOREIGN KEY(MGR) REFERENCES TBL_EMP(EMPNO),
CONSTRAINT TBL_EMP_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES TBL_DEPT(DEPTNO),
CONSTRAINT TBL_EMP_EMAIL_CK
--CHECK(EMAIL LIKE '_%@_%.COM' OR EMAIL LIKE '_%@_%.NET' OR EMAIL LIKE '_%@_%.KR')
CHECK ( INSTR (EMAIL,'@',1,1)>1 AND INSTR (EMAIL,'@',1,2)=0 AND INSTR(EMAIL,'@',1,1) != LENGTH(EMAIL)
AND SUBSTR( REVERSE(EMAIL),1, INSTR(REVERSE(EMAIL),'.',1,1)) IN ('MOC.','TEN.','RK.') )
);
-- EMAIL 이 15 이다 . EMAIL 중에 @가 1개, .이 1개 되도록!
--_%@_%._% 마지막 3개는 .COM, NET, KR,
-- TEACHER
CHECK ( INSTR (EMAIL,'@',1,1)>1 AND INSTR (EMAIL,'@',1,2)=0 AND INSTR(EMAIL,'@',1,1) != LENGTH(EMAIL)
AND (EMAIL LIKE '%.COM' OR EMAIL LIKE '%.NET' OR EMAIL LIKE '%.KR')
-- MA 2ND
CHECK ( INSTR (EMAIL,'@',1,1)>1 AND INSTR (EMAIL,'@',1,2)=0 AND INSTR(EMAIL,'@',1,1) != LENGTH(EMAIL)
AND SELECT SUBSTR( REVERSE(EMAIL),1, INSTR(REVERSE(EMAIL),'.',1,1)) IN ('MOC.','TEN.','RK.')
SELECT SUBSTR( REVERSE(EMAIL),1, INSTR(REVERSE(EMAIL),'.',1,1)) --SUBSTR(,1, INSTR( REVERSE('PLORE@NATE.COM'),'.',1,1))
FROM DUAL;
SELECT * FROM TBL_EMP;
--F35
SELECT B.COLUMN_NAME, A.CONSTRAINT_TYPE,A.CONSTRAINT_NAME,A.SEARCH_CONDITION,A.STATUS
FROM USER_CONSTRAINTS A JOIN USER_CONS_COLUMNS B
ON A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
WHERE A.TABLE_NAME = 'TBL_EMP';
--F36
SELECT * FROM USER_INDEXES
WHERE TABLE_NAME = 'TBL_EMP';
SELECT *
FROM USER_IND_COLUMNS
WHERE TABLE_NAME = 'TBL_EMP';
-- F37
INSERT INTO TBL_EMP VALUES (0001,'BOSS','8204301234567','PLORE@NATE.COM',0001,10);
INSERT INTO TBL_EMP VALUES (0002,'JAP','7801242345678','YOON@TAEK.NET',0001,10);
INSERT INTO TBL_EMP VALUES (0003,'NONO','4608061468520','RIPMAN@TOHAVEN.KR',0002,10);
INSERT INTO TBL_EMP VALUES (0004,'BMD','4112191181818','MADCOW@2MB.JAP',0002,10);
--F38
SELECT * FROM TBL_EMP;
--F39
-------
댓글 없음:
댓글 쓰기