mysql面试必会必知

本文介绍了MySQL中的表复制、去重合并查询、外连接(左连接和右连接)、主键和外键约束、索引优化及事务的基本概念和使用。通过实例展示了如何在数据库中实现数据的复制、去重、关联查询以及确保数据完整性和性能的方法。
摘要由CSDN通过智能技术生成

根据B站韩顺平老师做的笔记

表复制

自我复制数据(蠕虫复制)
有时对某个sql 语句进行效率测试 我们需要海量数据是 可以使用此法为表创建海量数据
在这里插入图片描述

演示如何进行自我复制
(1)先把emp表的记录复制到my_tab01

在这里插入图片描述
(2)自我复制

在这里插入图片描述

表like复制

用来创建一个类似的数据库表
在这里插入图片描述
此时生成完只是表结构相似 但是里面的内容是没有的

在这里插入图片描述
所以将emp里面的内容插入到 my_tab02 时

在这里插入图片描述
查看是否复制成功
在这里插入图片描述

考虑去重

首先创建一个表 my_tmp 该表的结构和mytab02一样
在这里插入图片描述
把my_tmp的记录 通过distinct 关键字 把记录复制到my_tmp

在这里插入图片描述
清除掉my_tab02 记录
在这里插入图片描述
把my_tmp 表的记录复制到my_tab02

drop 掉临时表 my_tmp
在这里插入图片描述

合并查询

在实际应用中 为了合并多个select 语句 可以使用集合操作符号 union,union all, union.sql

(1)union all
该操作符 用于取得两个结果集的并集 当使用该操作符的时候不会取消重复行

(2)union
该赋值操作和 union相似 但是会自动去掉 结果集中重复的行

mysql外连接

利用where子句对两张表或者多张表进行 笛卡尔积筛选 根据关联条件 显示所有的匹配的结果 匹配不上不显示

使用多表查询sql 看效果
在这里插入图片描述

外连接
1、左外连接 如果左侧的表完全显示我们的就说是左外连接
2、右外连接 如果右侧的表完全是显示我们的我们就说是右外连接

左外连接

前期准备
(1)创建stu

在这里插入图片描述
(2)插入数据
在这里插入图片描述
在这里插入图片描述

创建一个exam表
在这里插入图片描述
插入数据
在这里插入图片描述
在这里插入图片描述

使用左连接 显示所有人的成绩如果 没有成绩 也要显示该人的姓名和id号成绩显示为空

在这里插入图片描述

右外连接

使用右连接 显示所有人的成绩如果 没有成绩 也要显示该人的姓名和id号成绩显示为空

在这里插入图片描述

eg案例

列出部门名称和这些部门的员工信息(名字和工作 )
同时列出哪些没有员工的部门名
使用左外连接实现

在这里插入图片描述

primary key主键 基本使用

1、primary key 不可以重复而且不能为null
2、一张表最多只能有一个主键 但可以是复合主键
3、主键的指定方式有两种
3.1 直接在字段名后指定 字段名 primary key
3.2 在表定义最后写 primary key(列名)
4、使用desc 表名 可以看到primary key的情况

在这里插入图片描述

主键列的值不可以重复

在这里插入图片描述

一张表最多只能有一个主键 但可以是复合主键

不可以有两个 primary key 来进行指定
在这里插入图片描述
复合主键
在这里插入图片描述
显示结果为
在这里插入图片描述
如果 符合主键的两个索引字段的内容相等就会 出现插入不成
在这里插入图片描述

单个主键的设置方法一

在这里插入图片描述
单个主键的设置方法二

在这里插入图片描述

mysql 约束

约束用于确保数据库的数据满足特定的商业规则
在mysql中约束包括
not null 不为空
unique
primary key
foreign key
check 五种

unique

表示该列的内容是不可以重复的
创建一个表其中 id 不可以重复
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

unique 细节

如果没有指定not null 则unique 字段可以有多个null
在这里插入图片描述
如果一个列(字段) 是unique not null 使用效果类似primary key

一张表可以有多个 unique 字段
在这里插入图片描述
在这里插入图片描述

foreign key 外键

用于定义主表和从表之间的关系 外键约束要定义在从表上主表则必须具有主键约束
或者unique 约束
当定义外键约束后 外键列数据必须在主键列存在或是为null
在这里插入图片描述
在这里插入图片描述

mysql 约束:
1、外键指向的表的字段 要求是 primary key 或者是 unique
2、 表的类型是innodb 这样表才支持外键
3、外键的字段的类型要和主键字段的类型一致(长度可以不同)
4、外键字段的值 必须在主键字段出现过 或者为null
5、一旦建立主外键关系 数据不能随意删除

MySQL约束

用户强制行数据必须满足的条件 假定在sal 列上定义了check 约束 并要求sal列值在1000~2000之间
如果不在1000~2000之间就会提示出错
oracle 和sql server 均支持check 但是mysql5.7目前还不知道check 只做语法校验 但不会生效
mysql 中现实check 的功能 一般是在程序控制 或者通过触发器完成

在这里插入图片描述

mysql约束练习

在这里插入图片描述

自增长

自增长基本介绍
1、一般来说自增长是和primary key 配合使用
2、自增长也是可以单独使用 一般需要配合一个unique
3、增长修饰的字段为整数型
4、自增长默认从1开始 也可以通过alter table 表名 auto_increatment = xxx
5、如果添加数据的时候 自增长字段指定的有值 则以指定的值为准 如果指定了自增长 一般来说
就按照自增长的规则来添加数据

在这里插入图片描述

MySQL索引

提高数据库性能 索引是最物美价廉的东西 不用加内存 不用该程序 不用调用sql 查询结果 就可以提高百倍千倍

1、主键索引
2、唯一索引 unique
3、普通索引
4、全文索引

MySQL索引优化

之前写项目索引优化

MySQL索引事务形成原因

事务形成

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值