根据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、全文索引
|