【数据库8】索引与约束

原文链接:http://blog.csdn.net/coder_pig/article/details/43865673



1.索引

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

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

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

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

可自行百度~



①创建索引:

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

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

  1. CREATE INDEX idx_person_name ON T_Person(FName)  

或者为多个字段创建索引

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


②删除索引

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

  1. DROP INDEX T_Person.idx_person_name;  
  2. DROP INDEX T_Person.idx_person_union;  




2.约束

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

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

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

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

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



①非空约束:

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

比如创建一个测试表:

  1. CREATE TABLE T_Test(FOne INTEGER NOT NULl)  

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

  1. INSERT INTO T_Test(FOne)VALUES(NULL);  

执行上述SQL:



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



②唯一约束:

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


1)单字段唯一

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

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

往表中插入数据:

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

运行上述SQL:



2)复合唯一约束:

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

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

这个时候就可以使用:

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

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

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




③CHECK约束:

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

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

创表SQL:

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

插入SQL:

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

运行上述SQL:



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

建表SQL:

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

插入SQL:

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

运行SQL:





④主键约束:

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

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

SQL语句如下:


  1. ALTER TABLE T_Test ADD PRIMARY KEY(FOne)  



⑤外键约束:

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

例子:



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

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




最后说两句:

关于SQL中的索引与约束的知识点就介绍到这里~大笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值