CHECK约束 CREAT TABLE STUDENT ( SNO CHAR(9), SNAME CHAR(8) NOT NULL, SSEX CHAR(2), SAGE SMALLINT, SDEPT CHAR(20), PRIMARY KEY (SNO), CHECK(SSEX = ‘女’ OR SNAME NOT LIKE ‘MS. %’) /*定义了元组中SNAME 和SSEX两个属性值之间的约束条件*/ ) CREATE TABLE ORDER_ITERM ( ID INT PRIMARY KEY, /*列级完整性约束条件,ID为主键*/ AMOUNT INT CHECK (AMOUNT100),/*商品数量不得超过100件*/ PRODUCT_ID INT, USER_ID INT REFERENCES USER(ID), FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT(ID) ); 1.索引的特点 简单地说,一个索引就是一个指向表中数据的指针。例如,若读者想找出一本书中讨论某主题的所有页码,首先需要去查阅按字母顺序列出的包含所有主题的索引,然后再去阅读某些特定的页。在数据库中,索引具有同样的作用,一个查询指向基本表中数据的确切物理地址。实际上,查询都被定向于数据库中数据在数据文件中的地址,但对查询者来说,它是在参阅一张表。 2.索引的用途 由于基本表中的列比较多(有的可达几百列),元组也比较多(大的数据库中的元组可达数万个),因此数据文件会很大。 保证数据的唯一性。索引的定义中包括定义数据唯一性的内容。当定义了数据唯一性的功能后,在对相关的索引项进行数据输入或数据更新时,系统要进行检查,以确保其数据的唯一性成立。 加快表连接的速度。 3.创建索引的原则 索引的创建和维护由DBA和DBMS完成。 是否创建索引取决于表的数据量大小和对查询的要求。 对于一个基本表,不要建立过多的索引。 4.索引的类型及选择 (1)单列索引。单列索引是对基本表的某一单独的列进行索引,是最简单和最常用的索引类型,它是在表的某一列的基础上建立的。 (2)唯一索引。唯一索引不允许在表中插入任何相同的取值。使用唯一索引不但能提高性能,还可以维护数据的完整性。 (3)复合索引。复合索引是针对基本表中两个或两个以上的列建立的索引。 索引的优点 (1)创建唯一性索引,保证数据库表中每一行数据的唯一性。 (2)大大加快数据的检索速度,这也是创建索引的最主要的原因。 (3)加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 (4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 (5)通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。 索引的缺点 (1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 (2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 (3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。 字符串匹配—例子(续) 匹配模板为含通配符的字符串(续) [例16] 查询姓欧阳且全名为三个汉字的学生的姓名。 SELECT Sname FROM Student WHERE SnameLIKE 欧阳__; * 字符串匹配—例子(续) 匹配模板为含通配符的字符串(续) [例17] 查询名字中第2个字为阳字的学生的姓名和学号。 SELECT Sname,Sno FROM Student WHERE SnameLIKE __阳%; * 字符串匹配—例子(续) 匹配模板为含通配符的字符串(续) [例18] 查询所有不姓刘的学生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 刘%; * 字符串匹配—例子(续) 3) 使用换码字符将通配符转义为普通字符 [例19] 查询DB_Design课程的课程号和学分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE ‘DB\_Design’ ESCAPE ‘\’; * 字符串匹配—例子(续) 使用换码字符将通配符转义为普通字符(续) [例20] 查询以DB_开头,且倒数第3个字符为i的课程的详细情况。 SELECT * FROM Course WHERE Cname LIKE DB\_%i_ _ ESCAPE \; * 字符串匹配—例子(续) 使用换码字符将通配符转义为普通字符(
原创力文档

文档评论(0)