数据表对象

这里就不再做相关的解释了,直接上示例:

创建一个course表,同时为主键约束列上的唯一性索引设置存储位置和存储参数。
SQL> CREATE TABLE course(
     cno   NUMBER(6) PRIMARY KEY,
     cname CHAR(20) UNIQUE 
     USING INDEX TABLESPACE indx
     STORAGE(INITIAL 64K NEXT 64K)
     ); 
创建一个SC表
SQL> CREATE TABLE  SC(
     sno NUMBER(6) REFERENCES student(sno),
     cno NUMBER(6) REFERENCES course(cno),
     grade NUMBER(5,2),
     CONSTRAINT SC_PK PRIMARY KEY(sno, cno)  
     ); 

说明:该例中定义了三个约束,
      ⑴其中两个是外键约束分别创建在sno列和cno列,均为列级。
      ⑵SC_PK是一个多列联合的主键约束,表级约束。

定义列级FOREIGN KEY约束
[CONSTRAINT constraint_name] [FOREIGN KEY]
REFERENCES ref_table_name (column_name,…)
定义表级FOREIGN KEY约束
[CONSTRAINT constraint_name] FOREIGN KEY (column_name,…)
REFERENCES ref_table_name (column_name,…)
[ON DELETE CASCADE|SET NULL|RESTRICTED];
CASCADE:删除从表中所有相关记录。
SET NULL:将从表中相关记录的外键约束列值设置为NULL
RESTRICTED:受限删除,即如果从表中有相关子记录存在,则不能删除主表中的父记录,默认引用方式。
DEFAULT
如果用户在插入新行时没有显示为列提供数据,系统将默认值赋给该列。
语法
[CONSTRAINT <约束名> ] DEFAULT 表达式

添加和删除约束

添加约束语法为:
ALTER TABLE table_name
ADD [CONSTRAINT constraint_name]
constraint_type(column1_name,column2_name,…) [condition];

SQL> CREATE TABLE player(
     ID     NUMBER(6),
     sno    NUMBER(6),
     sname  VARCHAR2(10),
     sage   NUMBER(6,2),
     resume VARCHAR2(1000)
     );
  添加主键约束到ID列:
  SQL> ALTER TABLE player
  ADD CONSTRAINT P_PK PRIMARY KEY(ID);
  添加惟一性约束到sname列:
  SQL> ALTER TABLE player
  ADD CONSTRAINT P_UK UNIQUE(sname);
  添加检查约束,限制sage取值范围为(20,30):
  SQL> ALTER TABLE player
  ADD CONSTRAINT P_CK CHECK(sage BETWEEN 20 AND 30);
  添加外键约束到sno(主表为student):
  SQL> ALTER TABLE player
  ADD CONSTRAINT P_FK FOREIGN KEY(sno)
  REFERENCES student(sno) ON DELETE CASCADE;
  添加空/非空约束到resume列:
  SQL> ALTER TABLE player MODIFY resume NOT NULL;
  SQL> ALTER TABLE player MODIFY resume NULL;
  
  注意:为表列添加空/非空约束时必须使用MODIFY子句代替ADD子句。

删除约束
使用ALTER TABLE…DROP语句删除已经定义的约束。
可以通过直接指定约束的名称来删除约束,或指定约束的内容来删除约束。

删除指定内容的约束
SQL> ALTER TABLE player DROP UNIQUE(sname);
删除指定名称的约束
SQL> ALTER TABLE player DROP CONSTRAINT P_CK; 

注意:删除表列的空/非空约束时也必须使用MODIFY子句代替DROP子句。

发布了36 篇原创文章 · 获赞 26 · 访问量 7576

猜你喜欢

转载自blog.csdn.net/weixin_43566977/article/details/103665730
今日推荐