HOME   ·Î±×ÀΠ  ȸ¿ø°¡ÀÔ
    
ȸ¿ø°¡ÀÔ
ºñ¹Ð¹øÈ£ ã±â ÀÚµ¿·Î±ä
ÀÌÀü°Ô½ÃÆÇ
   free_board
   °Ç°­°Ô½ÃÆÇ
   ¿À¶óŬDB
   Linux
   HTML/javascript
   Áú¹®°ú ´ä
È£¼­±â
   À̹ÌÁö°Ô½ÃÆÇ  
   °Ç°­°Ô½ÃÆÇ  
   À½¾ÇÀÚ·á  
   ¼ºÁØÀÌ °Ô½ÃÆÇ  
[ÀϹÝ] ¿À¶óŬ È°¿ë¸í·É [ÀÎÅÍ³Ý ÂüÁ¶ÀÚ·á ]
  È£¼® ´Ô²²¼­ ¾´ ±ÛÀÔ´Ï´Ù - 220.¢½.198.136 ÀÐÀ½:4369  
http://blog.naver.com/kwangii/150006612263
 
 
[10] Creating and Managing Tables (DDL)

1. Database Objects

TABLE, VIEW, SEQUENCE, INDEX, SYNONYM

 

2. Object Naming Rule

- ¹Ýµå½Ã ù±ÛÀÚ´Â ¹®ÀÚÀ̾î¾ß ÇÑ´Ù.

- ±æÀÌ´Â 1 ~ 30 ±ÛÀÚ ÀÌ´Ù.

- A-Z, a-z, 0-9, _, $, # ¸¸À» »ç¿ëÇÒ¼ö ÀÖ´Ù.

- µ¿ÀÏÇÑ Object¸íÀÌ Á¸ÀçÇؼ­´Â ¾ÈµÈ´Ù.(´Ù¸¥ user°¡ ¼ÒÀ¯ÇÑ table°ú´Â Áߺ¹°¡´É)

- ¿À¶óŬ ¼­¹öÀÇ ¿¹¾à¾î´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.

 

3. CREATING TABLES( create ±ÇÇÑ, ÀúÀ念¿ªÀÌ ÇÊ¿ä )

CREATE [GLOBAL TEMPORARY] TABLE [schema.]table

( column datatype [DEFAULT expr] [,...] );

*GLOBAL TEMPORARY : Àӽà table·Î ÁöÁ¤, Á¤ÀÇ´Â ¸ðµç ¼¼¼Ç¿¡¼­ º¼ ¼ö ÀÖÁö¸¸,

µ¥ÀÌÅÍ´Â µ¥ÀÌÅ͸¦ »ðÀÔÇÏ´Â ¼¼¼Ç¿¡¼­¸¸ º¼ ¼ö ÀÖ´Ù.

* DEFAULT °ª: ´Ù¸¥ ¿­ÀÇ À̸§À̳ª, Àǻ翭Àº À߸øµÈ °ªÀÌ´Ù.

* CREATE TABLE dept

( deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13),

dymd DATE DEFAULT SYSDATE )

 

4. Data Dictionary

USER_ : »ç¿ëÀÚ°¡ ¼ÒÀ¯ÇÏ´Â °´Ã¼¿¡ ´ëÇÑ Á¤º¸

ALL_ : »ç¿ëÀÚ°¡ ACCESS ÇÒ ¼ö ÀÖ´Â ¸ðµç TABLE ¿¡ ´ëÇÑ Á¤º¸

DBA_ : DBA ·ÑÀ» ÇÒ´ç ¹ÞÀº »ç¿ëÀÚ¸¸ ACCESS ÇÒ ¼ö ÀÖ´Ù.

V$_ : µ¿Àû ¼º´É(Performance) ºä, DB SERVER ¼º´É ¹× Àá±Ý¿¡ °üÇÑ Á¤º¸.

 

* DICT Å×ÀÌºí ¾È¿¡ ¸ðµç data dictionary Á¤º¸°¡ ÀÖ´Ù.

>> À¯Àú°¡ ¼ÒÀ¯ÇÑ °³º° °´Ã¼ À¯ÇüÀ» º½.

SELECT * FROM USER_TABLES

>> À¯Àú°¡ ¼ÒÀ¯ÇÑ TABLE, VIEW, µ¿ÀǾî, ½ÃÄö½º¸¦ º½.

SELECT DISTINCT object_type

FROM USER_OBJECTS ( USER°¡ ACCESS ÇÒ ¼ö ÀÖ´Â ALL_OBJECTS )

>> User°¡ ¼ÒÀ¯ÇÑ TABLEÀ» ¼³¸í.

SELECT * FROM USER_CATALOG

--> SELECT * FROM cat À̶ó°í ½áµµ µÈ´Ù.

>> ¸ðµç Å×À̺í À̸§º¸±â SELECT * FROM TAB

>> Ä÷³ Á¤º¸ º¸±â USER_TAB_COLUMNS

 

5. Data Types

VARCHAR2(size) : Variable-length character data (1 ~ 4000 bytes)

CHAR(size) : Fixed-length character data (1 ~ 2000 bytes)

NUMBER(p,s) : p - precision, s - scale

DATE : B.C.4712-01-01 ~ A.D.9999.12.31

LONG : Variable-length character data (2GB)

- ÇÑ table ´ç Çϳª - constraints »ç¿ë ¸øÇÔ

- order by, group by¿¡¼­ »ç¿ë¸øÇÔ - ¼­ºêÄõ¸®¿¡¼­ »ç¿ëÇÒ ¶§ not copy

LONG RAW : Raw binary data of variable length up to 2 gigabytes

RAW(size) : 2000 byte

CLOB : Single-byte character data up to 4 gigabytes

BLOB : Binary data up to 4 gigabytes

BFILE : binary data stored in an external file; up to 4 gigabytes

 

