쾌속 편
Oracle 에는 별명, 서열, 보기, 색인 과 클 러 스 터 등 다섯 가지 데이터 베이스 대상 이 포함 되 어 있 으 며, 별명 과 서열 은 Oracle 에서 특유 한 데이터 베이스 대상 이다.
별명: Oracle 의 데이터 시트 에 별명 을 설정 한 후 별명 으로 데이터 시트 를 원 표 이름과 같은 여러 가지 조작 을 할 수 있 습 니 다.그 문장의 키 워드 는 synonym 이 고 구체 적 인 용법 을 보 겠 습 니 다.
동의어 만 들 기: create synonym student for stu;
생 성 후 student 는 stu 표 의 별명 이기 때문에 다음 두 문장의 실행 결 과 는 같 습 니 다.
select *from student; ==> select *from stu;
동의어 삭제: drop synonym student;
시퀀스: Oracle 의 특유 한 대상 으로서 시퀀스 는 Oracle 의 메 인 키 의 자체 증 가 를 실현 하 는데 이것 은 다른 관계 데이터 베이스 와 구별 된다.키 워드 는 sequence 입 니 다.
생 성 시퀀스 방법: 생 성 시퀀스 NumSeq increment by 1 start with 1 maxvalue 999;하나의 시퀀스 를 만 들 고 1 부터 증 가 량 을 1 로 하고 최대 값 을 999 로 설정 합 니 다.
시퀀스 사용: insert into testTable values (NumSeq. nextVal);
nextVal 다음 사용 가능 한 값 되 돌려 주기;
currVal 은 현재 시퀀스 의 중간 값 을 얻 었 습 니 다. 첫 번 째 는 nextVal 을 되 돌려 야 curr Val 값 을 얻 을 수 있 습 니 다.
Alter sequence 수정 시퀀스 정의: alter sequence NumSeq set maxvalue 1000;
보기 와 색인: 그 용법 은 다른 데이터베이스 와 같 습 니 다. 여 기 는 군말 이 많 지 않 습 니 다.
클 러 스 터: 두 표 또는 여러 표 에 같은 열 이 존재 하고 같은 열 을 한 공간 에 저장 하여 공간 을 절약 합 니 다.
클 러 스 터 만 드 는 방법:
create cluser classcluser
(
ClassNo varchar2(10)
);
클 러 스 터 에 색인 create index cluserIndex on cluser classcluser 만 들 기;
표 StuClass 를 만 들 고 정 의 된 클 러 스 터 를 가 리 킵 니 다.
create table StuClass
(
ClassNo varchar2(10),
ClassName varchar2(20)
)cluser classcluser(ClassNo);
표 Student 를 만 들 고 정 의 된 클 러 스 터 를 가 리 킵 니 다.
create table Student
(
StuNo int,
ClassNo varchar2(10)
)cluser classcluser(ClassNo);
**********************************************************************************************
Oracle ( )
Oracle , 、 、 、 、 、 。 , Oracle Oracle 。
Oracle 。ORACLE8 ,ORACLE8i , 。 。 。
, 。 CREATE TABLE , , , , 。 :
CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) ); |
products , CREATE TABLE , , 。
, , NOT NULL, 。
, 。 , null ,oracle 。
:
. DBA_TABLES
. DBA_ALL_TABLES
. USER_TABLES
. USER_ALL_TABLES
. ALL_TABLES
. ALL_ALL_TABLES
. DBA_TAB_COLUMNS
. USER_TAB_COLUMNS
. ALL_TAB_COLUMNS
, ,oracle 30 。 , 、 、#、$ 。
, 。 。 CREATE TABLE AS, :
SQL>CREATE TABLE emp AS SELECT * FROM employee
TABLE CREATED
SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2 |
LONG , CREATE TABLE....AS SELECT.... 。
, , , , , 。ORACLE ALTER TABLE
1、
:
ALTER TABLE [schema.] table_name ADD column_definition |
:
ALTER TABLE orders ADD order_date DATE;
TABLE ALTER |
, NULL.
2、
:
ALTER TABLE [schema.] table_name MODIFY column_name new_attributes; |
:
ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15)); |
orders, STATUS 15, QUANTITY 10,3;
:
. , 。
. , , NULL.
. , NULL.
. , 。
3、
ORACLE , , 。 ORACLE8i , 。
:
ALTER TABLE [schema.] table_name DROP {COLUM column_names | (column_names)}[CASCADE CONSTRAINS] |
。 CASCADE CONSTRAINS, , 。
, , :
ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names | (column_names)}[CASCADE CONSTRAINS] |
, , 。 , , , 。 、 , 。
:
ALTER TABLE [schema.] table_name DROP {UNUSED COLUM | COLUMN CONTINUE} |
Oracle ( )
, 。
:
DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS] |
, 、 、 、 。ORACLE , , oracle 。 , DROP TABLE CASCADE CONSTRAINTS 。
RENAME 。ORACLE 、 、 。ORACLE , 、 、 , 。
:
RENAME old_name TO new_name; |
:
SQL> RENAME orders TO purchase_orders;
TABLE RENAMED |
TRUNCATE DROP , , 、 、 、 。 , ,TRUNCATE REUSE STORAGE 。TRUNCATE :
TRUNCATE {TABLE|CLUSTER} [schema.] name {DROP|REUSE STORAGE} |
:
SQL> TRUNCATE TABLE t1;
TABLE truncate. |
, (stored query) (virtual table). oracle , , 。 , , 。 。 。
CREATE VIEW , , 。 FOR UPDATE , ORACLE8i ORDER BY , CREATE VIEW ORDER BY 。
:
SQL> CREATE VIEW TOP_EMP AS SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary FROM emp WHERE salary >2000 |
, 。 OR REPLACE 。
SQL> CREATE VIEW TOP_EMP (EMPLOYEE_ID,EMPLOYEE_NAME,SALARY) AS SELECT empno ,ename ,salary FROM emp WHERE salary >2000 |
, 。 CREATE VIEW FORCE 。 :
CREATE FORCE VIEW ORDER_STATUS AS SELECT * FROM PURCHASE_ORDERS WHERE STATUS='APPPOVE';
SQL>/
warning :View create with compilation errors |
ORDER_STATUS , , , 。
, , SQL , SELECT 。
、 、
、 、 。 , 。 USER_UPDATETABLE_COLUMNS 。
CREATE VIEW WITH 。WITH READ ONLY , 、 、 。WITH CHECK OPTION , WHERE 。 WHERE , TOP_EMP, salary 2000 。
DROP VIEW 。 , , 、 、 。
:
Oracle ( )
,Oracle 5 :
Check
NOT NULL
Unique
Primary
Foreign key
, 。 , SQL PL/SQL 。 , , , , , 。
, ALTER
ALTER TABLE table_name DISABLE CONSTRAINT constraint_name; |
ALTER TABLE policies DISABLE CONSTRAINT chk_gender |
:
ALTER TABLE policies ENABLE CONSTRAINT chk_gender |
ALTER TABLE table_name DROP CONSTRAINT constraint_name |
ALTER TABLE policies DROP CONSTRAINT chk_gender; |
Check
Check TRUE, NULL,Check 。 Check 。Check Check , SYSDATE,UID,USER,USERENV。 , 。Check LOB 、 、VARRY、ref 。 Check , Check 。
Check CREATE TABLE , ALTER TABLE 。
:
CONSTRAINT [constraint_name] CHECK (condition); |
Check , Check , 。 , oracle SYS_ 。
:
CREATE TABLE policies (policy_id NUMBER, holder_name VARCHAR2(40), gender VARCHAR2(1) constraint chk_gender CHECK (gender in ('M','F'), marital_status VARCHAR2(1), date_of_birth DATE, constraint chk_marital CHECK (marital_status in('S','M','D','W')) ); |
NOT NULL
NOT NULL , 。 ,ORACLE NULL 。 ,NOT NULL 。
:
CREATE TABLE policies (policy_id NUMBER, holder_name VARCHAR2(40) NOT NULL, gender VARCHAR2(1), marital_status VARCHAR2(1), date_of_birth DATE NOT NULL ); |
NOT NULL ALTER TABLE 。
ALTER TABLE policies MODIFY holder_name NOT NULL |
Oracle ( )
(Unique constraint)
, 。 , , ALTER TABLE 。
:
column_name data_type CONSTRAINT constraint_name UNIQUE |
, 。 :
CONSTRAINT constraint_name (column) UNIQUE USING INDEX TABLESPACE (tablespace_name) STORAGE (stored clause) |
B-tree , USING , 。CREATE TABLE 。
CREATE TABLE insured_autos (policy_id NUMBER CONSTRAINT pk_policies PRIMARY KEY, vin VARCHAR2(10), coverage_begin DATE, coverage_term NUMBER, CONSTRAIN unique_auto UNIQUE (policy_id,vin) USING INDEX TABLESPACE index STORAGE (INITIAL 1M NEXT 10M PCTINCREASE 0) ); |
, , ALTER TABLE
ALTER TABLE insured_autos DISABLE CONSTRAIN unique_name; |
, ALTER TABLE....DROP CONSTRAIN
ALTER TABLE insured_autos DROP CONSTRAIN unique_name; |
。 (foreign key)。
, 。 。 , :
1、 。
2、
(Primary Key)
。 , NOT NULL 。NOT NULL 。 , B-tree 。
CREATE TABLE , , ALTER TABLE 。
CREATE TABLE policies (policy_id NUMBER CONSTRAINT pk_policies PRIMARY KEY, holder_name VARCHAR2(40), gender VARCHAR2(1), marital_status VARCHAR2(1), date_of_birth DATE ); |
, , 。
CREATE TABLE insured_autos (policy_id NUMBER, vin VARCHAR2(40), coverage_begin DATE, coverage_term NUMBER, CONSTRAINT pk_insured_autos PRIMARY KEY (policy_id,vin) USING INDEX TABLESPACE index STORAGE (INITIAL 1M NEXT 10M PCTINCREASE 0) ); |
ALTER TABLE
ALTER TABLE policies DROP PRIMARY KEY; |
ALTER TABLE policies DISABLE PRIMARY KEY; |
(Foreign key constraint)
, null , 。 ( ) , 。 B-tree 。 , (parent table) (child table), , 。
CREATE TABLE , , ALTER TABLE 。
CREATE TABLE insured_autos (policy_id NUMBER CONSTRAINT policy_fk REFERENCE policies(policy_id ON DELETE CASCADE, vin VARCHAR2(40), coverage_begin DATE, coverage_term NUMBER, make VARCHAR2(30), model VARCHAR(30), year NUMBER, CONSTRAIN auto_fk FROEIGN KEY (make,model,year) REFERENCES automobiles (make,model,year) ON DELETE SET NULL ); |
ON DELETE ORACLE (parent record) , 。 。
NULL
NULL 。ORACLE ISO standar Match None 。 NULL , 。
, AUTOMOBILES , MAKE,MODEL,YEAR , INSURED_AUTOS AOTOMOBILES, INSURES_AUTOS MODEL NULL , , MAKE AUTOMOBILES , :
1 AUTOMOBILES
MAKE |
MODEL |
YEAR |
Ford |
Taurus |
2000 |
Toyota |
Camry |
1999 |
2 INSURED_AUTOS
POLICY_ID |
MAKE |
MODEL |
YEAR |
576 |
Ford |
Taurus |
2000 |
577 |
Toyota |
Camry |
1999 |
578 |
Tucker |
NULL |
1949 |
(Deferred Constraint Checking)
, , (immediately checking), 。 Oracle (immediately checking), , SET CONSTRAINT 。 :
SET CONSTRAINT constraint_name|ALL DEFEERRED|IMMEDIATE --; |
Oracle ( )
(Sequences)
Oracle 。 , 。 , 。 、 , 。 SET SEQUENCE 。
CREATE SEQUENCE [schema] sequence KEYWORD |
KEYWORD :
KEYWORD |
|
START WITH |
, 1 |
INCREMENT BY |
, INCREMENT BY |
MINVALUE |
, 。 NOMINVALUE,NOMINVALUE, 1, -10E26. |
MAXVALUE |
。 , MAXVALUE NOMAXVALUE,NOMAXVALUE, 10E26, -1。 |
CYCLE |
|
NOCYCLE |
, 。 MAXVALUE+1 , |
CACHE |
, 20 |
NOCACHE |
, ,START WITH MINVALUE。 |
DROP SEQUENCE
DROP SEQUENCE sequence_name |
(INDEXES)
, 。ORACLE :
B-Tree、 (hash)、 (bitmap)
(Domain)
B-Tree , 。
B-Tree
B-Tree , 。B-Tree , ( ) ( )。B-Tree ( ) 。 B-Tree 。 10% 。 ,B-Tree , (branch block) (leaf block) , ( ) 。 ROWID。
, 。 ( ) ( ), 。 (cardinality) , AND OR 。 , TRUE(1)、FALSE(0)、 NULL 。 B-Tree 。B-Tree 。 , , B-Tree 。
(Synonyms)
。public , private 。 、 、 、 、 , 。
:
CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] object[@db_link]; |
:
CREATE PUBLIC SYNONYM policies FOR poladm.policies@prod;
CREATE SYNONYM plan_table FOR system.plan_table; |
Oracle ( )
, 。 , 。 , , 。 :
pay_involume(invoice_nbr,30,due_date);
:
order_volumn:=open_orders(SYSDATE,30);
:
CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name [parameter_lister] {AS|IS} declaration_section BEGIN executable_section [EXCEPTION exception_section] END [procedure_name] |
:
paramter_name mode datatype [(:=|DEFAULT) value]
mode :IN、OUT、INOUT。
IN , , , , , 。
OUT , , , 。
INOUT IN OUT ; , , , 。
, RETUREN
CREATE [ OR REPLACE] FINCTION [schema.]function_name [parameter_list] RETURN returning_datatype {AS|IS} declaration_section BEGIN executable_section [EXCEPTION] exception_section END [procedure_name] |
return 。
, :
CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER) RETURN NUMBER IS pi NUMBER=ACOS(-1); RadiansPerDegree NUMBER;
BEGIN RadiansPerDegree=pi/180; RETURN(SIN(DegreesIn*RadiansPerDegree)); END |
Oracle ( )
、 ; : , , , ; (package body), 、 、 。
PL/SQL , , , 。 。 , , 。
, :
CREATE [OR REPLACE] PACKAGE package_name {AS|IS} public_variable_declarations | public_type_declarations | public_exception_declarations | public_cursor_declarations | function_declarations | procedure_specifications END [package_name] |
CREATE PACKAGE BODY :
CREATE [OR REPLACE] PACKAGE BODY package_name {AS|IS} private_variable_declarations | private_type_declarations | private_exception_declarations | private_cursor_declarations | function_declarations | procedure_specifications END [package_name] |
, 。
(Triggers)
。 。 :
DML
DDL
DML 。DML DML 。 , 。 :
|
|
INSERT |
|
UPDATE |
|
DELETE |
|
CREATE |
CREATE |
ALTER |
ALTER |
DROP |
DROP |
START |
, |
SHUTDOWN |
, |
LOGON |
, |
LOGOFF |
, |
SERVER |
, |
:
CREATE [OR REPLACE] TRIGGER trigger_name {before|after|instead of} event ON {table_or_view_name|DATABASE} [FOR EACH ROW[WHEN condition]] trigger_body |
DML (INSERT、UPDATE、DELETE) INSTEAD OF DML BEFORE AFTER 。
(EXECUTE), ALTER TRIGGER :
ALTER TRIGGER trigger_name ENABLE; ALTER TRIGGER trigger_name DISABLE; |
, ALTER TABLE
ALTER TRIGGER table_name DISABLE ALL TRIGGER; ALTER TRIGGER table_name ENABLE ALL TRIGGER; |
DROP TRIGGER
DROP TRIGGER trigger_name; |
Oracle 。 OBJ$、UET$、SOURCE$, CREATE DATABASE sql.bsq , 。 catalog.sql( $oracle_home/rdbms/admin) CREATE DATABASE , 。
:
. USER_ , 。
. ALL_ , 。
. DBA_ , 。
DBA_TABLES,ALL_TABLES USER_TABLES 。Oracle 100 , 。 , DBA_, ALL_ USER_ 。
(View Family) |
|
COL_PRIVS |
, 、 |
EXTENTS |
, , (segment_name) |
INDEXES |
, 、 |
IND_COLUMNS |
, |
OBJECTS |
, DDL time |
ROLE_PRIVS |
, GRANT ADMIN |
SEGMENTS |
, tablespace storage |
SEQUECNCES |
, cache、cycle ast_number |
SOURCE |
、 、 |
SYNONYMS |
, db_link |
SYS_PRIVS |
, grantee、privilege、admin |
TAB_COLUMNS |
, |
TAB_PRIVS |
, 、 |
TABLES |
, (tablespace), (storage parms) |
TRIGGERS |
, 、 、 (trigger body) |
USERS |
, |
VIEWS |
, |
Oracle , , 。
VIEW NAME |
|
USER_COL_PRIVS_MADE |
|
USER_COL_PRIVS_RECD |
|
USER_TAB_PRIVS_MADE |
|
USER_TAB_PRIVS_RECD |
|
V$ , V$ GV$ 。V$ X$ 。V$ SYS , , SYS DBA , DBA USER_ ALL_ , DBA_ 。 DBA_,ALL, USER_ , 。
, ,
SQL , ALTER USER , ,
SQL :
:
SELECT 'ALTER USER'||username|| 'TEMPORARY TABLESPACE temp;' FROM DBA_USERS WHERE username<>'SYS' AND temporary_tablespace<>'TEMP'; |
, :
ALTER USER SYSTEM TEMPORARY TABLESPACE temp; ALTER USER OUTLN TEMPORARY TABLESPACE temp; ALTER USER DBSNMP TEMPORARY TABLESPACE temp; ALTER USER SCOTT TEMPORARY TABLESPACE temp; ALTER USER DEMO TEMPORARY TABLESPACE temp; |