[其他约束条件]primarykey例如.ppt

[其他约束条件]primarykey例如.ppt

创建更好的索引:覆盖索引和局部索引 Explain命令详解 1.key 2.rows Show session status like ‘handler_read%’ 查看实际的行数 3.possible_keys Show index from 表名 查看基数 4.key_len 5.table 6.select_type 7.extra 提供优化器路径的一系列额外信息 Using where,using temporary(使用了临时表),using filesort,Using index(索引就满足,不需要直接访问表数据),Using join buffer(表连接没有使用索引) 8.id 9.ref 10.type 解释explain输出结果 找出没有订单的用户,用三种方式 分析哪种好,随着数据的增长另一种会更高效吗? 数据完整性约束 1.主键约束 原则上,任何列或者列的组合都可以充当一个主键。但是主键列必须遵守一些规则。这些规则源自于关系模型理论和MySQL所制定的以下规则: (1)每个表只能定义一个主键。来自关系模型的这一规则也适用于MySQL。 (2)关系模型理论要求必须为每个表定义一个主键。 (3)表中的两个不同的行在主键上不能具有相同的值,即所谓的“唯一性规则”。 (4)如果从一个复合主键中删除一列后,剩下的列构成的主键仍然满足唯一性原则,那么,这个复合主键是不正确的,这条规则称为“最小化规则”(Minimality Rule)。也就是说,复合主键不应包含任何不必要的列。 (5)一个列名在一个主键的列的列表中只能出现一次。 2.替代键约束 在MySQL中,替代键和主键的区别主要有以下几点: (1)一个数据表只能创建一个主键。但一个表可以有若干个UNIQUE键,并且它们甚至可以重合,例如,在C1和C2列上定义了一个替代键,并且在C2和C3上定义了另一个替代键,这两个替代键在C2列上重合了,而MySQL允许这样。 (2)主键字段的值不允许为NULL,而UNIQUE字段的值可取NULL,但是必须使用NULL或NOT NULL声明。 (3)一般创建PRIMARY KEY约束时,系统会自动产生PRIMARY KEY索引。创建UNIQUE约束时,系统自动产生UNIQUE索引。 3.参照完整性约束 当指定一个外键的时候,以下的规则适用: (1)被参照表必须已经用一条CREATE TABLE语句创建了,或者必须是当前正在创建的表。 (2)必须为被参照表定义主键。 (3)必须在被参照表的表名后面指定列名(或列名的组合)。这个列(或列组合)必须是这个表的主键或替代键。 (4)尽管主键是不能够包含空值的,但允许在外键中出现一个空值。这意味着,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 (5)外键中的列的数目必须和被参照表的主键中的列的数目相同。 (6)外键中的列的数据类型必须和被参照表的主键中的列的数据类型对应相等。 4.CHECK完整性约束 【例5.14】创建表student,只包括学号和性别两列,性别只能是男或女。 create table student ( 学号 char(6) not null, 性别 char(1) not null check(性别 in (男, 女)) ); 例如,可以在条件中加入子查询,下面举个例子。 【例5.16】创建表student2,只包括学号和性别两列,并且确认性别列中的所有值都来源于student表的性别列中。 create table student2 ( 学号 char(6) not null, 性别 char(1) not null check( 性别 in ( select 性别 from student) ) ); Thanks create table student2 ( 学号 char(6) not null, 性别 char(1) not null check( 性别 in ( select 性别 from student) ) ); 3.对商品表中分类编号创建外键,以保证当要删除分类表中catid列的值时,商品表中catid列中还有该值的记录,则拒绝对分类表的删除操作。 4.创建orders表中userid列的外键,要求保证当要删除或更新account表中数据时,只要orders中还有该客户订单,就拒绝对account表进行的删除和更新操作。 5.在明

文档评论(0)

1亿VIP精品文档

相关文档