日期:2014-05-16  浏览次数:20357 次

Oracle DBA 基础之 DDL 语句
 DDL 语句
数据库对象:表、视图、序列、索引、同义词
数据库对象的命名规则:
-必须以字母开头
-不得超过30个字符
-A-Z,a-z,0-9,_,$,#
-不得与同一个schema下的其他相同类型数据库对象重名
-不得为 ORACLE 保留的关键字


------创建表
CREATE TABLE [SCHEMA].TABLE_NAME
(COLUMN DATA_TYPE [DEFAULT EXPR] [,...]);


需要指定:列名、列数据类型、和列的长度
------查看某个SCHEMA下的数据库对象
hr@PROD> select object_name,object_type from user_objects;


hr@PROD> create table t(t int,name char(19));


Table created.


hr@PROD> select object_name,object_type from user_objects where object_name = 'T';


OBJECT_NAME          OBJECT_TYPE
-------------------- -------------------
T                    TABLE




hr@PROD> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME = 'T';


TABLE_NAME
------------------------------
T


属于其他用户的表不会出现在当前用户的schema中
可以使用表的owner_name作为表的前缀进行访问


hr@PROD> conn / as sysdba
Connected.
sys@PROD> insert into hr.T values(1,'xiang');


1 row created.


sys@PROD> select * from hr.T;


         T NAME
---------- ---------------------------------------------
         1 xiang
 




--------------创建表时指定 DEFUALT 选项
CREATE TABLE DEPT
(DEPTNO NUMBER(2),
 DNAME VARCHAR2(14),
 LOC VARCHAR2(13),
 CREATE_DATE DATE DEFAULT SYSDATE);


数据类型:
varchar2(size)
char(size)
number(p,s)
date
long    已作废
clob    character data 最大可达 4GB
raw
long raw
blob    binary data 最大可达4GB
bfile   binary data 存储在外部文件(操作系统文件),最大可达 4GB
rowid   在 64 位系统上表示表中的某个行的唯一地址


timestamp Date with fractional seconds    
interval year to month stored as an interval of year and months
interval day to second  stored as an interval of days, hours,minutes, and seconds


hr@PROD> select rowid,id,hire_date from hire_dates;


ROWID                      ID HIRE_DATE
------------------ ---------- ---------
AAARUwAAEAAAAGVAAA          1 06-AUG-12








CREATE TABLE HIRE_DATES
(ID NUMBER(2),
 HIRE_DATE DATE DEFAULT SYSDATE);


hr@PROD> select * from hire_dates;


no rows selected 


hr@PROD> insert into hire_dates values (1,default);


1 row created.


hr@PROD> select * from hire_dates;


        ID HIRE_DATE
---------- ---------
         1 06-AUG-12


---------插入的时候指定列
hr@PROD> insert into hire_dates(id) values (1);


1 row created.


hr@PROD> select * from hire_dates;


        ID HIRE_DATE
---------- ---------
         1 06-AUG-12
 
 
 
 
---------------------Constraints 约束
Constraints enforce rules at table level
Constraints prevent the deletion of a table if there are dependencies.
Oracle 中有如下约束:


NOT NOLL  确保列中不会插入 NULL 值
UNIQUE    确保列中不会插入重复的值    
PRIMARY KEY  NULL+UNIQUE,每个表有且只能有一个逐渐
FOREIGN KEY  完整性约束,一个表A上的外键是另一个表B的主键,如果你要往表A插入数据,则外键列必须在表B的主键列中有值。