MySQL
2025-06-18 17:04:23 0 举报
AI智能生成
学习记录
作者其他创作
大纲/内容
通用语法及分类
DDL(Data Definition Language)<br>数据定义语言:用于定义数据库中的对象<br>例如数据库、表、字段<br>
查询所有数据库
show databases;<br>
查询当前数据库
select database();<br>
创建数据库
create database 数据库名;<br>
删除数据库
drop database 数据库名;<br>
使用数据库
use 数据库名;<br>
<b>注意事项</b><br>
UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集
表操作
查询当前数据库所有表
show tables;
查询表结构
desc 表名;<br>
查询指定表的建表语句
show create table 表名;<br>
创建表
<br>
添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];<br>
【例】:alter table emp add username varchar(20) comment '用户名';<br>
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);<br>
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];<br>
【例】alter table emp change username nickname varchar(30) comment '昵称';<br>
删除字段
alter table 表名 drop 字段名;<br>
修改表名
alter table 表名 rename to 新表名;<br>
删除表
drop table 表名;<br>
删除表,并重新创建该表(清空元素)<br>
truncate table 表名;<br>
DML(Data Manipulation Language)<br>数据库操作语言:用于对数据库表中的数据进行增删改<br>
添加数据
指定字段
insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...) ;<br>
全部字段
insert into 表名 values (值1, 值2, ...);<br>
批量添加数据<br>
insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);<br>
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);<br>
<b>注意事项</b><br>
字符串和日期类型应该在 '' 中<br>
插入数据应该在规定范围内
更新和删除数据
修改数据
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... [where 条件]<br>
【例】update emp set name = 'Jason' where id = 1;<br>
删除数据
delete from 表名 [where 条件];<br>
DQL(Data Query Language)<br>数据库查询语言,用来查询数据库表中元素
语法
<br>
基础查询
查询多个字段<br>
select 字段1, 字段2, 字段3, ... from 表名;<br>
select * from 表名;<br>
设置别名
select 字段1 as 别名1, 字段2 as 别名2, ... from 表名;<br>
select 字段1 别名1, 字段2 别名2, ... from 表名;
去除重复记录<br>
select distinct 字段列表 from 表名;<br>
条件查询
语法
select 字段列表 from 表名 where 条件列表;<br>
条件
<br>
<br>
【例】
<br>
聚合查询(聚合函数)<br>
常见的聚合函数
<br>
语法
select 聚合函数(字段列表) from 表名;<br>
【例】select count(id) from emp where workaddress = '重庆市';<br>
分组查询
语法
select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having 分组后的过滤条件 ];<br>
where 和 having 的区别<br>
执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
【例】
子主题
<br>
<b>注意事项</b><br>
执行顺序:where > 聚合函数 > having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
排序查询
语法
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2, 排序方式2;<br>
排序方式
ASC: 升序(默认)<br>
DESC: 降序<br>
【例】
<br>
<b>注意事项</b><br>
如果是多个字段排序,当第一个字段相同的时候,才会对第二个字段进行排序
分页查询
语法
select 字段列表 from 表名 limit 起始索引, 查询记录数;<br>
【例】
<br>
<b>DQL执行顺序</b><br>
FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT
DCL(Data Control Language)<br>数据库控制语言,用来创建数据库用户、控制数据库的控制权限
约束
分类
<br>
常用约束
<br>
【例】
<br>
外键约束
语法
<br>
删除外键
alter table 表名 drop foreign key 外键名;<br>
删除/更新行为<br>
<br>
【例】
alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名(主表字段名)<br> on update 行为 on delete 行为;<br>
多表查询
一对多(多对一)<br>
【例】
部门与员工
多对多
【例】
学生与课程
一对一
【例】
用户与用户详情
查询
合并查询
select * from emp, dept;<br>
笛卡尔积<br>
两个集合A集合和B集合的所有组合情况(在多表查询时,需要消除无效的笛卡尔积)
【例】
select * from emp, dept where emp.dept = dept.id;<br>
内连接查询
内连接查询的是两张表交集的部分
隐式内连接
select 字段列表 from 表1, 表2 where 条件 ...;<br>
显示内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;<br>
<b>显示性能比隐式高</b><br>
【例】
<br>
外连接查询
左外连接
查询左表所有数据,以及两张表交集部分
语法
select 字段列表 from 表1 left [outer] join 表2 on 条件 ...;<br>
相当于查询表1的全部内容,表1和表2交集部分
<br>
右外连接类似
自连接查询
当前表与自身的连接查询,自连接必须使用表别名
语法
select 字段列表 from 表A 别名A join 表A 别名B on 条件 ...;<br>
自连接查询,可以是内连接查询,也可以是外连接查询
【例】
<br>
联合查询 union, union all(未)<br>
事务
事务是一组操作的集合,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,<br>即这些操作要么同时成功,要么同时失败。<br>
基本操作
<br>
四大特性ACID<br>
原子性(Atomicity):事务是不可分割的最小操作但愿,要么全部成功,要么全部失败
一致性(Consistency):事务完成时,必须使所有数据都保持一致状态
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
并发事务
<br>
并发事务隔离级别
<br>
√表示在当前隔离级别下该问题会出现
Serializable 性能最低;Read uncommitted 性能最高,数据安全性最差
函数
字符串函数
常用函数
<br>
【例】
<br>
数值函数
常见函数
<br>
日期函数
常见函数
<br>
流程函数
常见函数
<br>
【例】
<br>
收藏
收藏
0 条评论
下一页