码迷,mamicode.com
首页 > 数据库 > 详细

每天一点数据库之-----Day 8 索引与约束

时间:2015-02-17 19:56:27      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:数据库   基础   新手   快速入门   每天   

每天一点数据库之-----Day 8 索引与约束

                                                                    ----转载请注明出处:coder-pig



1.索引

这个SQL中的索引,前面我们也提过了,使用索引可以提高数据的检索速度,

而关于索引还是比较复杂的,一些概念,比如表组织,堆,数据,数据也,B树等,还有两种

类型的索引:"聚集索引"与"非聚集索引"等,鉴于看本文的都是一些初学者,也只是了解

下数据库的一些常用知识,这里讲解下创建索引与删除索引,有更深层次需求的朋友

可自行百度~



①创建索引:

索引是针对字段的,创建索引时需要指定在那个字段上创建索引,

还可以为多个字段创建一个索引,如:

CREATE INDEX idx_person_name ON T_Person(FName)

或者为多个字段创建索引

CREATE INDEX idx_person_union ON T_Person(FName,Fage,FSex)


②删除索引

接下来把之前创建的索引删掉,很简单:

DROP INDEX T_Person.idx_person_name;
DROP INDEX T_Person.idx_person_union;




2.约束

一般我们在创建数据库表的时候,会为字段定义一个数据类型,虽然规定了一个字段

能存放的数据类型,但是确实远远不够的,例如在录入人员信息时,由于疏忽忘记填写

Name字段,结果就出现了一个没名字的记录,即数据库中的数据遭到污染,为了避免不

正确的数据保存到数据库表中,我们需要在数据库中制定一些约束条件,从而保证数据

的正确性,比如年龄不能为负数等!



①非空约束:

就是设置某个字段不允许为空,只需在字段定义后添加:NOT NULL

比如创建一个测试表:

CREATE TABLE T_Test(FOne INTEGER NOT NULl)

接下来执行下述SQL插入一条数据:

INSERT INTO T_Test(FOne)VALUES(NULL);

执行上述SQL:

技术分享


PS:除了INSERT插入空值会失败外,UPDATE更新 = NULL也是会失败的!



②唯一约束:

就是字段中的值只能是唯一的,只需在字段定义后添加:UNIQUE


1)单字段唯一

先把前面创建的T_Test表DROP掉!接着执行下述建表语句:

CREATE TABLE T_Test(FOne INTEGER UNIQUE,FTwo VARCHAR(20))

往表中插入数据:

INSERT INTO T_Test(FOne,FTwo)VALUES(1,'测试1');
INSERT INTO T_Test(FOne,FTwo)VALUES(1,'测试2');

运行上述SQL:

技术分享


2)复合唯一约束:

就是要多个字段同时唯一,在录入员工信息时,可能出现重名现象,比如两个叫Tom的人,但是他们是

不同部门的,这个时候可以使用符合唯一约束,只有两个相同了,才算重复记录!

这个时候就可以使用:

CONSTRAINT复合唯一约束名称 UNIQUE(部门字段,姓名字段)

当括号中的字段都相同,才算重复,即插入和更新时括号中的字段的值都相同就会报错!

至于这个约束名称你想怎么写都可以~




③CHECK约束:

就是写入数据前判断字段是否符合条件,如果不满足条件,那么这个对数据库的修改不会成功!

比如下面一个简单的例子:(先把前面的表DROP掉哦!)

创表SQL:

CREATE TABLE T_Test(FOne INTEGER,FTwo INTEGER CHECK(FTwo > 0))

插入SQL:

INSERT INTO T_Test(FOne,FTwo)VALUES(1,-1)

运行上述SQL:

技术分享


另一个实用的例子:是否为手机号码,即手机位数需要等于11

建表SQL:

CREATE TABLE T_Test(FOne Integer,FNum VARCHAR(20) CHECK(LEN(FNum)=11))

插入SQL:

INSERT INTO T_Test (FOne,FNum)VALUES(1,'13765653324');
INSERT INTO T_Test (FOne,FNum)VALUES(1,'137656533245');

运行SQL:

技术分享



④主键约束:

主键约束的重要性就不用说了,前面也介绍过了,就是在字段后添加PRIMARY KEY关键字即可!

创建时如何设置主键,这个前面说过很多遍了,就不写了,这里只演示如何为已创建的表设置主键

SQL语句如下:


ALTER TABLE T_Test ADD PRIMARY KEY(FOne)



⑤外键约束:

和主键一样,在Day2创建数据库表就已经介绍了如何创建外键了!

例子:

技术分享


当然和主键一样,我们可能一开始并没有位表创建外键,也是通过ALTER来为表添加外键:

ALTER TABLE 表名 
ADD CONSTRAINT 外键约束名 
FOREIGN KEY(列名) REFERENCES 引用外键表(列名)




最后说两句:

关于SQL中的索引与约束的知识点就介绍到这里~技术分享





每天一点数据库之-----Day 8 索引与约束

标签:数据库   基础   新手   快速入门   每天   

原文地址:http://blog.csdn.net/coder_pig/article/details/43865673

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!