文档详情

第3章SQL中的数据定义语言.ppt

发布:2016-08-21约6.34千字共55页下载文档
文本预览下载声明
@北京应用技术大学软件学院 实用数据库技术 第3章 SQL中的数据定义语言 学习内容 表的定义 视图的定义 索引的定义 创建表 CREATE TABLE语句 CREATE TABLE Table_Name (column_name datatype[(size)], column_name datatype[(size)], ...) 关系数据类型 字符串数据 数字数据 时间数据 大型对象 字符串数据 固定长度 固定长度的字段总是占据等量的内存空间,不管实际上在它们中间存放的数据量有多少。 可变长度 而可变长度的字符串只占据它们的内容所消耗的内存量,不管它们的最大尺寸是多少。 字符串数据示例 数字数据 多数数据库都提供至少2种数字数据类型:一种用于整数,另一种用于浮点数。另外还有一些数据库提供更加独特的数字类型。 整数 浮点数 数字数据示例 时间数据 多数关系数据库支持的另一种独特的数据类型是时间数据: 日期 时间 日期类型示例 指定键 候选键 一定不能在表中任何地方复制 每个表可指定多个候选键 UNIQUE 主键 每个表中只能指定一个主键 PRIMARY KEY 指定键 外键 指明某一列是引用了其他表中某一列,关键字是REFERENCES 候选键 候选键:Candidate Key UNIQUE关键字用来表明一列(或列的集合)一定不能在表中任何地方复制。在符合UNIQUE限制的一组列中输入值之后,再输入任何复制现存的一组值的值都会被数据库所抛弃。 候选键示例 创建具有键的Studios表 主键 要想指定主键而不是候选键,可以使用PRIMARY KEY子句。它可以与UNIQUE子句一起用在同一个CREATE TABLE语句中,不过每个表中只能指定一个主键。 主键示例 创建具有键的Studios表,同时具有主关键宇和候选关键字的表。 主键示例 还可以在定义列的时候同时指定候选键和主键,以此代替在CREATE TABLE语句结尾处单独的子句中创建键。 外部键 外部键也称外键。 允许指明某一列是引用了其他表中某一列的外部键。REFERENCES子句用来创建一个表中一组列与表中被参考的候选键之间的关系。 外键示例 从Movies表到Studios表的关系是怎样在列的级别上使用REFERENCES子句建立的 列约束 禁止空值 NOT NULL 其他限制 CHECK关键字 禁止空值 当指定列时,将NOT NULL短语添加到列定义中将需要在新的一行插入的同时在该列中输入一个值。这样做还将防止用户在更新表时将该列中的值设置为空值。 禁止空值示例 NOT NULL是怎样用在Studios表中创建的 其他限制 很多数据库还允许对可以输入到具体列中的数据施加其他限制。当限制放在某一列中时,通过INSERT或UPDATE语句插入的值将会根据列约束中的条件来估算。只有在数据满足限制条件的情况下,语句才会成功。 CHECK关键字用来创建列的限制。 CHECK示例 1 假设电影数据库中不包括任何预算小于5万美元的电影 CHECK示例 2 CREATE语句包含了名为studio_id_constraint的限制 CHECK 总结 使用CHECK子句放置在列中的限制的类型或多或少有些原始。可以使用称为触发器(tirgger)的存储过程的特殊类型在数据插入或修改之前在具体的字段中对其进行更高级的检测。使用触发器还可以处理插入之前被插入的数据。 默认值 在定义表时,另一个可用的选项是将默认值包括在表的列中。例如,如果希望根据插入日期和时间来标记每个记录,则可以使用DEPAULT关键字来完成。 DEPAULT关键字。 默认值示例 具有默认值的CREATE语句 默认值示例 release_date和genre列都具有默认值。在release_date中,发行日期的值默认为当前日期和时间(记住,在Oracle中,不存在日期和时间分开的类型),不过在列中启用了空值。如果希望将空值插入到release_date列中,就必须专门使用它,因为列中已经具有了另一个默认值。genre列默认为“Comedy”(喜剧),在列中存在一条限制,确保IN子句中有一个值被插入。 默认值总结 可以把你所喜欢的任何有效的表达式用做表中具体列的默认值。例如,如果希望从当前的日期(即某列的默认值)开始标记一周的日期,可以将SYSDATE+7用做具体列的DEFAULT子句中的值。 修改表 执行 ALTER TABLE 语句可以修改表的结构 。 添加列的语法: ALTER TABLE Table_Name ADD column_name datatype[(size)] 删除类的语法: ALTER TABLE T
显示全部
相似文档