MySQL8.0 从零通关核心操作手册(Ubuntu实战版)

环境说明

操作系统: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

未选中任何数据库,直接执行表操作

先执行 use 数据库名; 选中库

table 'xxx' doesn't exist

表名拼写错误、大小写不匹配或库选择错误

show tables; 查看正确表名,复制使用

error 2002 (hy000)

mysql服务未启动或异常

sudo service mysql start 启动服务

update/delete 全表数据变更

未添加where条件,高危误操作

操作前先用select验证条件,务必加where

中文乱码

数据库字符集非utf8mb4

建库时指定 utf8mb4 字符集与排序规则

远程连接失败

mysql绑定本地IP,禁止外网访问

修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address改为0.0.0.0,重启服务

六、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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值