mysql关联

1、索引是什么:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。就好比创建了一个目录。

2、索引的目的是:快速查询,对主键的约束行为。

3、怎么创建索引:index 索引名字(列名)

怎么在创建表之后添加索引:create index  索引名字 on 表名(列名)

添加唯一索引:create unique index 索引名字  on  表名(列名)

删除索引:drop  index  索引名  on  表名(列名)

删除唯一索引:drop unique index 索引名  on 表名(列名)

4、分类都有那些?

主键索引、唯一索引、普通索引、联合索引

索引根据搜索引擎分类:hash索引、btree索引(二分叉算法)

设置不设置索引区别是什么?

不设置:从上往下依次查找(慢)

设置:生成额外索引文件,并且记录当前列表中的地址

5、创建索引的时候要知道:

创建一个索引,提高了查找效率,但是会牺牲一部分储存空间,在数据特别多的时候需要加索引、会加大存储磁盘空间的开销、有时候要设置最短索引、

自关联

1、自连结其实就是连结查询,需要两张表,只不过它的左表(主表)和右表(子表)都是自己。在做自连接查询的时候是自己链接自己,分别给主表和子表取别名,再付加条件执行。


1

2、视图

视图是从一个或者多个表的查询结果导出来的表,它是一种虚拟存在的表,并且表的结构和数据都依赖于基本表,通过视图不仅可以看到存放在基本表中的数据,并且还可以像操作基本表一样,对视图中存放的数据进行查询,与直接操作基本表相比,视图具有一下有点

假如要在虚表中插入数据,要保证虚表里面的列必须含有实表里面没有默认值的列

视图中的字段要和

视图可以对不同的用户(只对用户开放部分列)

3、事务

:可以使整个系统更加安全,保证在同一个事务中的操作具有同步性。

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务的四大特性ACID:原子性 、  一致性  、  隔离性、  持久性。

在进行事务操作时:

先开启事务:begin:

完成之后要提交事务/:commit

当双方的事件都出现问题是 需要回滚rollback :就是把事件还原

当进行完事务之后,如果忘记提交,系统会默认提交

注意:实务操作是一个单元,再次执行之后要重新开启事务。

外键:


什么是外键:外键是指引用另一个表中的一列或者多列,被引用的列应该具有主键约束或者唯一性约束。 外键用于建立和加强两个表数据之间的连接.

为表添加外键

ALTER TABLE 表名 ADD CONSTRAINT FK_ID(外键约束名称) foreign key(外键字段名) REFERENCES 主表(主键字段名)

也可以直接在创建变的时候添加外键 CREATE TABLE student( stu_id int NOT NULL PRIMARY KEY, stu_name varchar(32), cls_id int NOT NULL, CONSTRAINT FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键名) )

添加外键约束说明 我们建立外键是为了保证数据的完整性和一致性,如果主键中的数据被删除或者修改,从表中对应的数据怎么处理? 正确的做法当然是从表中的数据也随之改变,否则数据库中会存在很多无意义的数据,当然mysql帮我们想到了 这些,我们在建立外键时添加 ON DELETE 或则 ON UPDATE字句来告诉数据库,避免垃圾数据的产生 CREATE TABLE student( stu_id int NOT NULL PRIMARY KEY, stu_name varchar(32), cls_id int NOT NULL, CONSTRAINT FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键名) ON DELETE CASCADE )

添加外键:alter table classes add  constraint FK_TDID foreign key(teacherid) references teachers(id) on delete cascade;

连结查询:

select 表名.列名 from 表名 inner join 表名 on  表名.外键 = 表名.主键

查询的结果为两个表匹配到的数据,把都存在的拿出来

外联结分左连结和右连结

左连结  把inner 改为 left 把左表的数据拿出来去匹配右表的数据,对于右表不存在的数据使用null填充。

查询    any 相当于or  all 相当于and  union是把两个select语句连结起来,结果不去重

你可能感兴趣的:(mysql关联)