暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【每日一练 014】 SQL : 对象及约束

原创 李美静 恩墨学院 2020-07-08
1002

1 数据库对象

表:存储数据
视图:是一个或多个表的数据子集
序列:生成数值
索引:改善一些查询性能
同义词:为对象提供一个可选的名字

2 表

表在任一时刻都可以创建,不需要指定表的大小。大小最终由分配给整个数据库的空间量来定义。
然而,重要的是要估计一个表随着时间的推移将使用多少空间。表的结构可以在线修改。
表的名字和列名必须以字母打头,长度为1-30个字符。
表名和列名必须以字母开头,长度为1-30个字符。名称必须只包含字符A-Z、A-Z、0-9、_(下划线)、$和#。名称不能与同一Oracle服务器用户拥有的另一个对象的名称重复。
名称不能是Oracle服务器保留字。还可以使用带引号的标识符来表示对象的名称。用引号括起来的标识符以双引号(" ")开始和结束。如果使用引号标识符命名架构对象,则在引用该对象时必须使用双引号。引号括起来的标识符可以作为保留字,但不建议这样做。名字不区分大小写。
在定义表时,可以使用default选项指定应该为列提供默认值。当插入没有列值的行时,此选项防止null值进入列。默认值可以是文字、表达式或SQL函数(如SYSDATE或USER),也可以是nextval,currval。默认表达式必须与列的数据类型匹配。
如:

SYS@PROD> create table test2 (id number default s1.currval,name varchar2(10));
Table created.
SYS@PROD> insert into test2(name) values('test');
1 row created.
SYS@PROD> select * from test2;
	ID NAME
---------- ----------
	 1 test

3 约束

约束在表级别强制执行规则。约束保证了一致性和完整性。
有如下约束:
NOT NULL:非空,必须在列级别定义
UNIQUE:惟一约束,可以为空,要以在表级或列级定义。也可以对组合列设置为惟一约束。
PRIMARY KEY:非空且惟一,一个表只有一个主键,可以对一个列设置,也可以是列的组合。
并且主键一部分的任何列都不能包含空值。
FOREIGN KEY:一个列或列的组合为外键,且与同一表或不同表中的主键或唯一键建立关系。
ON DELETE CASCADE :当父表中的一行被删除时,删除子表中的相关行
ON DELETE SET NULL:将依赖的外键值转换为NULL
CHECK:不允许为伪列,currval,nextval,level,rownum,sysdate,uid,user,和userenv这些函数。
如:

SYS@PROD> create table test3(id number check(id>s1.nextval),name varchar2(10));
create table test3(id number check(id>s1.nextval),name varchar2(10))                                           *
ERROR at line 1:
ORA-02438: Column check constraint cannot reference other columns
SYS@PROD> create table test3(hiredate date check(hiredate>sysdate),name varchar2(10));
create table test3(hiredate date check(hiredate>sysdate),name varchar2(10))                                                
ERROR at line 1:
ORA-02436: date or system variable wrongly specified in CHECK constraint
SYS@PROD> create table test3(id number check(id >1000),name varchar2(10));
Table created.

每当从表中插入、更新或删除一行时,对表中的数据执行规则。操作要成功,就必须满足约束。如果某个表与其他表有依赖关系,则防止删除该表。
可以命名一个约束,或者Oracle服务器使用SYS_Cn格式生成一个名称。
可以在创建表的同时定义约束,也可以在创建表后,添加约束。
可以在表级,也可以在列级定义约束。
而且创建的约束可以在数据字典中查看。

4 练习题

如下哪三个选项可以使用约束:
A.Enforce rules on the data in a table whenever a row is inserted, updated, or deleted.
B.Prevent the dropping of a table.
C.Prevent the creation of a table.
D.Prevent the creation of data in a table.

【答题小贴士】:
1、以墨天轮文章的形式解析题目并给出答案
2、将墨天轮文章链接发送到此文的评论区

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论