MySQL速忆笔记(更新中)
本笔记不适合初学者观看,如果想细致了解数据库的初学者可以前往数据库杂谈全集深入了解。
数据库原理指路:数据库杂谈(一)
另外希望能看到这篇笔记的同志能点个赞,在内卷的时代分享知识不容易。
1 准备工作
1.1 启动与停止
net start mysql80 net stop mysql80
- 1
- 2
其中mysql80为window服务器名字。
1.2 客户端连接
mysql [-h 127.0.0.1] [-p 3306] -u root -p
- 1
系统自带的命令行工具执行指令。需要注意的是使用这种方式时需要配置PATH环境变量。
2 SQL
分为DDL,DML,DQL,DCL。
2.1 数据库操作
查询所有数据库
show databases;
- 1
查询当前数据库
select database();
- 1
创建数据库
create databases [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
- 1
删除
drop database [if exists] 数据库名;
- 1
使用数据库
use 数据库名;
- 1
2.2 表操作
2.2.1 查询数据库中的表
查询当前数据库的所有表
show tables;
- 1
查询表结构
desc 表名
- 1
查询指定表的建表语句
show create table 表名;
- 1
2.2.2 修改表数据
添加属性
alter table 表名 add 属性名 类型(长度) [comment 注释] [约束];
- 1
修改数据类型
alter table 表名 modify 属性名 新数据类型(长度);
- 1
修改字段名和字段类型
alter table 表名 change 旧属性名 类型(长度) [comment 注释] [约束]
- 1
删除属性
alter table 表名 drop 属性名;
- 1
修改表名
alter table 表名 rename to 新表名
- 1
删除表
drop table [if exists] 表名
- 1
删除指定表,并重新创建该表(用于格式化表)
truncate table 表名;
- 1
2.2.3 添加数据
给指定属性添加数据
insert into 表名(属性名1,属性名2,...)values(值1,值2,...);
- 1
给全部字段添加数据
insert into 表名 values(值1,值2,...);
- 1
批量添加数据
insert into 表名(字段名,字段名,...)values(值1,值2,...),(值1,值2,...);
insert into 表名values(值1,值2,...),(值1,值2,...);
- 1
- 2
2.2.4 修改数据
更新数据
update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];
- 1
删除数据
delete from 表名 [where 条件]
- 1
2.3查询
基本语法及执行顺序
select ④
属性列表
from ①
表名列表
where ②
条件列表
group by ③
分组字段列表
having
分组后条件列表
order by ⑤
排序字段列表
limit ⑥
分页参数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
2.3.1 基本查询
设置别名
select 属性1 as 别名1 from 表名
- 1
去除重复记录
select distinct 属性列表 from 表名
- 1
2.3.2 条件查询
基本语法
select 属性列表 from 表名 where 条件列表
- 1
条件列表
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
between… and | 某个范围内 |
in(…) | 在列表中选其一 |
like 占位符 | 模糊查询 |
is null | 是空值 |
and 或 && | 并且(多个条件同时成立) |
or 或 && | 或者(多个条件任意一个成立) |
not 或 ! | 不是 |
2.3.3 聚合函数
函数 | 说明 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
- null值不参与聚合函数运算
- where后不能有聚合函数
2.3.4 分组查询
基本语法
select 属性列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
- 1
需要注意的是where和having的区别:
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行过滤
- 判断条件不同:where不能对聚合函数进行判断,having可以
2.3.5 排序查询
基本语法
select 属性列表 from 表名 order by 属性1 排序方式1,属性2 排序方式2;
- 1
英文 | 排序 |
---|---|
asc | 升序(不指定排序方式默认升序) |
desc | 降序 |
如果不指定属性,只使用排序方式,那么默认对所有属性做排序。
2.3.6 分页查询
基本语法
select 属性列表 from 表名 limit 起始索引 查询记录数
- 1
起始索引从0开始,即起始索引 = (查询页码-1)
分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是Limit
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 查询记录数
2.4 用户管理
查询用户
use mysql
select * from user;
- 1
- 2
创建用户
create user '用户名'@'主机名' identified by '密码';
- 1
修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
- 1
删除用户
drop user '用户名'@'主机名';
- 1
2.5 权限控制
常见权限表
权限 | 说明 |
---|---|
all,all privieges | 所有权限 |
select | 查询数据 |
insert | 插入数据 |
update | 修改数据 |
delete | 删除数据 |
alter | 修改表 |
drop | 删除数据库/表/视图 |
create | 创建数据库/表 |
查询权限
show grants for '用户名'@'主机名';
- 1
授予权限
grant 权限列表 on 数据库名 表名 to '用户名'@'主机名';
- 1
撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
- 1
多个权限之间,使用逗号分割;
授权时,数据库名和表名可以使用*进行通配,代表所有;
文章来源: blog.csdn.net,作者:ArimaMisaki,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chengyuhaomei520/article/details/122801378
- 点赞
- 收藏
- 关注作者
评论(0)