6. Subquery¸¦ »ç¿ëÇؼ­ Å×ÀÌºí º¹»çÇϱâ(»õ·Î¿î table ÀÇ datatype Á¤ÀÇ´Â ÇÊ¿ä¾ø´Ù)

CREATE TABLE dept30

AS

SELECT empno, ename, sal*12 ANNSAL, hiredate

FROM emp

WHERE deptno = 30

 

* computed fieldÀ϶§ ¹Ýµå½Ã Ä÷³ alias¸¦ Áà¾ß ÇÑ´Ù. (ANNSAL)

* computed Ä÷³À¸·Î ¸¸µé¾îÁø Ä÷³ ŸÀÔ NUMBERÀÏ ¶§ ±âÁ¸ÀÇ ÀÚ¸´¼ö´Â »ç¶óÁö°í

ÃÖ´ëÀÚ¸®¼ö·Î ÀâÈù´Ù.

* column, type, data ¸ðµç°ÍÀÌ º¹»çµÈ´Ù.(NOT NULL constraints ¸¸ »ó¼ÓµÈ´Ù.)

* key constraint´Â Á¤ÀǵÇÁö ¾Ê´Â´Ù.

* WHEREÁ¶°ÇÀ» false°¡ µÇ°Ô ¸¸µé¸é µ¥ÀÌÅÍ´Â º¹»çµÇÁö ¾Ê´Â´Ù.

7. Å×ÀÌºí¿¡ Ä÷³ Ãß°¡ Çϱâ

ALTER TABLE dept30

ADD ( job VARCHAR2(9) )

-> ¿­À» Ãß°¡ÇÒ ¶§ ¸ðµç ÇàÀº Ãʱ⿡ null °ªÀ» °¡Áø´Ù.( not null Á¦¾àÁ¶°Ç X )

8. Å×ÀÌºí¿¡ ÀÖ´Â ±âÁ¸ Ä÷³ ¼öÁ¤Çϱâ

ALTER TABLE dept30

MODIFY ( ename VARCHAR2(15) )

 

* Á¦¾à»çÇ×.

- ¼ýÀÚŸÀÔ¿¡¼­ ÀÚ¸´¼ö¸¦ ´Ã¸®´Â°Ç °¡´ÉÇÏ´Ù.

- ¼ýÀÚŸÀÔ¿¡¼­ ÀÚ¸´¼ö¸¦ ÁÙÀ϶§´Â ¸ðµç data°¡ nullÀ̰ųª µ¥ÀÌÅÍ°¡ ÇѰǵµ ¾øÀ» ¶§¸¸ °¡´ÉÇÏ´Ù.

- char <--> varchar2 ·Î ¹Ù²Ü¶§´Â ¸ðµç data°¡ nullÀ̰ųª µ¥ÀÌÅÍ°¡ ÇѰǵµ ¾øÀ» ¶§¸¸ °¡´ÉÇÏ´Ù.

- default°ªµµ ¹Ù²Ü ¼ö ÀÖ´Ù.(±âÁ¸ default°ªÀº À¯ÁöµÈ´Ù.)

- column name Àº modify °¡ ¾ÈµÈ´Ù.

=> ¿­À» Ãß°¡(ADD), ¼öÁ¤(MODIFY)ÇÒ ¼ö ÀÖÁö¸¸ table¿¡¼­ »èÁ¦ÇÒ ¼ö ¾ø´Ù.

<oracle 8i °¡´É>

1.> ALTER TABLE table SET UNUSED (column);

OR

ALTER TABLE table SET UNUSED COLUMN column;

2.>ALTER TABLE table DROP UNUSED COLUMNS;

 

9. DROP TABLE

DROP TABLE dept30

 

10. OBJECT À̸§ ¹Ù²Ù±â

RENAME dept TO department

 

11. TRUNCATE TABLE

TRUNCATE TABLE department

* ROLLBACKÀ» Àý´ë·Î ÇÒ ¼ö ¾ø´Ù.

* ·Î±×¾øÀÌ Å×À̺íÀÇ Àüü µ¥ÀÌÅÍ°¡ »èÁ¦µÇ°í COMMITÀÌ µÈ´Ù.

* ÀúÀå°ø°£À» ÇØÁ¦( DELETE ¹®Àº ÇØÁ¦ÇÒ ¼ö ¾ø´Ù.)

12. Å×ÀÌºí¿¡ ÁÖ¼®¹® Ãß°¡Çϱâ

COMMENT ON TABLE emp

IS 'Employee Information'

 

13. Ä÷³¿¡ ÁÖ¼®¹® Ãß°¡Çϱâ

COMMENT ON TABLE emp COLUMN emp.ename

IS 'Employee Name'

 

14. ÁÖ¼®¹® »èÁ¦Çϱâ

COMMENT ON TABLE emp IS ' '

 

15. ÁÖ¼®¹®À» º¼¼öÀÖ´Â data dictionary

* Column

ALL_COL_COMMENTS

USER_COL_COMMENTS

* Table

ALL_TAB_COMMENTS

USER_TAB_COMMENTS

 

 

[11] Including Constraints

1. ¿À¶óŬÀÇ Constraint Type

NOT NULL : null value¸¦ Çã¿ëÇÏÁö ¾ÊÀ½.

UNIQUE : À¯ÀÏÇÑ °ªÀ» °¡Áö¸é¼­ nullµµ Çã¿ëÇÑ´Ù.

PRIMARY KEY : NOT NULL, UNIQUE, TABLE´ç 1°³ ¼³Á¤, ÂüÁ¶ ´çÇÔ

FOREIGN KEY : Primary¿¡ ¿¬°áµÇ¾î À־ Primary¿¡ ÀÖ´Â °ªµé¸¸ °®°í ÀÖ´Ù.(PK,UK ÂüÁ¶)

CHECK : Á¤ÇØÁø °ª ÀÌ¿ÜÀÇ °ÍÀÌ µé¾î¿À¸é Error

 

