oracle学习笔记(表的创建和修改)

来源:互联网 发布:网络谈棉花是什么意思 编辑:程序博客网 时间:2024/05/20 18:48

创建表:

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

CREATE TABLE TABLENAME

(

   列名 类型 [DEFAULT VALUE],

);

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

CREATE TABLE TABLENAME [列名]

AS (子查询)

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

修改表:

 

1.增加一列

ALTER TABLE表名 ADD (列名 类型);

 

2.改变列的属性(类型,约束等,列名不能改)

ALTER TABLE表名 MODIFY (列名 类型)

注意:

改变后的列必须与它已经包含的数据字段一样宽,或者大于所有的数据字段

如果一个NUMBER列以及包含数据,那么不能降低这一列的精度和小数位数

更改默认值不会更改表已经存在的数据值

 

3.删除一列

ALTER TABLE表名 DROP COLUMN 列名

只能删除一个列

 

4.设置不使用标记

ALTER TABLE表名 SET UNUSED(列名)

ALTER TABLE表名 SET UNUSED COLUMN 列名

ALTER TABLE表名 DROP UNUSED COLUMN

 

5.重命名表

RENAME 旧表名  TO 新表名 

 

6.截断表

TRUNCATE TABLE 表名

截断表会删除所有数据,但保留表结构,语句属于DDL,会自动提交

 

7.删除表

DROP TABLE表名

 

 

约束:

PRIMARY KEY

FOREIGN KEY

UNIQUE

CHECK

NOT NULL

 

主键约束:

ALTER TABLE 表名ADD [CONSTRAINT 约束名] PRIMARY KEY (列名);

一个表只能创建一个PRIMARY KEY 约束

 

外键约束:

ALTER TABLE 表名ADD [CONSTRAINT约束名] FOREIGN KEY(列名) REFERENCES 表名(列名)  [ON DELETE CASCADE]

ON DELETE CASCADE 意味着删除父表自动删除子表的内容,但最好不要使用,防止误操作,手动删除比较好

 

UNIQUE约束:

ALTER TABLE 表名ADD [CONSTRAINT 约束名] UNIQUE (列名)

 

CHECK约束:

ALTER TABLE 表名ADD [CONSTRAINT 约束名] CHECK (约束条件)

 

NOT NULL约束:

ALTER TABLE 表名MODIFY (列名 [CONSTRAINT约束名] NOT NULL)

 

察看约束:

SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE ,SEARCH_CONDITION FROM USER_CONSTRAINTS WHERE TABLE_NAME = ‘TABLENAME’;

 

启用/停止约束:

ALTER TABLE 表名DISABLE/ENABLE CONSTRAINT 约束名

 

删除约束:

ALTER TABLE 表名DROP PRIMARY KEY / UNIQUE (列名) / CONSTRAINT 约束名

 

注意:所有约束可以在创建表时创建。

例子:

CREATE TABLE 表名 (

STUNO NUMBER(5) PRIMARY KEY,

STUNAME CHAR(10) NOT NULL,

STUSEX CHAR(1) CHECK(STUSEX IN (‘M’,’F’)),

STUTEL VARCHAR(20) UNIQUE,

CLASSNO NUMBER(5) REFERENCES CLASSINFO(CLASSNO)

);