- 八、关系表
- 1.表的关系有三种 一对一,一对多,多对多
- 关系通过关系字段(外键) 建立
- 如果A表和B表是一对一关系 关系字段可以设计在A或B表中
- 如果A表和B表是一对多关系 关系字段设计在B表中
- 如果A表和B表是多对多关系 新建一张表,存储A表和B表的关系
- 2.关系表的创建
- 创建表的时候添加关系字段与外键约束(添加上外键约束,当在关系字段中插入A表中不存在的id会报错)
- 关系字段 int,
- foreign key(关系字段) references A表名(id));
- 也可以后期添加外键约束
- alter table 关系表 add constraint 名字 foreign key(关系字段) references A表名(id)
- 3.关系表的查询
- 1.内连接
- 1.select 表1.字段 as 别名,表2.字段 as 别名,表3.字段 as 别名 from 表3
- inner join 表1 on 表3.关系字段=表1.id
- inner join 表2 on 表3.关系字段=表2.id
- 把表1某列和表2某列 通过各自id=表3的关系字段 的关系 和表3 某列连接在一起组成,表3为关系表
- 2.select 表1.字段 as 别名,表2.字段 as 别名,表3.字段 as 别名 from 表1
- inner join 表3 on 表3.关系字段=表1.id
- inner join 表2 on 表3.关系字段=表2.id
- 以非关系表建立连接,必须先和关系表建立连接(表三)
- 比如分数表(关系表) 与 学生表 和 学科表
- 2.左连接和右连接
- 表1 lift join 表2 相当于 表2 right join 表1
- 表示:表1与表2匹配的行会出现在结果中,外加表1中独有的数据,B表未对应的数据使用null填充
- 1.内连接
- 1.表的关系有三种 一对一,一对多,多对多
- 九、自关联
- 自关联,表中的某一列,关联了这个表中的另外一列,但是它们的业务逻辑含义是不一样的,城市信息的pid引用的是省信息的id
- (如果两个表的字段相同,而且每种信息的数据量有限)
- 例如创建自关联的省城市表
- create table areas(
- id int auto_increment primary key not null,
- atitle varchar(20),
- pid int,
- foreign key(pid) references areas(id)
- );
- 查询
- select city.atitle,province.atitle from areas as city
- inner join areas as province on province.id = city.pid
- where province.atitle = "山西省";
- 必须给areas表起别名 通过市的pid与省的id相同‘链接’表
- 十、视图
- 1.本身是对sql查询语句的封装 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
- 视图的用途就是简化查询
- 2.意义:
- 1.对于复杂的sql查询语句维护不方便
- 2.从不同的角度存在不同的数据形式
- 3.视图的特性
- 试图本身并没有确切的数据,他的数据来源于定义查询语句时候的基本表
- 当基本表发生变化时,调用视图所得的结果也会发生改变
- 4.使用
- 1.show tables 查看视图
- 2.create view 视图名 as sql查询语句
- 3.alter view 视图名 as sql查询语句
- 4.rename view 原视图名 to 新视图名
- 5.drop view 视图名 删除视图
- 5.可以在简化sql查询语句的视图上继续使用where 过滤
- create view v_age select * from 表名 where age > 18;
- select * from v_age where name="张三";
- 十一、索引
- 1.意义:当数据量大,查询数据会变慢,可以使用索引提高访问的性能 主键和唯一索引提高查询速度
- 2.使用 (检测添加索引后的效率)
- 1.set profiling=1 开启运行时间检测
- 2.在大数据表中 执行sql 查询语句 例如 select name from students;
- 3.create index 索引名 on 表名(字段名) 给查询的字段添加索引 create index indexname on students(name);
- 4.再次执行2步骤
- 5.show profiles 查看检测的时间
- 3.拓展
- create index 索引名 on 表名(字段1,字段2) 组合索引 当查询两个字段时,使用组合索引,才能提高效率
- show index from 表名 查看索引
- drop index 索引名 on 表名 删除索引
- 4.缺点
- 降低了更新表速度,比如添加,修改,删除数据 ,因为不仅保存sql数据,还要保存索引文件
- 十二、事务
- 1.保证一个复杂业务逻辑的完整性和准确性
- 当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回
- 使用事务可以完成退回的功能,保证业务逻辑的正确性;
- 2.查看引擎 show engines 查看创建表的相关信息 show create table 表名
- 支持事务的引擎 innodb
- 3.操作
- 1. begin; 开启事务
- 2. 数据更改 比如 update,insert,delete
- 3. rollback; 当数据更改反悔时可以回退
- 4. commit 提交并关闭事务
- 1.保证一个复杂业务逻辑的完整性和准确性
mysql 基本操作2
猜你喜欢
转载自blog.csdn.net/qq_41654985/article/details/80542831
今日推荐
周排行