SELECT
email,
decode(instr(email,'@'),8,(replace(email,substr(email,1,7),'???????'))
,7
,(replace(email,substr(email,1,7),'??????'))
,5
,(replace(email,substr(email,1,4),'????'))
)"EMAIL)?"
,HPAGE
,DECODE(INSTR(HPAGE,'.',1,2)-(INSTR(HPAGE,'.',1,1)),4
,(replace(HPAGE,substr(HPAGE,INSTR(HPAGE,'.',1,1)+1,3),'***'))
,(replace(HPAGE,substr(HPAGE,INSTR(HPAGE,'.',1,1)+1,5),'*****'))
)"HPAGE_*"
FROM PROFESSOR
WHERE HPAGE IS NOT NULL;
SELECT EMPNO,
ENAME,
COMM,
CASE
WHEN NVL(COMM,0) > 0 THEN '์๋น : '||NVL(COMM,0)
WHEN COMM IS NULL THEN 'ํด๋น์ฌํญ ์์'
WHEN NVL(COMM,0) = 0 THEN '์๋น์์'
END "COMM_TEXT"
FROM EMP;
SELECT
NAME,
HEIGHT,
RANK() OVER(ORDER BY HEIGHT DESC)"RANK",
DENSE_RANK() OVER(ORDER BY HEIGHT DESC)"RANK2",
ROW_NUMBER() OVER(ORDER BY HEIGHT DESC)"RANK3"
FROM
STUDENT
WHERE HEIGHT >= 170;
SELECT NAME,
JUMIN,
DEPTNO1,
DECODE(SUBSTR(JUMIN,7,1),1,'M','F')"MF",
WEIGHT,
SUM(WEIGHT)OVER(PARTITION BY DEPTNO1, SUBSTR(JUMIN,7,1) ORDER BY WEIGHT DESC) "TOTAL"
FROM
STUDENT;
SELECT SUBSTR(EMAIL,INSTR(EMAIL,'@')+1)"DOMAIN",
COUNT(*)"EA",
SUM(COUNT(*)) OVER()"SUM_DOMAIN",
COUNT(*)/SUM(COUNT(*))OVER()*100"%"
FROM PROFESSOR
group by SUBSTR(EMAIL,INSTR(EMAIL,'@')+1)
ORDER BY SUBSTR(EMAIL,INSTR(EMAIL,'@')+1);
SELECT NAME,
TEL,
TO_CHAR(PAY,'999,999,999')"PAY",
TO_CHAR(SUM(PAY)OVER(PARTITION BY SUBSTR(TEL,1,INSTR(TEL,')')-1)),'999,999,999')"TOTAL_AREA",
ROUND(PAY/SUM(PAY)OVER(PARTITION BY SUBSTR(TEL,1,INSTR(TEL,')')-1))*100,2) "RATIO(%)"
FROM EMP2
GROUP BY NAME,TEL,PAY;
CREATE TABLE PROFESSOR2
(PROFNO NUMBER(8)
,NAME VARCHAR2(30)
,ID VARCHAR2(20)
,POSITION VARCHAR2(50)
,PAY NUMBER(5)
,HIREDATE DATE
,BONUS NUMBER(5)
,DEPTNO NUMBER(3)
,EMAIL VARCHAR2(100)
,HPAGE VARCHAR2(100)
);
CREATE TABLE PROFESSOR3
AS
SELECT PROFNO
, NAME
, EMAIL FROM PROFESSOR;
ALTER TABLE PROFESSOR3
RENAME COLUMN CARD_YN TO CHECK_CARD_YN;
ALTER TABLE PROFESSOR3
RENAME COLUMN CARD_YN TO CHECK_CARD_YN;
ALTER TABLE PROFESSOR3
DROP COLUMN CHECK_CARD_YN;
ALL_XXXX
: ์ ์ํ ๊ณ์ ์ ์๊ด์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด ์ ๋ณด
(ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฐ์ฒด ๋๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฐ์ฒด ์ค ์ฌ์ฉ ํ๊ฐ๋ฅผ ๋ฐ์ ๊ฐ์ฒด)
USER_XXXX
: ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฐ์ฒด ์ ๋ณด
DBA_XXXX
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ๋ฅผ ์ํ ์ ๋ณด(๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๊ถํ์ ๊ฐ์ง SYSTEM, SYS ์ฌ์ฉ์๋ง ์ด๋ ๊ฐ๋ฅ)
SELECT * FROM dba_tablespaces;
๋ฑ๋ฑ์ ๋ณผ์์์
SELECT * FROM USER_TABLES;
-ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์์ฑํ๋ฉด ์ ์๋ ์ฉ๋๋งํผ ๋ฏธ๋ฆฌ ํ๋ณดํ ํ ์ด๋ธ์คํ์ด์ค๊ฐ ์์ฑ
-๊ฒ์ํ ํ ์ด๋ธ
๋ธ๋ก<์ต์คํ
ํธ<์ธ๊ทธ๋จผํธ < ๋ฐ์ดํฐ์คํ์ด์ค
(๋
ผ๋ฆฌ ๋จ์์ ๊ท๋ชจ)
๋ธ๋ก
๋ฐ์ดํฐ ํ์ผ I/O์ ๊ฐ์ฅ์์ ๋จ์
DB๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ์ต์ ์ ์ฅ ๊ณต๊ฐ์ผ๋ก ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ
์ต์คํ
ํธ
์ต์คํ
ํธ๋ ์ฌ๋ฌ ์ฐ์์ ์ธ ๋ธ๋ก์ผ๋ก ํ๋์ ์ธ๊ทธ๋จผํธ์ ํ ๋น๋ ๊ณต๊ฐ์ ๋งํ๊ธฐ๋ ํ๋ค.
๊ฐ ํ
์ด๋ธ์ ๋ํด ํ๋ ์ด์์ ์ต์คํ
ํธ๊ฐ ๋ชจ์ธ ๊ฒ
์ธ๋ฑ์ค์ ๋ํด์๋ ํ๋์ด์์ ์ต์คํ
ํธ๊ฐ ๋ชจ์ธ ๊ฒ
CREATE TABLESPACE storm
DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data.dbf'
SIZE 100M autoextend on next 10M maxsize 500M
DEFAULT STORAGE
(
INITIAL 10K
NEXT 10K
MINEXTENTS 2
MAXEXTENTS 50
PCTINCREASE 50
);
DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data.dbf'
: ํ
์ด๋ธ์คํ์ด์ค๋ฅผ ์ ์ฅํ ๋ฐ์ดํฐ ํ์ผ์ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ๊ฒฝ๋ก์ง์
SIZE 100M
: ๊ธฐ๋ณธ ํ
์ด๋ธ์คํ์ด์ค ์ฌ์ด์ฆ 100M๋ก ์ง์ ํจ
autoextend
: ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ ์๋์ผ๋ก ํ์ฅ
(SYSTEM ๊ณ์ ์์ ์คํ)
CREATE USER [์ฌ์ฉ์ ๊ณ์ ]
IDENTIFIED BY [๋น๋ฐ๋ฒํธ]
DEFAULT TABLESPACE [๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ํ
์ด๋ธ ์คํ์ด์ค ์ด๋ฆ]
TEMPORARY TABLESPACE [์์๋ก ์ฌ์ฉํ ๊ธฐ์ต๊ณต๊ฐ](์์ ํ
์ด๋ธ์คํ์ด์ค์ด๋ฆ์ด ๋ ์๊ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ)
QUOTA [์ฉ๋] ON [ํ
์ด๋ธ์คํ์ด์ค๋ช
];
์์
ALTER DATABASE DATAFILE
'๋ฐ์ดํฐ ํ์ผ๊ฒฝ๋ก'
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
: ์๋ ํ์ฅ 100M ์ต๋ ๊ณต๊ฐ์ ์ ์ฝ ์์
ALTER TABLESPACE STORM ADD DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\app_data2.dbf' SIZE 50M;
: ์์ ๋ฐ์ดํฐ๊ฐ ๊ฝ์ฐจ๋ฉด 2๋ฒ ํ์ผ๋ก ์ด๋
๐ ํ ์ด๋ธ ์คํ์ด์ค๋ฅผ ์ค์ ํ์ง ์๊ณ ํ ์ด๋ธ์ ๋ง๋ค๋ฉด ์คํค๋ง ์์ฑ ์ ์ ์ default tablespace์ ์์ฑ์ด ๋๊ณ , ํด๋น ๋ํดํธ ํ ์ด๋ธ ์คํ์ด์ค๊ฐ ์์ฉ๊ฐ๋ฅํ ์์ญ๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์์๋ค.
--์ ์ ๊ถํ ๋ถ์ฌ
GRANT CREATE SESSION TO TEST1;
๊ทธ๋ฌ๋ ์์ ์ฝ๋๋ง ์ ๋ ฅํ๊ณ ํ ์ด๋ธ ์์ฑํ๊ณ ์ ํ๋ฉด ํ ์ด๋ธ ์์ฑ์ด ์๋๋๊ฑธ ํ์ธํ ์์์. ๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋?
ํ ์ด๋ธ๋ ๊ถํ์ ์ฃผ๋ฉด ๊ฐ๋ฅํ
--ํ
์ด๋ธ ์์ฑ๊ถํ ๋ถ์ฌ
GRANT CREATE TABLE TO TEST1;
-- ๊ถํ ํด์
REVOKE CREATE TABLE FROM TEST1;
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'TEST1';(๊ถํ์ ๋ถ์ฌ๋ฐ์ ํ
์ด๋ธ๋ช
)
NOT NULL(NN)
NULL ์๋จ(ํ๋ฒ์ ํ์ฉํ๋, ๋๋ฒ๋ถํฐ๋ ์๋จ)(ํ์์
๋ ฅ์ฌํญ)
CHECK(CK)
์
๋ ฅ๋ฒ์์ ์ง์ ์ง์ ํด ์ฃผ๋ ๊ธฐ๋ฅ
(์ฃผ์ด์ง ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฐ๋ง ์
๋ ฅ๊ฐ๋ฅ)
UNQUE
์ค๋ณต์ฑ ๋ฐฐ์ , ์ฆ '์ ์ผํ ๊ฐ'์ผ๋ก ์กด์ฌํด์ผํจ.
PRIMARY KEY(PK)
NOT NULL+UNIQE๋ก, ํ
์ด๋ธ์์ ๋ํ๋๋ ์ปฌ๋ผ
๋ณดํต ์ค์ํ ๋ฐ์ดํฐ๋ PK๋ก ์ค์ ํจ
(PK๋ก ํ์ง ์์ผ๋ฉด ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์์๊ธฐ์ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์์)
FOREIGN KEY
์ฐธ์กฐํ๋ ํ
์ด๋ธ์์ ์กด์ฌํ๋ ๊ฐ๋ง ์ฌ์ฉ๊ฐ๋ฅ
๋ง์ฝ์ ์ฐธ์กฐํ๋ ํ
์ด๋ธ์ ํด๋น๋๋ ๊ฐ์ด ์์๋ ์ค๋ฅ๊ฐ ๋ ์์์
์ค๋ณต์ ์ผ๋ก ์ ์ฉ๊ฐ๋ฅ
CREATE TABLE NEW_EMP2
(NO NUMBER(4) PRIMARY KEY
,NAME VARCHAR2(20) NOT NULL
,JUMIN VARCHAR2(13) NOT NULL UNIQUE
,LOC_CODE NUMBER(1) CHECK(LOC_CODE<5)
,DEPTNO VARCHAR2(6) REFERENCES DEPT2(DCODE)
);
ALTER TABLE NEW_EMP2
ADD CONSTRAINT NEW_EMP2_NAME_UK UNIQUE(NAME);
-- NEW_EMP2_NAME_UK๋ EMP2์ ๋ค์์ UK๋ฅผ ๊ฑธ์๋ค๋ผ๊ณ ์๋ฏธ ๋ถ์ฌํ๋๊ฑฐ์(์๊ธฐ๊ฐ ์์์ ์์ฑํ๋ ๋ถ๋ถ์)
์ถ๊ฐ๋จ์ ํ์ธ ํ ์์์
ALTER TABLE NEW_EMP2
MODIFY(LOC_CODE CONSTRAINT NEW_EMP2_LOC_CODE_NN NOT NULL);
-- NEW_EMP2_LOC_CODE_NN๋ LOC์นผ๋ผ์ NN์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ค๋ ๋ป
๊ทผ๋ฐ ๋ณด๋ฉด ๋ณ๊ฒฝ์ด ๋๋๊ฒ ์๋๋ผ ์ถ๊ฐ๋จ์ ํ์ธ ํ ์์๋ค.(๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์กด์ฌํจ)
๊ทธ ๋ง์ ์ญ์ ์ฝ๋๊ฐ ๋ฐ๋ก ์กด์ฌํจ. ๊ทผ๋ฐ ๊ตณ์ด ๋ฐ์ดํฐ ์ญ์ ํ๊ณ ์ถ๊ฐํ๊ธฐ ๊ท์ฐฎ์ผ๋๊น ๋ณดํต์ ํ ์ด๋ธ์ ์ญ์ ํ๊ณ (DROP TABLE ํ ์ด๋ธ๋ช ;) ๋ค์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ํ ์ด๋ธ์ ๋ค์๋ง๋๋๊ฒ ํจ์จ์ ์
CREATE TABLE T_ENABLE2
AS
SELECT * FROM T_ENABLE;
๋ณด๋ฉด PK๋ก ํ ๋ฐ์ดํฐ๋ ๋ณต์ฌ๋์ง ์์
์๋
INSERT INTO T_ENABLE2 VALUES(3,'');
ํ๋ฉด ์ค๋ฅ ๋ฐ์(์ด์ : NULL๊ฐ์ด๋๊น) ํ๋๋ฐ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉ๋ชปํ๊ฒ ๋ง๋ค์ด๋ด
ALTER TABLE T_ENABLE2
DISABLE CONSTRAINT SYS_C007110;
-- ์ ์ฝ์กฐ๊ฑด ์ฌ์ฉ๋ชปํ๊ฒ ๋ณ๊ฒฝ
INSERT INTO T_ENABLE2 VALUES(3,''); -- ์คํ
DELETE FROM T_ENABLE2
WHERE NO=3;
--๊ธฐ๋ณธ 3๋ฒ ๋ฐ์ดํฐ ์ญ์
2.ENABLE (์ ์ฝ์กฐ๊ฑด ๋ค์ ์ด๋ฆฌ๊ธฐ)
ALTER TABLE T_ENABLE2
ENABLE VALIDATE CONSTRAINT SYS_C007110; --์คํ๋จ(๊ธฐ์กด 3๋ฒ ๋ฐ์ดํฐ ์ญ์ ์ํ๋ฉด ์ค๋ฅ๋จ
--์ ์ฝ์กฐ๊ฑด ์ญ์
ALTER TABLE T_ENABLE2
DROP CONSTRAINT SYS_C007110;
(์กฐ๊ธ ๋ณต์กํ๊ธด ๋ณต์กํ๋ฐ...
SELECT COLUMN_NAME
FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'EMP'
AND CONSTRAINT_TYPE = 'P');
ํ๋ฒ์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ์ฐพ์ ์ ์๋ค.(์๋๋ผ๋ฉด ์ ์ ํ ์ด๋ธ ์ด์ด์ ํด๋น ํ ์ด๋ธ ์ด๊ณ ์ ์ฝ ์กฐ๊ฑด ์ด๊ณ ํด๋น ์ปฌ๋ผ ๋ฐ์ดํฐ ๋๋ฌ์ผ์ง ๋ฐ์ดํฐ ํ์ธ์ด ๊ฐ๋ฅ)
SELECT COLUMN_NAME
FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'EMP'
AND CONSTRAINT_TYPE = 'R');
CREATE TABLE STUDENT2(
STU_ID CHAR(5) CONSTRAINT STUDENT_STU_ID_PK PRIMARY KEY
-- CONSTRAINT STUDENT_STU_ID_CK CHECK(LENGTH(STU_ID) = 5),
CONSTRAINT STUDENT_STU_ID_CK CHECK(LENGTH(TRIM(' ' FROM STU_ID)) = 5),
STU_NAME VARCHAR2(10) CONSTRAINT STUDENT_STU_NAME_NN NOT NULL
);
ํ ์ด๋ธ ์์ฑํจ.
INSERT INTO STUDENT2 VALUES('A1','AA'); -- ์คํ ์๋จ
INSERT INTO STUDENT2 VALUES('A01','AA'); -- ์คํ ์๋จ
INSERT INTO STUDENT2 VALUES('A001','AA'); -- ์คํ ์๋จ
INSERT INTO STUDENT2 VALUES('A0001','AA'); -- ์คํ๋จ(5์ ๋ง์ถ๊ธฐ)
INSERT INTO STUDENT2 VALUES('A00001','AA'); -- ์คํ ์๋จ
CREATE TABLE SUBJECT2 (
SUB_ID NUMBER(3) CONSTRAINT SUBJECT2_SUB_ID_PK PRIMARY KEY,
SUB_NAME VARCHAR2(20) CONSTRAINT SUBJECT2_SUB_NAME_NN NOT NULL
);
--ํ
์ด๋ธ ์์ฑ
INSERT INTO SUBJECT2 VALUES(100,'A1');
--๋ฐ์ดํฐ ์ฝ์
CREATE TABLE SCORE2(
STU_ID CHAR(5) CONSTRAINT SCORE2_STU_ID_NN NOT NULL,
SUB_ID NUMBER(3) CONSTRAINT SCORE2_SUB_ID_NN NOT NULL,
SCORE NUMBER(3) CONSTRAINT SCORE2_SCORE_NN NOT NULL,
GRADE CHAR(1) CONSTRAINT SCORE2_GRADE_CK CHECK(GRADE IN('A','B','C','D','F')),
CONSTRAINT SCORE2_PK PRIMARY KEY(STU_ID, SUB_ID),
CONSTRAINT SCORE2_FK1 FOREIGN KEY (STU_ID) REFERENCES STUDENT2(STU_ID),
CONSTRAINT SCORE2_FK2 FOREIGN KEY (SUB_ID) REFERENCES SUBJECT2(SUB_ID)
);
์ฐธ๊ณ ํ ๋ค๋ฅธ ๋ถ๋ค์ ๋ธ๋ก๊ทธ ๋๋ ๊ด๋ จ ๋งํฌ๋ค