sql索引、外键

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
	

在这里插入图片描述

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

  • 外键建立二
    配置为RESTRICT或者No Action
    在这里插入图片描述
    当执行删除父类(sys_type_test)的数据时
DELETE 
FROM
	sys_type_test 
WHERE
	type_id = 5

在这里插入图片描述
表示 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

在这里插入图片描述
删除父类中的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:持续更新

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上编程2705

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值