环境说明
操作系统:ubuntu
数据库版本:mysql 8.0
服务管理:service 命令(适配非 systemd 容器环境)
登录方式:
-
常规登录:
mysql -u root -p -
本机免密登录:
sudo mysql
一、SQL 语言四大分类
|
分类 |
全称 |
核心作用 |
常用命令 |
|---|---|---|---|
|
ddl |
数据定义语言 |
定义、修改、删除数据库结构(库、表、索引) |
create、alter、drop、truncate、rename |
|
dml |
数据操作语言 |
操作数据表中的具体行数据(增删改查) |
insert、select、update、delete |
|
dcl |
数据控制语言 |
管理数据库用户、分配与撤销权限 |
create user、alter user、drop user、grant、revoke |
|
tcl |
事务控制语言 |
管理数据库事务,保证数据一致性 |
commit、rollback、savepoint |
记忆口诀
-
ddl → 动结构(库、表的框架形状)
-
dml → 动数据(表中的行记录数据)
-
dcl → 动权限(控制用户访问操作权限)
二、数据库与表操作(ddl 语句)
1. 数据库基础操作
-- 查看所有数据库
show databases;
-- 创建数据库
create database 数据库名 ;
-- 切换/选中指定数据库
use 数据库名; -- 查看当前正在使用的数据库 select database();
-- 删除数据库
drop database 数据库名;
2. 数据表基础操作
-- 查看当前库下所有数据表
show tables;
-- 通用建表语法(列名 + 数据类型 + 约束)
create table 表名 ( 列1 数据类型 约束, 列2 数据类型 约束, ... );
-- 常用字段约束说明
-- primary key 主键,唯一且非空,一张表仅一个主键
-- not null 字段不能为空
-- auto_increment 整数类型自增,一般搭配主键使用
-- default 为字段设置默认值
-- 实战示例:
创建 students 学生表 create table students ( id int primary key auto_increment, name varchar(50) not null, age int, grade varchar(10), city varchar(50) default '未知' );
-- 快速查看表结构(字段、类型、约束)
desc 表名;
-- 完整查看建表语句(包含字符集、索引等全部细节)
show create table 表名\g;
-- 修改表结构
-- 1. 新增字段
alter table 表名 add 列名 类型 约束;
-- 2. 修改字段(重命名+改类型+改约束)
alter table 表名 change 原列名 新列名 类型 约束;
-- 3. 删除字段
alter table 表名 drop 列名;
-- 4. 重命名数据表
rename table 旧表名 to 新表名;
-- 删除数据表
drop table 表名;
三、数据增删改查(dml 核心 curd)
1. 插入数据(insert)
-- 方式1:全列插入(严格匹配建表字段顺序,自增列填null/0)
insert into 表名 values (值1, 值2, ...);
insert into students values (null, '张三', 20, 'A', '北京');
-- 方式2:指定列插入(仅写入部分字段,其余字段用默认值/null)
insert into 表名 (列1, 列2, ...) values (值1, 值2, ...);
insert into students (name, age, grade) values ('李四', 22, 'B');
-- 方式3:set 单行插入(直观适配少量数据)
insert into 表名 set 列1=值1, 列2=值2, ...;
insert into students set name='王五', age=23, city='上海';
-- 方式4:批量插入(高效写入多行数据)
insert into students (name, age) values
('赵六', 19),
('孙七', 21);
2. 查询数据(select,最常用语句)
-- 查询表中所有列数据 select * from 表名; -- 查询指定列数据(推荐,精准高效) select 列1, 列2 from 表名; -- 带条件精准查询 select * from 表名 where 条件; -- 常用查询条件示例 where age > 20; -- 数值大小判断 where grade = 'A' and city = '北京'; -- 多条件同时满足 where name like '张%'; -- 模糊查询(匹配张开头) where age between 18 and 22; -- 区间查询 -- 结果排序(asc升序,desc降序,默认asc) select * from 表名 order by 列名 asc|desc; -- 限制查询结果行数(分页常用) select * from 表名 limit 10; -- 聚合统计查询 select count(*) from 表名; -- 统计总行数 select avg(age) from students; -- 计算平均年龄
3. 修改数据(update)
-- 核心规则:必须加where条件,否则修改全表数据!
update 表名 set 列1=值1, 列2=值2 where 条件;
-- 示例1:修改单字段数据
update students set age = 25 where id = 1;
-- 示例2:同时修改多个字段数据
update students set grade = 'A+', city = '深圳' where grade = 'A';
4. 删除数据(delete / truncate)
-- 精准删除指定行数据(必须加where)
delete from 表名 where 条件;
-- 示例:删除id=3的学生数据
delete from students where id = 3;
-- 两种清空表方式区别
delete from students; -- 删除所有数据,保留表结构,自增id不重置,可回滚
truncate table students; -- 清空全表,重置自增id,ddl语句,不可回滚、速度更快
四、用户与权限管理(dcl 语句)
1. 用户管理
-- 查看数据库所有用户及允许登录主机
select host, user from mysql.user;
-- 创建用户(主机参数:localhost仅本机、%任意主机、指定IP)
create user '用户名'@'主机' identified by '密码';
-- 修改用户密码
alter user '用户名'@'主机' identified by '新密码';
-- 删除指定用户
drop user '用户名'@'主机';
2. 权限分配与撤销
-- 授权语法:grant 权限 on 数据库.表 to 用户
-- 常用权限:all privileges(所有权限)、select、insert、update、delete、create、drop
grant 权限列表 on 数据库名.表名 to '用户名'@'主机';
-- 示例1:授予用户本机所有库表全部权限
grant all privileges on mydb.* to 'testuser'@'localhost';
-- 示例2:授予用户任意主机仅查询权限
grant select on mydb.* to 'testuser'@'%';
-- 查看指定用户拥有的权限
show grants for '用户名'@'主机';
-- 撤销用户权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机';
-- 刷新权限(授权/撤权后必须执行,生效配置)
flush privileges;
3. 用户切换方式
-- 退出当前mysql会话
exit;
-- 或 quit;
-- shell终端重新登录新用户
mysql -u 新用户名 -p
五、常见报错与避坑指南
|
报错提示 |
问题原因 |
解决方法 |
|---|---|---|
|
no database selected |
未选中任何数据库,直接执行表操作 |
先执行 |
|
table 'xxx' doesn't exist |
表名拼写错误、大小写不匹配或库选择错误 |
|
|
error 2002 (hy000) |
mysql服务未启动或异常 |
|
|
update/delete 全表数据变更 |
未添加where条件,高危误操作 |
操作前先用select验证条件,务必加where |
|
中文乱码 |
数据库字符集非utf8mb4 |
建库时指定 utf8mb4 字符集与排序规则 |
|
远程连接失败 |
mysql绑定本地IP,禁止外网访问 |
修改配置文件 |
六、MySQL 服务启停管理(service 版)
# 启动mysql服务
sudo service mysql start
# 停止mysql服务
sudo service mysql stop
# 查看服务运行状态
sudo service mysql status
# 重启mysql服务(修改配置后必执行)
sudo service mysql restart
七、核心命令速查表
|
操作需求 |
核心命令 |
|---|---|
|
登录mysql |
mysql -u root -p |
|
查看所有数据库 |
show databases; |
|
切换数据库 |
use 数据库名; |
|
查看当前库所有表 |
show tables; |
|
查看表结构 |
desc 表名; |
|
插入数据 |
insert into 表名(列) values(值); |
|
查询数据 |
select * from 表名 where 条件; |
|
修改数据 |
update 表名 set 列=值 where 条件; |
|
删除数据 |
delete from 表名 where 条件; |
|
创建用户 |
create user 'user'@'host' identified by 'pwd'; |
|
授予权限 |
grant all on 库.* to 'user'@'host'; |
|
刷新权限 |
flush privileges; |
|
退出mysql |
exit; |
&spm=1001.2101.3001.5002&articleId=164031416&d=1&t=3&u=8f65d96b439247bfbb6b61d226bcd71c)
732

被折叠的 条评论
为什么被折叠?



