javaweb06-Mysql数据库
Mysql
一、概述
1.1 数据模型
关系型数据库RDBMS,由多张二维表组成的数据库
1.2 SQL
- DDL:数据定义语言
- DML:数据操作语言
- DQL:数据查询语言
- DCL:数据控制语言,创建用户,控制数据库访问权限
二、sql语句
2.1 DDL
2.1.1 查询:
- show databases;
- select database();
2.1.2 创建:
- create database;
2.1.3 删除:
- drop database;
2.1.4 约束:
- 非空约束:not null
- 唯一约束:unique
- 主键约束:非空且唯一,primary key,(auto_increment自增)
- 默认约束:default
- 外键约束:foreign key
2.1.5 数据类型
- 数值类型:int、decimal
- 字符串类型:char(定长字符串)、varchar(变长字符串)
- 日期时间类型:date、 datetime
2.2 DML
2.2.1 添加数据:insert
insert into table_name (字段名) values (字段值列表)
2.2.2 修改数据:update
update table_name set 字段名 = 字段值 [where 条件]
2.2.3 删除数据:delete
delete from table_name [where 条件]
2.3 DQL
查询数据库中的记录
2.3.1 分组查询
- 聚合函数:将一列数据作为一个整体,进行纵向计算
-
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
-
执行顺序:where > 聚合函数 > having
2.3.2 排序查询
order by
asc:升序(默认)
desc:降序
2.3.3 分页查询
limit (起始索引,每页展示记录数)
起始索引 = (页码 - 1)* 每页展示记录数
三、多表设计
3.1 一对多
解决多表之间数据不一致性
外键约束
3.2 一对一
任意一方加入外键,关联另一表中的主键,并且添加unique约束
3.3 多对多
建立第三张表,包含两张表的主键
四、多表查询
4.1 概述
从多张表中查询数据:笛卡尔积
分类:
- 连接查询
- 内连接
- 外连接
- 子查询(嵌套查询)
4.2 内连接
隐式内连接:逗号分隔,where条件
显示内连接:join……on条件
起别名
弊:无关联的数据查询不到
4.3 外连接
左外连接:显示左表的全部数据
右外连接:显示右表的全部数据
4.4 子查询
4.4.1 标量子查询
子查询返回的结果是单个的值,单行单列。
常用操作符:= <> > < >= <=
4.4.2 列子查询
子查询返回的是一列数据
常用操作符:in,not in
4.4.3 行子查询
合并多个条件
4.4.4 表子查询
将子查询返回的结果,作为一张临时表,进行连接查询等操作
五、事务
5.1 概述
事务是一组操作的集合,这些操作要么同时成功,要么同时失败。
- 开启事务:start transaction;
- 提交事务:commit;
- 回滚事务:rollback;
5.2 四大特性
- 原子性:
- 一致性:
- 隔离性:
- 持久性:
六、索引
6.1 介绍
数据结构,提高执行效率
- 优:提高查询效率、排序效率
- 缺:降低增删改的效率
6.2 结构
B+Tree结构
多路平衡搜索树,降低树的深度
6.3 语法
- 创建:create index 索引名 on 表名;
- 查询:show index from 表名;
- 删除:drop index 索引名 on 表名;
注:
- 添加主键时会自动创建主键索引
- 添加unique约束会自动创建唯一索引