2. Constraint ±ÔÄ¢

- ConstraintÀ» »ý¼ºÇÒ ¶§ À̸§À» ÁÖÁö ¾ÊÀ¸¸é ¿À¶óŬ¼­¹ö´Â SYS_Cn À̶ó°í À̸§À» ÀÚµ¿ »ý¼ºÇÑ´Ù.

- Column level °ú Table level·Î Constraint¸¦ Á¤ÀÇÇÑ´Ù.

- constraint¸¦ º¼ ¼ö ÀÖ´Â Data Dictionary´Â

USER_CONSTRAINTS,USER_CONS_COLUMNS ÀÌ´Ù.

 

3. Constraint Á¤ÀÇ

* Column Level

column [CONSTRAINT constraint_name] constraint_type,

* Table Level

column,...

[CONSTRAINT constraint_name] constraint_type (column, ...),

(column, ...),

* not nullÀº ¹Ýµå½Ã column level·Î Á¤ÀǸ¦ ³»·Á¾ß ÇÑ´Ù.

 

4. NOT NULL Constraint : column level

 

5. UNIQUE Constraint : index ÀÚµ¿ »ý¼º

CREATE TABLE dept (

deptno NUMBER(2),

dname VARCHAR2(14),

loc VARCHAR2(13),

CONSTRAINT dept_dname_uk UNIQUE (dname) )

 

6. PRIMARY KEY Constraint

CREATE TABLE dept (

deptno NUMBER(2),

dname VARCHAR2(14),

loc VARCHAR2(13),

CONSTRAINT dept_dname_uk UNIQUE (dname) ,

CONSTRAINT dept_deptno_pk PRIMARY KEY (deptno) )

 

7. FOREIGN KEY Constraint

CREATE TABLE emp (

empno NUMBER(4),

ename VARCHAR2(10) [CONSTRAINT epm_ename_nn] NOT NULL,

job VARCHAR2(9),

mgr NUMBER(4),

hiredate DATE,

sal NUMBER(7,2),

comm NUMBER(7,2),

deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)

REFERENCES dept (deptno) )

--> dept.deptno¸¦ emp.deptno°¡ Foreign key·Î »ç¿ëÇÏ°Ú´Ù´Â ¶æ.

* column level·Î Á¤ÀÇÇÒ ¶§´Â...(FOREIGN KEY Å°¿öµå´Â »ý·«)

deptno NUMBER(7,2) NOT NULL

CONSTRAINT emp_deptno_fk REFERENCES dept (deptno),

* ON DELETE CASCADE

Foreign key·Î ¿¬°áµÈ parent data°¡ »èÁ¦µÉ ¶§ child dataµµ ¸ðµÎ »èÁ¦ µÇ°Ô ¸¸µç´Ù.

 

8. CHECK Constraint

..., deptno NUMBER(2),

CONSTRAINT emp_deptno_ck

CHECK (deptno BETWEEN 10 AND 99), ...

--> deptnoÀÇ °ªÀº 10¿¡¼­ 99 »çÀÌ¿¡ ÀÖ´Â °ªµé¸¸ ÀÔ·ÂÀÌ °¡´ÉÇÏ´Ù´Â ¶æ.

* CURRVAL, NEXTVAL, LEVEL, ROWNUMµî Pseudocolumn¿£ Çã¿ëµÇÁö ¾Ê´Â´Ù.

* SYSDATE, UID, USER, USERENV ÇÔ¼öµéÀ» È£ÃâÇÒ¼ö ¾ø´Ù.

 

* Á¦¾àÁ¶°ÇÀ» Ãß°¡(ADD), »èÁ¦(DROP)ÇÒ ¼ö ÀÖÁö¸¸ ¼öÁ¤ÇÒ ¼ö´Â ¾ø´Ù.

* Á¦¾àÁ¶°ÇÀ» ¼³Á¤(ENABLE) ¶Ç´Â ÇØÁ¦(DISABLE)ÇÕ´Ï´Ù.

* MODIFT ÀýÀ» »ç¿ëÇÏ¿© NOT NULL Á¦¾àÁ¶°ÇÀ» Ãß°¡ÇÕ´Ï´Ù.

 

9. ADD Constraint

*ALTER TABLE table_name

ADD [CONSTRAINT constraint] type (column),

ALTER TABLE emp

ADD CONSTRAINT emp_mgr_fk

FOREIGN KEY(mgr) REFERENCES emp(empno)

* Constraint ¼öÁ¤Àº ÇÒ ¼ö ¾ø´Ù.

* not null constraintÀÏ °æ¿ì ADD·Î ÇÏÁö ¾Ê°í MODIFY·Î ÇÑ´Ù.

(±âÁ¸ Çà¿¡ null data °ªÀÌ ¾ø¾î¾ß ÇÑ´Ù.)

 

10. DROP Constraint

*ALTER TABLE table_name

DROP (PRIMARY KEY| UNIQUE (column) |

CONSTRAINT constraint) [CASCADE];

ALTER TABLE emp

DROP CONSTRAINT emp_mgr_fk

* Primary¸¦ »èÁ¦ÇÒ ¶§ Foreign Key°ü°è(Á¾¼ÓµÈ Á¦¾àÁ¶°Ç)ÀÇ Constraint±îÁö DROP ÇÏ°í ½ÍÀ¸¸é...

ALTER TABLE dept

DROP PRIMARY KEY CASCADE

* CASCADE CONSTRAINTS ÀýÀº DROP COLUMN Àý°ú ÇÔ²² »ç¿ëµË´Ï´Ù.

ALTER TABLE test1 DROP (pk) CASCADE CONSTRAINTS;

11. DISABLE CONSTRAINT(CREATE TABLE, ALTER TABLE ¹®¿¡¼­ »ç¿ë)

: ENABLE CONSTRAINT Çϱâ Àü±îÁö ½ÇÇàÀ» ¸ØÃá´Ù.

ALTER TABLE emp

