Bootstrap

JavaWeb开发02-MYSQL-DDL-DML-DQL-多表设计-多表查询-事务-索引

一、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就会创建索引

;