mysql索引和数据完整性答案_第5章MySQL索引与完整性约束.ppt
第5章MySQL索引與完整性約束
5.3.4 CHECK完整性約束 CHECK完整性約束在創建表的時候定義。可以定義為列完整性約束,也可定義為表完整性約束。 語法格式: CHECK(expr) 【例5.13】創建表student,只包括學號和性別兩列,性別只能是男或女。 create table student ( 學號 char(6) not null, 性別 char(1) not null check(性別 in ('男', '女')) ); 5.3.4 CHECK完整性約束 【例5.14】創建表student1,只包括學號和出生日期兩列,出生日期必須大于1990年1月1日。 create table student1 ( 學號 char(6) not null, 出生日期 date not null check(出生日期>'1990-01-01') ); 5.3.4 CHECK完整性約束 前面的CHECK完整性約束中使用的表達式都很簡單,MySQL還允許使用更為復雜的表達式。例如,可以在條件中加入子查詢,下面舉個例子。 【例5.15】創建表student2,只包括學號和性別兩列,并且確認性別列中的所有值都來源于student表的性別列中。 create table student2 ( 學號 char(6) not null, 性別 char(1) not null check( 性別 in ( select 性別 from student) ) ); 5.3.4 CHECK完整性約束 如果指定的完整性約束中,要相互比較一個表的兩個或多個列,那么該列完整性約束必須定義表完整性約束。 【例5.16】創建表student3,有學號、最好成績和平均成績3列,要求最好成績必須大于平均成績。 create table student3 ( 學號 char(6) not null, 最好成績 int(1) not null, 平均成績 int(1) not null, check(最好成績>平均成績) ); 5.3.5 命名完整性約束 CONSTRAINT關鍵字用來指定完整性約束的名字,語法格式為: CONSTRAINT [symbol] symbol為指定的名字,這個名字在完整性約束的前面被定義,在數據庫里這個名字必須是唯一的。如果它沒有被給出,則MySQL自動創建這個名字。只能給表完整性約束指定名字,而無法給列完整性約束指定名字。 【例5.17】創建與【例5.8】中相同的xs1表,并為主鍵命名。 create table xs1 ( 學號 varchar(6) null, 姓名 varchar(8) not null, 出生日期 datetime null, constraint primary_key_xs1 primary key(姓名) ); 5.3.6 刪除完整性約束 如果使用一條DROP TABLE語句刪除一個表,所有的完整性約束就都自動被刪除了。被參照表的所有外鍵也都被刪除了,使用ALTER TABLE語句,完整性可以獨立地被刪除,而不必刪除表本身。刪除完整性約束的語法和刪除索引的語法一樣。 【例5.18】刪除創建的表xs1的主鍵。 alter table xs1 drop primary key; 刪除前后的效果如下: 第5章 MySQL索引與完整性約束 MySQL索引 5 . 1 5 . 2 MySQL索引創建 MySQL數據完整性約束 5 . 3 5.1 MySQL索引 5.1.1 索引及作用 1. 索引 索引是根據表中一列或若干列按照一定順序建立的列值與記錄行之間的對應關系表。在列上創建了索引之后,查找數據時可以直接根據該列上的索引找到對應行的位置,從而快速地找到數據。 例如,如果用戶創建了xs表中學號列的索引,MySQL將在索引中排序學號列,對于索引中的每一項,MySQL在內部為它保存一個數據文件中實際記錄所在位置的“指針”。因此,如果要查找學號為“081241”的學生信息,MySQL能在學號列的索引中找到“081241”的值,然后直接轉到數據文件中相應的行,準確地返回該行的數據。 5.1.1 索引及作用 2.索引作用 在數據庫系統中建立索引主要有以下作用: 快速讀取數據; 保證數據記錄的唯一性; 實現表與表之間的參照完整性; 在使用GROUP BY、ORDER BY子句進行數據檢索時,利用索引可減少排序和分組的時間。 5.1.1
總結
以上是生活随笔為你收集整理的mysql索引和数据完整性答案_第5章MySQL索引与完整性约束.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么时装linux可用空间变大,[合集]
- 下一篇: linux cmake编译源码,linu