DISABLE CONSTRAINT emp_empno_pk CASCADE

 

12. ENABLE CONSTRAINT(CREATE TABLE, ALTER TABLE ¹®¿¡¼­ »ç¿ë)

ALTER TABLE emp

ENABLE CONSTRAINT emp_empno_pk

* ENABLE ÇÒ ¶§´Â... ¸ðµç data¸¦ üũÇϱ⠶§¹®¿¡ ½Ã°£ÀÌ ¿À·¡ °É¸°´Ù.

 

*

13. USER_CONSTRAINTS Data Dictionary

SELECT constraint_name, constraint_type, search_condition

FROM user_constraints

WHERE table_name = 'EMP'

 

--------------------------------------------------------

CONSTRAINT_NAME C SEARCH_CONDITION

------------------------- - --------------------------

SYS_C00674 C EMPNO IS NOT NULL

SYS_C00675 C DEPTNO IS NOT NULL

EMP_EMPNO_PK P

--------------------------------------------------------

 

14. USER_CONS_COLUMNS Data Dictionary

SELECT constraint_name, column_name

FROM user_cons_columns

WHERE table_name = 'EMP'

--------------------------------------------------------

CONSTRAINT_NAME COLUMN_NAME

EMP_DEPTNO_FK DEPTNO

EMP_EMPNO_PK EMPNO

EMP_MGR_FK MGR

SYS_C00674 EMPNO

SYS_C00675 DEPTNO

--------------------------------------------------------

 

 

[12] Creating Views

* Oracle8ºÎÅÍ´Â View¿¡µµ Data¸¦ °®°í ÀÖÀ» ¼ö ÀÖ´Ù.

* View¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯?

- µ¥ÀÌÅͺ£À̽º access¸¦ Á¦ÇÑÇÑ´Ù.

- º¹ÀâÇÑ Äõ¸®¸¦ ½±°Ô ¸¸µç´Ù.

- µ¥ÀÌÅÍÀÇ µ¶¸³À» Çã¿ëÇϱâ À§ÇØ

- µ¿ÀÏÇÑ µ¥ÀÌÅͷκÎÅÍ ´Ù¾çÇÑ °á°ú¸¦ ¾ò±â À§ÇØ

* view¸¦ ¸¸µé ¶§ ORDER BYÀýÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù.

* Simple View¿¡´Â DML ¹®ÀåÀ» ¼öÇà ÇÒ ¼ö ÀÖÁö¸¸, ÇÔ¼ö ¶Ç´Â µ¥ÀÌÅÍ ±×·ìÀ» Æ÷ÇÔÇÏÁö ¸øÇÑ´Ù.

(º¹ÇÕºä<Complex VIEW> ´Â ÇÔ¼ö ¶Ç´Â µ¥ÀÌÅÍ ±×·ìÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.)

* GROUPÇÔ¼ö, GROUP BYÀý, DISTINCT keywordµîÀ» »ç¿ëÇÑ view¿¡´Â ÇàÀ» delete ÇÒ ¼ö ¾ø´Ù.

* ºä¸¦ »ç¿ëÇÑ µ¥ÀÌÅÍ ¿¢¼¼½º

- USER_VIEWS¿¡¼­ ºä Á¤ÀǸ¦ °Ë»öÇÑ´Ù.(select ¹®ÀÇ ÅؽºÆ®´Â LONG ¿­¿¡ ÀúÀåµÈ´Ù.)

- ºäÀÇ ±âº» Å×ÀÌºí¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» È®ÀÎÇÑ´Ù.

- µ¥ÀÌÅ͸¦ ±âº» Å×ÀÌºí¿¡¼­ °Ë»ö ¶Ç´Â °»½ÅÇÑ´Ù.

1. CREATE VIEW ¹®Àå

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view

[ (alias[, alias]...) ]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

 

OR REPLACE : ¸¸µé·Á°í ÇÏ´Â view°¡ ÀÌ¹Ì Á¸ÀçÇÒ ¶§ recreateÇÑ´Ù.

FORCE : base tableÀÌ Á¸ÀçÇÏÁö ¾Ê¾Æµµ view¸¦ °­Á¦·Î ¸¸µç´Ù.

NOFORCE : base tableÀÌ ¹Ýµå½Ã Á¸ÀçÇؾ߸¸ view¸¦ ¸¸µé ¼ö ÀÖ´Ù.

WITH CHECK OPTION : view¸¦ ¸¸µé ¶§ whereÁ¶°Ç¿¡ ÀÖ´Â value¸¦

View¸¦ ÅëÇؼ­ DML ¹®ÀåÀ¸·Î ¼öÁ¤ÇÏ´Â °ÍÀ» ¸·´Â´Ù.

WITH READ ONLY : view¸¦ ÅëÇؼ­ DML¹®ÀåÀ» ¼öÇàÇÏ´Â °ÍÀ» ¸·´Â´Ù.

 

2. Creating View ¿¹Á¦1

CREATE VIEW empvu10

AS SELECT empno, ename, job

FROM emp

WHERE deptno = 10 ;

--> ÀÌ·¸°Ô ¸¸µé¾îÁø viewÀÇ columnÀ̸§Àº empno, ename, jobÀÌ µÈ´Ù.

3. Creating View ¿¹Á¦2

CREATE VIEW salvu30

AS SELECT empno employee_number, ename name, sal salary

FROM emp

WHERE deptno = 30 ;

--> column alias¸¦ ÁØ employee_number, name, salary°¡ viewÀÇ columnÀ̸§ÀÌ µÈ´Ù.

4. VIEW ¼öÁ¤Çϱâ (OR REPLACE)

CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT empno, ename, job

FROM emp

WHERE deptno = 10 ;

 

5. Complex VIEW

CREATE VIEW detp_sum_vu

(naem, minsal, maxsa, avgsal)

AS SELECT d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)

FROM emp e, dept d

WHERE e.deptno = d.deptno

