sql中索引简单理解

  • 外键的使用
    两张表: sys_user_test (用户表) sys_type_test (性格表)
  • 外键的建立

然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思:

“名”:  可以不填,你一会保存成功系统会自动生成。

    “字段”:就是你要把哪个键设置为外键。这里选择‘type_id’

     “被引用的模式”: 外键关联的数据库。

     “被引用的表”: 关联的表 这里是sys_type_test表

    “被引用的字段”:关联的的字段,这里是type_id(sys_type_test )

    “删除时":就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,sys_user_test->type_id字段会设置为null。

   “ 更新时”:就是更新的时候选择的动作。这里我的选择是CASCADE,意思就是当关联的表更新以后, sys_user_test->typeID字段会设置为级联更新。
  • 示例
    先查询->再删除 ->再查询
SELECT
	* 
FROM
	sys_user_test a
	LEFT JOIN sys_type_test b ON a.type_id = b.type_id 
WHERE
	1 =1
	
	
DELETE 
FROM
	sys_type_test 
WHERE
	type_id = 5

sql server查询引用的外键 sql如何引用外键_外键

sql server查询引用的外键 sql如何引用外键_字段_02


注意:外键关联的字段,如果父表(sys_type_test)中没有对应的值,那么数据插入到表( sys_user_test )会报错误:

sql server查询引用的外键 sql如何引用外键_mysql_03

  • 外键建立二
    配置为RESTRICT或者No Action

    当执行删除父类(sys_type_test)的数据时
DELETE 
FROM
	sys_type_test 
WHERE
	type_id = 5

sql server查询引用的外键 sql如何引用外键_字段_04


表示 sys_user_test (用户表)中含有type_id为5的数据所以不能被删除

  • 外键建立三
    配置为CASCADE

    当执行删除父类(sys_type_test)的数据时
DELETE 
FROM
	sys_type_test 
WHERE
	type_id = 5


SELECT
	* 
FROM
	sys_user_test a
	LEFT JOIN sys_type_test b ON a.type_id = b.type_id 
WHERE
	1 =1

sql server查询引用的外键 sql如何引用外键_字段_05


删除父类中的type_id时,sys_user_test(用户表)也会被同时删除

  • 索引介绍

normal:表示普通索引

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique

full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

  • 索引使用介绍

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引,基本原则:

1.选择唯一性索引
2.为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4.限制索引的数目
5.尽量使用数据量少的索引
6.尽量使用前缀来索引
7.删除不再使用或者很少使用的索引
8.经常更新修改的字段不要建立索引(针对mysql说,因为字段更改同时索引就要重新建立,排序,而Orcale好像是有这样的机制字段值更改了,它不立刻建立索引,排序索引,而是根据更改个数,时间段去做平衡索引这件事的)
9、不推荐在同一列建多个索引

ps:持续更新