一、MySQL简介:
- 点击查看MySQL官方文档
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品
二、命令行连接数据库
- 打开终端输入下面命令连接数据库:
mysql -u用户名 -p数据库的密码
- 退出登录
exit 或 quit 或 ctrl+d
三、MySQL查询命令:
1、MySQL查询
- 查看版本
select version();
- 查看所有数据库
show databases;
- 使用数据库
use 要使用数据库的名字
- 查看当前使用数据库
select database();
- 创建数据库
crate database 数据库名字 charset=utf8;
- 删除数据库
drop database 数据库名字;
- 消除重复行
select distinct 列1,... from 表名;
- 模糊查询
- like
- %表示任意多个任意字符
- _表示一个任意字符
# % 查询姓王的学生
select * from students where name like '王%';
# 查询姓王并且“名”是一个字的学生
select * from students where name like '王_';
- 排序
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]
- 聚合函数
- 总数:count(*)表示计算总行数,括号中写星与列名,结果是相同的
- 最大值:max(列)表示求此列的最大值
- 最小值:min(列)表示求此列的最小值
- 求和:sum(列)表示求此列的和
# 求学生总数
select count(*) from students;
# 查询女生的编号最大值
select max(id) from students where gender=2;
# 查询女生的编号最小值
select min(id) from students where gender=2;
# 查询男生的总年龄
select sum(age) from students where gender=1;
2、连接查询
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
MySQL支持三种类型的连接查询,分别为:
- 内连接查询:查询的结果为两个表匹配到的数据
- 右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
- 左连接查询:查询结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
# 语法
select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列
四、事务
1、事务使用场景
- 事务广泛的运用于订单系统、银行系统等多种场景
2、四大特性:
- 原子性(atomicity)
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
- 一致性(consistency)
数据库总是从一个一致性的状态转换到另一个一致性的状态。
- 持久性(durability)
一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。
- 隔离性(isolation)
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。
3、事务命令
- 开启事务(开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中)
begin;
# 或者
start transaction;
- 提交事务(将缓存中的数据变更维护到物理表中)
# 提交事务
commit;
- 事务回滚(放弃缓存中变更的数据)
rollback;