GROUP BY d.dname ;

 

6. WITH CHECK OPTION »ç¿ë¿¹

CREATE OR REPLACE VIEW empvu20

AS SELECT *

FROM emp

WHERE deptno = 20

WITH CHECK OPTION CONSTRAINT empvu20_ck ;(deptno °¡ 20¸¸ ÀÛ¾÷ °¡´É)

( constraint nameÀ» ÁÖÁö ¾ÊÀ¸¸é SYS_CnÀ¸·Î ¸¸µé¾î Áø´Ù. )

* ¿¹¸¦µé¾î ´ÙÀ½°ú °°Àº update¹®ÀåÀ» ¼öÇàÇϸé error°¡ ³­´Ù.

UPDATE empvu20

SET deptno = 10

WHERE empno = 7788 ;

--> ORA-01402: view WITH CHECK OPTION where-clause violation

 

7. WITH READ ONLY »ç¿ë¿¹

CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT empno, ename, job

FROM emp

WHERE deptno = 10

WITH READ ONLY ;

* ¿¹¸¦µé¾î ´ÙÀ½°ú °°Àº DELETE¹®ÀåÀ» ¼öÇàÇϸé error°¡ ³­´Ù.

DELETE FROM empvu10

WHERE employee_number = 7782 ;

--> ORA-01752: Cannot delete from view without exactly one key-preserved table

 

8. View ¾ø¾Ö±â

DROP VIEW empvu10 ;

 

9. ¸¸µé¾îÁø View¸¦ º¼¶§

SELECT * FROM salvu30 ;

* ÀζóÀÎ view : FROM Àý¿¡ »ç¿ë, °´Ã¼°¡ ¾Æ´Ô.

10. View¸¦ ÅëÇÑ DML ÀÛ¾÷ ¼öÇà¿¡ °üÇÑ ±ÔÄ¢

*ºä°¡ ´ÙÀ½À» Æ÷ÇÔÇÑ °æ¿ì ÇàÀ» Á¦°ÅÇÒ ¼ö ¾ø½¿.

- ±×·ìÇÔ¼ö - GROUP BYÀý - DISTINCT Å°¿öµå - Àǻ翭 ROWNUM Å°¿öµå

*ºä°¡ ´ÙÀ½À» Æ÷ÇÔÇÑ °æ¿ì µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÒ ¼ö ¾ø½¿.

- À§¿¡¼­ ¾ð±ÞµÈ ¸ðµç Á¶°Ç(Á¦°ÅÇÒ ¼ö ¾ø½¿)

- ROWNUM ÀÇ»ç ¿­ : ÇÏÀ§ ÁúÀÇ¿¡¼­ ¹ÝȯµÇ´Â °¡ Çà¿¡ 1¿¡¼­ ½ÃÀÛÇÏ´Â ¼øÂ÷°ªÀ» ÇÒ´ç.

*ºä°¡ ´ÙÀ½°ú °°Àº °æ¿ì µ¥ÀÌÅ͸¦ Ãß°¡ÇÒ ¼ö ¾ø½¿.

- ºä°¡ À§¿¡¼­ ¾ð±ÞÇÑ Æ÷ÇÔÇÏ´Â °æ¿ì.(Á¦°Å, ¼öÁ¤)

- ±âº» Å×ÀÌºí¿¡¼­ ºä¿¡ ÀÇÇØ ¼±ÅõÇÁö ¾ÊÀº ¿­¿¡ NOT NULL Á¦¾à Á¶°ÇÀÌ ÀÖ´Â °æ¿ì.

 

11. "TOP-N" ºÐ¼® ¼öÇà

SELECT [column_list], ROWNUM

FROM (SELECT [column_list] FROM table

ORDER BY TOP-N_column)

WHERE ROWNUM <= N ( where ÀýÀº < ¶Ç´Â <= )

 

[13] Other Database Objects (Sequence, Index, Synonym)

1. Sequence?

- uniqueÇÑ ¼ýÀÚ¸¦ ÀÚµ¿À¸·Î ºÎ¿©ÇÑ´Ù.

- °øÀ¯ °¡´ÉÇÏ´Ù.

- primary key ¼º°ÝÀ» °®´Â´Ù.

- cache ¼³Á¤À» ÇÒ ¼ö Àֱ⠶§¹®¿¡ ºü¸¥ ¼Óµµ¸¦ ³¾ ¼ö ÀÖ´Ù.

 

2. CREATE SEQUENCE ¹®Àå

CREATE SEQUENCE sequence

[INCREMENT BY n] : default 1

[START WITH n] : default 1

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALEU}]

