在知识链中的地位:
这里的这些概念,离实际应用的距离很远,例如知道建表,但在实际应用时,你需要根据具体的业务需求、技术要求下去建表,对系统的熟悉,对业务技术的具体要求,设计这才是重要的,这才是难点,简单的建表语句只是最后的皮毛。所以没有必要在这里花太多的时间精力,把主要精力放到具体的实践活动中。
再说删除列,这在DB2中是没有的功能,数据类型的话,具体的DBMS有很多自己定义的类型,这需要在具体的运用中根据实际情况定。
与前后知识的关联:
完整性约束主要有三种:主键子句(primary key),外键子句(foreign key),检查子句(check)。
这里与关系模型的三类完整性规则是一一对应的,分别是实体完整性规则,参照完整性规则,用户自定义的完整性规则;是更好地与现实世界保持一致。
这其实是在前面创建关系模型理论是就提到了,这里实际表达。是反应现实世界数据约束的,是关系模型的一个重要的方面。知识点就应该要这样前后联系,这样就会站在不同的角度,以更高的眼光看待一件事,会看得更远更透更深刻,这样也会达到更高的境界。
cascade 级联式
restrict 约束式
1、sql模式的创建和撤销
其实就是数据库的创建和撤销。
cascade(级联)方式:执行“Drop”语句时,把SQL模式及其下属的基本表、视图、索引等元素都撤销。
restrict (约束)方式:只有当SQL模式好没有任何下属元素时,才能撤销。
2、基本数据类型
这里可以用户自定义数据类型。
例如:create domain aa char(8);
3、基本表的创建、修改和撤销
3.1 create table 基本表名
(列名 类型,
完整性约束,
....)
完整性约束主要有三种:主键子句(primary key),外键子句(foreign key),检查子句(check)。
这里与关系模型的三类完整性规则是一一对应的,分别是实体完整性规则,参照完整性规则,用户自定义的完整性规则;是更好地与现实世界保持一致。
create table sc(
S# char(4),
C# char(4),
grade smallint,
primary key(S#,C#),
foreign key(S#) references S(s#),
foreign key(c#) references C(c#),
check (grade between 0 and 100)
);
3.2 基本表结构的修改:
增加列:alter table 基本表名 add 列名 类型
删除列:alter table 基本表名 drop 列名 [cascade|restrict]
cascade表示在基本表中删除某列时,所有引用到该列的视图和约束都被删除;restrict表示在没有视图和约束引用该属性时,才能在基本表中删除该列,否则拒绝删除。
修改原有列的类型、宽度:
alter table S modify s# char(6)
3.3 基本表的撤销:drop table 基本表名 [cascade|restrict]
4、索引的创建、撤销
4.1 创建
create index a on S(s#)
表示对基本表S的列s#建立索引,索引键名为a;
一个索引键对应多个列:
create unique index aa on SC(s# ASC,c# DESC);