一、MySQL概述
通过SQL语句可以操作数据库
关系型数据库:
只要是关系型数据库就可以用SQL语句这一统一标准进行操作数据库
1.MYSQL数据模型
客户端通过SQL语句交给了数据库管理系统DBMS,进行相应操作,创建一个一个数据库,体现为一个一个文件夹,其相互独立,再在数据库中可以创建一个一个二维表数据。
2.SQL简介
二、MYSQL-DDL
1.SQL语句
首先进行数据库设计
查询当前数据库,就是到后面不知道是哪个数据库的时候使用
2.MYSQL客户端工具
IDEA集成了这个工具
3.表的创建
SQL语句varchar()是字符串
创建表后就可以定义内容:新建和上传
但是发现id可以重复,所以要用到约束:
auto_increment会自动增加,默认从1
id是唯一标识,所以它使用primary key,而username不是标识所以使用not null 和unique
4.表的创建-数据类型
数值类型:
在后面加上 unsigned是无符号
年龄:age tinyint unsigned
小数前一个是整数位后一个是小数位
分数score double(4,1)
字符串类型:
对于性别数量确定的就是用char。
日期:
若是生日这种日期使用date,是操作时间需要准确时间点就用datetime.
案例:
4.表的操作-查询&修改
是对表头进行修改
下拉就行;打开表;右键edit
可以直接图形化操作
删除右键drop就行
三、MYSQL-DML
1.添加数据
2.更新数据
如果没有where语句就会更新所有该列字段的值
3.删除数据
四、MYSQL-DQL
1.基本查询
需要什么数据都罗列出来
设置别名若有空格或者其他符号使用引号
这样可以看所有种类
2.条件查询
、
模糊查询下划线代表单个字符,%代表任意字符
3.分组查询
①聚合函数
②分组查询
返回的是两类一个是gender一个是聚合函数
分组后还有条件筛选就使用having关键字
执行顺序,先进行where的过滤,不满足条件的是不会进行分组操作的,第二部分就是分组操作和聚合函数,第三部分就是对分组后的再进行条件过滤
4.排序查询
排序查询就是在之前的查询中在后面使用order by来进行升序降序排序
如果有两个参数,代表之前参数相同时按第二个排序
5.分页查询
案例:
语句太长可以按ctrl+alt+L
这里时如果gender=1取的是男性员工,否是女性员工,性别是表头别称,
五、MYSQL-多表设计
1.一对多
多的一方添加外键关联多的一方
①概述
一个部门有多个员工
创建部门表和员工表
员工表中的dept_id就代表了部门中的主键id
②外键
可以发现之前中两个表之间,删除父表中的数据,子表不会发生变动,两个表相互独立
通过外键约束
子表中的dept_id是外键字段
没有关联才可以删除
现在一般不使用外键,通过代码保证逻辑性
2.一对一
将一个用户信息拆分为两个,由于基本信息经常调用,而身份信息不经常这样拆分提高效率
如何实现一对一
3.多对多
使用外键太复杂
案例:
分类表包含:菜品分类和套餐分类,菜品与分类表是一对多,套餐和分类表也是一对多,而菜品和套餐是多对多
分类表:
菜品表:
套餐表:
套餐菜品关系表:
记录的是这个套餐下这个菜品的份数
六、MYSQL-多表查询
这样查询会出现笛卡尔积:
让dept_id和id相同条件
1.内连接查询
inner可以省略
如果表名太长可以起别名:
2.外连接查询
左外连接就会查询到左边自己部分和交集部分
左外连接会完全包含左表的数据以及交集数据,语句中left jion就是说左边表全部保留
3.子查询
①标量子查询
对于a就是子查询
本来两条语句可以合并成一条
②列子查询
in意思也是属于的意思
③行子查询
④表子查询
作为临时表,限制查询范围,在临时表的基础上进行查询
案例:
是多表设计中的案例信息
查询如何书写:首先看需要哪些表,先写出查询中表之间的关系语句,再添加相应的条件,没有特殊说明关系就采用内连接
查询了不同分类中最高的价格,就得对菜品按分类进行分组,并查询出每组中最高的价格
只要分组了就得有聚合函数
要查询哪几个表就先在from后罗列出来,然后在where后将这几个表之间的关系联系起来,这就是基础查询
七、事务
1.事务的概念以及操作
解散部门,删除部门并删除部门下员工一起删除。
这样两条语句就是两个事物,一个事物就会要么同时成功,要么同时失败
如何将几条语句变成一个事物:
不使用commit在其他窗口不会出现删除,如果出现错误,没commit就可以使用rollback就可以把删除的数据回复
2.事务四大特性
事务一致性:就是保证成功都执行,失败都不执行。
八、索引
未建立索引的时候,数据量大查询效率低
在创建表的时候就为要经常查询的字段建立索引:
之后再查询的话就会很快
1.索引的介绍
类似目录的作用
没有索引就会依次进行查询看是否满足条件,全表扫描
二叉搜索树
2.索引的数据结构
多路平衡搜素树:
上面都是非叶子节点,其起索引的作用,所有数据存储在叶子节点中
3.索引的操作语法
如果在创建字段的时候是unique就会创建索引