[{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE{] ; : default 20°³ÀÇ cache

 

INCREMENT BY n : n¸¸Å­ Áõ°¡ ÇÑ´Ù.

START WITH n : óÀ½ ½ÃÀÛÇÏ´Â ¼ýÀÚ´Â nÀÌ´Ù.

MAXVALUE n : MAX°ªÀº nÀÌ´Ù.

NOMAXVALUE : MAX°ªÀº ¹«ÇÑ´ë´Ù. (10^27 OR -1) --> default

MINVALUE n : MIN°ªÀº nÀÌ´Ù.

NOMINVALUE : MIN°ªÀº ¹«ÇÑ´ë´Ù. (-(10^26) OR 1 ) --> default

CYCLE | NOCYCLE : MAX³ª MIN°ªÀ¸·Î °¬À»¶§ ´Ù½Ã óÀ½ºÎÅÍ »õ·Î

½ÃÀÛÇÒ °ÇÁö¸¦ ¼³Á¤ÇÑ´Ù. default´Â NOCYCLE

CACHE n | NOCACHE : n¸¸Å­ÀÇ CACHE¸¦ ÁÙ °ÍÀÎÁö¸¦ ¼³Á¤ÇÑ´Ù.

--> default´Â cache 20À¸·Î Àâ´Â´Ù.

3. CREATE SEQUENCE ¿¹Á¦

CREATE SEQUENCE dept_deptno

INCREMENT BY 1

START WITH 91

MAXVALUE 100

NOCACHE

NOCYCLE ;

 

4. USER_SEQUENCES data dictionary

SELECT sequence_name, min_value, max_value, increment_by, last_number

FROM USER_SEQUENCES ;

* last_number´Â ´ÙÀ½¿¡ sequence °¡´É ÇÑ ¼ýÀÚ¸¦ º¸¿©ÁØ´Ù.

 

5. NEXTVAL °ú CURRVAL

NEXTVAL : Sequence°¡ 1°³ Áõ°¡µÈ´Ù.

CURRVAL : ÇöÀç sequence °ªÀ» º¸¿©ÁØ´Ù.

 

* »ç¿ë°¡´É

- SELECT¹®Àå¿¡¼­ SELECT list

- INSERT¹®Àå¿¡¼­ SELECT list, valuesÀý list

- UPDATE¹®Àå¿¡¼­ SETÀý

 

* »ç¿ëºÒ°¡

- ViewÀÇ SELECT list

- SELECT¹®Àå¿¡¼­ DISTINCT keyword

- SELECT¹®Àå¿¡¼­ GROUP BY, HAVING, ORDER BYÀý

- SELECT, DELETE, UPDATE¹®Àå ¾È¿¡ ÀÖ´Â subquery

- CREATE TABLE, ALTER TABLE¹®Àå¿¡¼­ DEFAULT expression

 

* CACHE°¡ 20À¸·Î Á¤ÀÇ ÇßÀ» ¶§...

¨ç INSERT INTO dept

VALUES (dept_deptno.NEXTVAL, ...) --> 1

¨è SELECT last_number FROM user_squences --> 21

¨é SELECT dept_deptno.CURRVAL FROM dual --> 1

¨ê SELECT dept_deptno.NEXTVAL FROM dual --> 2

6. SEQUENCE »ç¿ë¿¹

INSERT INTO dept( deptno, dname, loc )

VALUES (dept_deptno.NEXTVAL, 'MARKETING', 'SAN DIEGO')

--> Áõ°¡µÈ sequence°ªÀÌ deptno¿¡ ÀúÀåµÈ´Ù.

 

* ÇöÀçÀÇ sequence°ªÀ» º¸·Á¸é...

SELECT dept_deptno.CURRVAL FROM dual ;

* SELECT¿¡¼­ sequence°ª Áõ°¡½ÃÅ°±â

SELECT dept_deptno.NEXTVAL FROM dual ;

 

7. SEQUENCE ¼öÁ¤Çϱâ

ALTER SEQUENCE dept_deptno

INCREMENT BY 1

MAXVALUE 999999

NOCACHE

NOCYCLE ;

* sequence¿¡ ´ëÇÑ ALTER privilege¸¦ °®°í ÀÖ¾î¾ß ÇÑ´Ù.

* maxvalue°¡ current valueº¸´Ù ÀûÀ» ¶© ¹Ýµå½Ã dropÇÏ°í re-createÇØ¾ß ÇÑ´Ù.

* START WITH ¹®À» º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.( »èÁ¦ ÈÄ ´Ù½Ã »ý¼º )

8. SEQUENCE Á¦°ÅÇϱâ

DROP SEQUENCE dept_deptno ;

9. INDEX ?

- Retrieve¸¦ »¡¸® Çϱâ À§Çؼ­

- DISK I/O¸¦ ÁÙÀϼö ÀÖ´Ù.

- Å×À̺í°ú´Â µ¶¸³ÀûÀÌ´Ù.

* PRIMARY KEY or UNIQUE constraint »ý¼º½Ã ¿À¶óŬ ¼­¹ö¿¡¼­ ÀÚµ¿À¸·Î »ý¼ºµÇ´Â°Í°ú, CREATE INDEX¸¦ »ç¿ëÇؼ­ ¸¸µé¾îÁö´Â index°¡ ÀÖ´Ù.

* INDEX´Â ¸¹ÀÌ ¸¸µç´Ù°í ÁÁÀº°Ô ¾Æ´Ï´Ù.

* INDEX´Â ÀÌ·¸¶§ ¸¸µå´Â°Ô ÁÁ´Ù.

- WHEREÀýÀ̳ª JOINÁ¶°Ç¿¡ ÀÚÁÖ³ª¿À´Â column

- columnÀÇ ¹üÀ§°¡ Ŭ¶§

- null value¸¦ ¸¹ÀÌ °®°í ÀÖ´Â column

- Àüü row¿¡¼­ 2~4% Á¤µµÀÇ row¸¦ ãÀ»¶§

 

10. CREATE INDEX

CREATE INDEX index

ON table (column[, column]...) ;

CREATE INDEX emp_ename_idx

ON emp (ename) ;

 

11. USER_INDEXES and USER_IND_COLUMNS data dictionary

SELECT ic.index_name, ic.column_name, ic.column_position, ix.uniqueness

FROM user_indexes ix, user_ind_columns ic

WHERE ic.index_name = ix.index_name

AND ic.table_name = 'EMP' ;

12. INDEX Á¦°ÅÇϱâ

DROP INDEX emp_ename_idx ;

 

13. SYNONYM ?

user°¡ synonymÀ» »ç¿ëÇÏ¸é ½ºÅ°¸¶¸¦ º°µµ·Î ¸í½ÃÇÒ ÇÊ¿ä°¡ ¾ø¾îÁø´Ù.

 

14. CREATE SYNONYM

CREATE [PUBLIC] SYNONYM synonym

FOR object ;

* PUBLICÀº ¸ðµç user¿¡°Ô synonym±ÇÇÑÀ» ÁÖ´Â °ÍÀÌ°í, DBA±ÇÇÑÀÌ ÀÖ´Â »ç¶÷¸¸

»ç¿ëÀÌ °¡´ÉÇÏ´Ù.

* PUBLICÀ» ¾È¾²¸é ¸¸µç »ç¶÷¸¸ »ç¿ëÇÑ´Ù.

 

CREATE SYNONYM d_sum

FOR dept_sum_vu ;

--> dept_sum_vu¶ó´Â viewÅ×À̺íÀ» d_sumÀ¸·Î »ç¿ë ÇÏ°Ú´Ù.

 

15. PUBLIC SYNONYM

CREATE PUBLIC SYNONYM dept

FOR alice.dept

--> alice°¡ ¸¸µç deptÅ×À̺íÀ» dept·Î ¸ðµç À¯Àú¿¡°Ô ¸í½Ã ÇÏ°Ú´Ù.

 

16. SYNONYM Á¦°Å

DROP SYNONYM d_sum ;

* publicÀ¸·Î Á¤ÀÇµÈ SYNONYMÀº DBA¸¸ Á¦°Å°¡ °¡´ÉÇÏ´Ù.

 

 

[14] Controlling User Access (GRANT, REVOKE)

* ½Ã½ºÅÛ ±ÇÇÑ(System Privilege): µ¥ÀÌÅÍ º£À̽º¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

* °´Ã¼ ±ÇÇÑ(Object Privilege) : µ¥ÀÌÅÍ º£À̽º °´Ã¼ ³»¿ëÀ» Á¶ÀÛÇÒ ¼ö ÀÖ´Ù.

1. System Privilege? --> DBA񀀥

- Create new users ( CREATE USER )

- Remove users ( DROP USER )

- Remove tables ( DROP ANY TABLE )

- Backup tables ( BACKUP ANY TABLE )

 

2. Creating User

CREATE USER scott

IDENTIFIED BY tiger ;

 

3. system privilege¿¡¼­ÀÇ GRANT

GRANT privilege [, privilege...]

TO user [, user...]

[WITH ADMIN OPTION] ;

* WITH ADMIN OPTION : dba°¡ ±ÇÇÑÀ» ÁÖ´Â user¿¡°Ôµµ admin ±ÇÇÑÀ» ÁÙ ¼ö ÀÖ´Ù.

* user system privilege(DBA °¡ USER¿¡°Ô ÇÒ´ç ÇÒ ¼ö ÀÖ´Â ±ÇÇÑ)

CREATE SESSION : Å×ÀÌÅͺ£À̽º¿¡ connectÇÏ´Â ±ÇÇÑ

CREATE TABLE : Å×ÀÌºí ¸¸µå´Â ±ÇÇÑ

CREATE SEQUENCE : sequence ¸¸µå´Â ±ÇÇÑ

CREATE VIEW : view ¸¸µå´Â ±ÇÇÑ

CREATE PROCEDURE : stored prcedure, function ¸¸µå´Â ±ÇÇÑ

GRANT create table, create sequence, create view

TO scott

--> scott¿¡°Ô table, sequence, view¸¸µå´Â ±ÇÇÑÀ» ÁØ´Ù.

 

4. ROLE : »ç¿ëÀÚ¿¡°Ô ºÎ¿©ÇÒ ¼ö ÀÖ´Â °ü·Ã ±ÇÇÑÀ» Çϳª·Î ¹­¾î ¸í¸íÇÑ ±×·ì

Grant¸¦ ÁÙ role user¸¦ ¸¸µçÈÄ ±× role user¿¡ grant¸¦ ÁÖ°í,

role userÀÇ ±ÇÇÑÀ» °¢°¢ÀÇ user¿¡°Ô ³Ñ°ÜÁØ´Ù.

¨ç SQL> CREATE ROLE manager ;

Role created.

¨è SQL> GRANT create table, create view TO manager ;

Grant succeeded.

¨é SQL> GRANT mananger TO brake, clock ;

Grant succeeded.

 

5. User Password º¯°æÇϱâ

ALTER USER user IDENITIFIED BY password ;

¿¹) ALTER USER scott IDENTIFIED BY lion ;

 

6. Object Privileges?

* °´Ã¼¸¶´Ù ´Ù¸£´Ù.

* ¼ÒÀ¯ÀÚ´Â °´Ã¼¿¡ ´ëÇÑ ¸ðµç ±ÇÇÑÀ» °®´Â´Ù.

* ¼ÒÀ¯ÀÚ´Â ÀÚ½ÅÀÇ °´Ã¼¿¡ ´ëÇÑ Æ¯Á¤ ±ÇÇÑÀ» ºÎ¿©ÇÒ ¼ö ÀÖ´Ù.

 

5. User Password º¯°æÇϱâ

ALTER USER user IDENITIFIED BY password ;

¿¹) ALTER USER scott IDENTIFIED BY lion ;

 

