1.登录与退出
登录MySQL
mysql [options]
mysql -uroot -p
| 选项 | 说明 | 示例 |
|---|---|---|
| -u | 指定用户名 | -uroot |
| -p | 提示输出密码 | -p1234 或 -p |
| -h | 指定主机名(默认localhost) | -h192.168.1.100 |
| -P | 指定端口(默认3306) | -P3307 |
| –ssl | 启用SSL安全连接 | –ssl |
| –socket | 指定套接字文件 | –socket=/tmp/mysql.sock |
| –database | 登入后直接使用指定数据库 | –database=testdb |
退出MySQL
exit
quit
2.数据库管理
查看数据库列表
show databases;
创建数据库
create database 数据库名 [options]
create database kuming default character set utf8mb4 collate utf8mb4_general_ci;
| 选项 | 说明 | 示例 |
|---|---|---|
| default character set | 设置数据库的默认字符集 | default character set utf8mb4 |
| default collate | 设置数据库的排序规则(与字符集匹配) | default collate utf8mb4_general_ci |
删除数据库
drop databases 数据库名;
指定数据库
use 数据库名;
use mysql;
查看当前使用的数据库
select database();
3.表管理
查看当前书库的所有表
show tables;
查看表结构
desc 表名;
show columns from 表名;
创建表
create table 表名 (
列名 数据类型 [约束条件]
...
)[options];
create table users (
id int auto_increment primary key,
name varchar(50) not null;
email varchar(100) unique,
created_at timestamp default current_timestamp
) engine=InnoDB default charset=utf8mb4;
| 选项 | 说明 | 示例 |
|---|---|---|
| engine | 设置存储引擎(InnoDB、MylSAM) | engine=InnnoDB |
| default charset | 设置表的默认字符集 | default charset=utf8mb4 |
| auto_increment | 指定自增主键 | id int auto_increment primary key |
表的创建语句
show create table 表名;
修改表的结构
添加列:
alter table 表名 add 列名 数据类型 [位置];
位置:first(在最前),after列名(在指定列后)
修改列:
alter table 表名 midify 列名 数据类型
删除列:
alter table 表名 drop 列名;
重命名列:
alter table 表名 change 原列名 新列名 数据类型;
删除表
drop table 表名;
清空表(保留结构)
truncate table 表名;
4.数据结构
插入数据
insert into 表名(列名1,列名2,……)values (值1,值2,……);
insert into users (name,email) values('alice','li@example.com');
批量插入
insert into 表明(列名1,列名2)values
(值1,值2),
(值3,值4),
查询数据
select 列名1,列名2,……from 表名[where 条件] [order by 列名 asc|desc] [limit 偏移量,行数];
select * from users where email like '%example.com' order by created_at desc limit 10;
常用子句:
| 子句 | 说明 | 示例 |
|---|---|---|
| where | 指定条件 | where age > 30 |
| order by | 排序结果集 | order by name ASC |
| limit | 限制返回行数,支持偏移量 | limit 5 offset 10 |
| group by | 按列分组 | group by department |
| having | 筛选分组结果 | having count(*) >1 |
更新数据
update 表名 set 列名1=值1,列名2=值2 where 条件;
update users set email='new email@example.com' where name='alice';
删除数据
default from 表名 where 条件;
delete from users where id=10;
5.用户管理
create user '用户名'@'主机' identified by '密码';
create user 'testuser'@'localhost' identified by 'mypassword';
| 参数 | 说明 | 示例 |
|---|---|---|
| ‘用户名’ | 用户名 | ‘testuser’ |
| ‘主机’ | 允许用户访问的主机(%表示任意主机) | ‘localhost’或‘%’ |
| ‘密码’ | 用户密码 | ’password123‘ |
修改用户密码
alter user ‘用户名’@'主机' identified by '新密码';
alter user 'testuser'@'localhost' identified by 'newpassword123';
删除用户
drop user '用户名'@'主机'
授权权限
grant 权限列表 on 数据库.表 to '用户名'@'主机';
grant select,insert on mydb.* to 'testuser'@'localhost';
| 权限 | 说明 |
|---|---|
| all privileges | 授予所有权限 |
| select | 允许读取表中的数据 |
| insert | 允许向表中插入数据 |
| update | 允许修改表中的数据 |
| delete | 允许删除表中的数据 |
| create | 允许创建数据库和表 |
| drop | 允许删除数据库和表 |
撤销权限
revoke 权限列表 on 数据库.表 from '用户名'@'主机';
revoke insert on mydb.* from 'testuser'@'localhost';
刷新权限
flush privileges;
6.性能优化
查询执行计划
explain select 查询语句;
explain select * from users where email='test@example.com';
优化表
optimize table 表名;
查看慢查询
show variables like 'slow_query_log';
启用慢查询:
set global slow_query_log=1;
检查表
check table 表名;
修复表
repair table 表名;
评论区