第13课—数据库之(索引、外键)

数据库之索引
一、索引的介绍
1、什么是索引?

(1)定义:索引是一种数据结构

一个索引在存储的表中的数据结构;

(2)索引是在表的字段上创建的

(3)索引包含了一列值,这个值保存在一个数据结构中

2、索引作用?
(1)保证数据记录的唯一性
(2)实现表与表之间的参照性
(3)减少排序和分组的时间(例如在使用order by ,group by 查询语句中进行数据检索)
(4)可以使用索引快速访问数据库中指定信息

3、索引的缺点?

(1)索引要占物理内存

(2)索引对表进行增删改查,索引要动态维护,降低数据的维护速度

4、索引的分类

(1)普通索引

index 简称 mul 最基本的索引,没有任何限制

(2)主键索引

primary key 简称 pri 是一种唯一索引,不能为空

(3)唯一索引

unique 简称 uni 是一种唯一索引,可为空,一个表中可以有多个唯一索引


以下作为了解:

(4)全文索引
(5)组合索引
(6)单列索引
(7)聚焦索引
(8)非聚焦索引

==========================================

二、索引的应用

1、索引的查询

方法一:
格式:show index from 表名;

案例:show INDEX from emp ;

方法二:

格式:show keys from 表名;

案例:show KEYS from student2 ;

2、查看表结构,通过表结构查看索引
desc 表名

3、创建普通索引

第一种情况:索引名和字段名不一致

格式:alter table 表名 add index 索引名(字段名);

案例:ALTER table student2 add INDEX sym(sex);

简写:mul、

第二种情况:索引名和字段名一致

格式:alter table 表名 add index (字段名);

案例:ALTER table student2 add INDEX (age);

4、唯一索引(唯一,为空,在一个表可以有多个唯一索引)
单词:unique
简写:uni

第一种情况:添加唯一索引名和字段名不一致

格式:alter table 表名 add unique 索引名(字段名)

案例:
alter table student2 add UNIQUE aa(name)

第二种情况:添加唯一索引名和字段名一致

格式:alter table 表名 add unique (字段名)

案例:
alter table student2 add UNIQUE (name)

5、添加主键索引 (唯一,不能为空,一个表中只有一个主键)

单词:primary key 主键

简写:pri

格式:alter table 表名 add primary key (字段名) ;

案例:ALTER table student2 add PRIMARY key (id) ;

6、删除索引:

(1)第一种情况:删除普通索引和唯一索引是同一种方法

格式:alter table 表名 drop index 索引名

案例:alter table student2 drop INDEX aa;

(2)第二种情况:删除主键索引

格式:alter table 表名 drop primary key;

案例:alter table student2 drop primary key ;

===============================================

二、创建方法二(不常用)

格式:create INDEX 索引名 on 表名 (字段名)

案例:create INDEX aa on student2 (english)

==============================================

三、建表时创建索引

格式:

create table 表名( 字段名 字段类型(字符长度) primary key ,字段名 字符类型(字符长度) unique )) ;

案例:

CREATE table wzx( id int(10) PRIMARY key ,name VARCHAR(20) UNIQUE ,age int(10)) ;


索引是对表的一列数据起到约束作用

===========================================

面试题:

1、什么是索引?

2、索引的作用

3、索引有哪些?

4、如何创建索引?

5、主键索引和唯一索引的区别?

============================================================================

数据库之外键> >

一、外键的介绍

1、外键的定义

让一张表记录的数据不要太过于冗余,在数据库中对表的关系进行解耦,尽量让表的数据单一化。

2、外键的作用

保持数据的一致性和完整性

3、msyql 数据库中的存储引擎?
myisam (默认)
innodb (外键需要用到innodb存储格式)

4、查看存储引擎

格式:show table status from 库名 where name='表名' ;
案例:show table status from hz017 where name='student2' ;

5、存储类型:myisam (默认)

6、查看外键方法:

(1)在navicat中查看

(2)
格式:show create table 表名;

案例:show create table cc

二、外键运用
(一)建表时创建外键

(1)创建 engine=INNODB 格式

格式:
CREATE table 表名 (字段名 字段类型(字符长度) PRIMARY key , 字段名 字符类型(字符长度) ,constraint 外键名 FOREIGN key(子表字段)
REFERENCES 父表(父表字段)) engine=INNODB ;

案例:
!父表
create table ss (id int(10) PRIMARY key, name varchar(20) )ENGINE=INNODB ;
!子表
CREATE table cc (cid int(10) PRIMARY key ,cname VARCHAR(20) ,constraint wj FOREIGN key(cid)
REFERENCES ss(id)) engine=INNODB ;

constraint 外键 名 (指定外键名)

FOREIGN key 子表字段 指定的字段

REFERENCES 父表(父表字段) 引用外部表的主键

(二)建表以后再添加外键
格式:
alter TABLE 子表 add CONSTRAINT 外建名 FOREIGN key (子表字段) REFERENCES 父表(父表字段)

(1)新建两个表

!父表
create table xx (id int(10) PRIMARY key ,name varchar(20))engine=INNODB ;

!子表
create table yy (yid int(10) PRIMARY key ,yame varchar(20))engine=INNODB ;

select * from xx ;
SELECT * from yy;
show create table yy;

alter TABLE yy add CONSTRAINT wjm FOREIGN key (yid) REFERENCES xx(id)

==================================================================

删除外键:

格式:alter table 表名 drop foreign key 外键名;

案例:ALTER TABLE yy drop foreign key wjm ;

==================================================================

外键特点:
外键实际操作:
1、当父表不存在的数据,子表也无法插入数据(子表无法插入数据)

2、父表中存在的数据,子表就可以插入数据(插入数据)

3、删除数据,子表中存在的数据,直接删除父表是无法删除 (要先删除子表数据,再删除父表数据)

4、删除父表的数据,先删除子表,再删除父表

=========================================

面试题:
1、什么是外键?
2、外键作用?
3、如何创建外键?
4、如何删除外键
5、公司中为什么使用外键?
(1)保存数据的一致性和完整性

(2)公司数据量大,造成数据重复,新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表,子表单一化,避免数据的冗余。

posted @   影清风  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示