6. Object Privileges?

* °´Ã¼¸¶´Ù ´Ù¸£´Ù.

* ¼ÒÀ¯ÀÚ´Â °´Ã¼¿¡ ´ëÇÑ ¸ðµç ±ÇÇÑÀ» °®´Â´Ù.

* ¼ÒÀ¯ÀÚ´Â ÀÚ½ÅÀÇ °´Ã¼¿¡ ´ëÇÑ Æ¯Á¤ ±ÇÇÑÀ» ºÎ¿©ÇÒ ¼ö ÀÖ´Ù.

7. Object Privilege¿¡¼­ÀÇ GRANT

GRANT object_priv [(columns)| ALL]

ON object

TO {user|role|PUBLIC}

[WITH GRANT OPTION] ;

* sue, rich ¶ó´Â user¿¡°Ô emp Å×À̺íÀ» select ±ÇÇÑÀ» ÁØ´Ù.

GRANT select

ON emp

TO sue, rich ;

* scott, manager¶ó´Â user¿¡°Ô dept Å×À̺íÀÇ dname,loc Ä÷³À» updateÇÒ ¼ö ÀÖ°Ô ±ÇÇÑÀ» ÁØ´Ù.

GRANT update (dname, loc)

ON dept

TO scott, manager ;

 

* WITH GRANT OPTION

GRANT select, insert

ON dept

TO scott

WITH GRANT OPTION ;

--> scott¿¡°Ô dept Å×À̺íÀÇ select, insert±ÇÇÑÀ» Áָ鼭 scott°¡ ´Ù¸¥ À¯Àú¿¡°Ôµµ

ÀÌ ±ÇÇÑÀ» ÁÙ ¼ö ÀÖ°Ô ÇÑ´Ù.

 

* PUBLIC : ¸ðµç À¯Àú¿¡°Ô ±ÇÇÑÀ» ºÎ¿©ÇÑ´Ù.

GRANT select

ON alice.dept

TO PUBLIC ;

--> ¸ðµçÀ¯Àú¿¡°Ô alice°¡ ¸¸µç dept Å×À̺íÀÇ select±ÇÇÑÀ» ÁØ´Ù.

 

* ¸ðµç À¯Àú¿¡°Ô ¸ðµç object±ÇÇÑÀ» ÁÖ±â

GRANT ALL

ON emp

TO PUBLIC ;

 

8. ±ÇÇÑ ¾ø¾Ö±â (REVOKE)

REVOKE {privilege [, privilege...] | ALL}

ON object

FROM {user[, user...]|role|PUBLIC}

[CASCADE CONSTRAINTS]

 

REVOKE select, insert

ON dept

FROM scott ; --> scott¿¡°Ô¼­ deptÅ×À̺íÀÇ select, insert±ÇÇÑÀ» ¾ø¾Ø´Ù.

* CASCADE CONSTRAINTS : ÀÌ ¿É¼ÇÀ» ¾Ê¾²¸é revokeÇÒ ¶§ forien key

°ü°èÀÇ tableÀ» revokeÇÒ ¼ö ¾ø´Ù.

 

9. Privilege Grant¸¦ º¼ ¼ö ÀÖ´Â Data Dictionary

ROLE_SYS_PRIVS : System privilege ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸

ROLE_TAB_PRIVS : table(object) privilege ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸

USER_ROLE_PRIVS : roleÁ¤º¸

USER_TAB_PRIVS_MADE : ³»°¡ ´Ù¸¥ »ç¶÷¿¡°Ô ÁØ TABLE ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸

USER_TAB_PRIVS_RECD : ³»°¡ ´Ù¸¥ »ç¶÷¿¡°Ô ¹ÞÀº TABLE ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸

USER_COL_PRIVS_MADE : ³»°¡ ´Ù¸¥ »ç¶÷¿¡°Ô ÁØ COLUMN ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸

USER_COL_PRIVS_RECD : ³»°¡ ´Ù¸¥ »ç¶÷¿¡°Ô ÁØ COLUMN ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸


¸ñ·Ï

ºÐ·ù ¼±ÅÃ
64 ÀÏ¹Ý [SQL] ¿À¶óŬ ¼ÓµµÀúÇÏ ¹®Á¦ ÃßÃâ È£¼® 07-02-02 5368
63 ÀÏ¹Ý ¿À¶óŬ ÃʱâÈ­ ÆÄÀÏÀ» º¯°æÇؼ­ ¿ÀÇÂÇϱâ È£¼® 07-01-31 3475
62 ÀÏ¹Ý [Æ©´×] ¿À¶óŬ Æ©´× °ü·Ã Æß È£¼® 07-01-30 6261
61 ÀÏ¹Ý Åäµå 7.4 ±ò±¸³ª¼­ ¿¡·¯ ³ª¸é regedit ·Î Å°°ªÀ» º¯°æÇØ¾ßµÊ toad È£¼® 07-01-19 3946
60 ÀÏ¹Ý Äõ¸®¹æ½ÄÀ» ÀÌ¿ëÇÑ export dump data ¹Þ±â exp È£¼® 06-12-19 4034
59 ÀÏ¹Ý Æ©´×½ÎÀÌÆ® È£¼® 06-12-10 3613
58 ÀÏ¹Ý [ORA-06508] ¿¡·¯Ã³¸® È£¼® 06-09-05 6267
57 ÀÏ¹Ý [sql] Å×ÀÌºí ½ºÆäÀ̽º Á¤º¸ È®ÀÎ , Áõ°¡À²µµ È®ÀΠȣ¼® 06-08-17 11505
ÀÏ¹Ý ¿À¶óŬ È°¿ë¸í·É [ÀÎÅÍ³Ý ÂüÁ¶ÀÚ·á ] È£¼® 06-08-06 4370
55 ÀÏ¹Ý ¿À¶óŬ Á¤¸®ÀÚ·á sql [ÀÎÅÍ³Ý ÂüÁ¶ÀÚ·á ] È£¼® 06-08-06 4392
54 Áú¹® Á¶¾ðÀ» ºÎŹµå¸³µð´Ï´Ù. ³ªÁß¿¬ 06-07-26 2857
  ÀÏ¹Ý    Á¶¾ðÀ» ºÎŹµå¸³µð´Ï´Ù. È£¼® 06-08-06 3118
53 ÀÏ¹Ý ¿À¶óŬ Æ÷·³ .com ½ÎÀÌÆ® È£¼® 06-07-08 3376
52 ÀÏ¹Ý ÀÓÀÇ°èÁ¤À¸·Î sqlplus ½ÇÇà½Ã ¿¡·¯ ORA-27121 & Permission denied ÀÏ°æ¿ì È£¼® 06-06-28 4802
51 ÀÏ¹Ý XDB »èÁ¦ÈÄ ´Ù½Ã ¼³Ä¡Çϱâ (1) È£¼® 06-06-27 5322
óÀ½ÀÌÀü  [1] [2] [3] [4] [5] 6 [7] [8] [9] [10]  ´ÙÀ½¸Ç³¡

 
Copyright © zenos.pe.kr. All rights reserved.