← 返回目录

第 8 卷

第 8 / 12 卷日期:

锁,并发性能优异(仅锁定修一行都会锁定整个表),并发
改的行,不影响其他行)性能差
外键约束 支持外键约束(保证数据完整不支持外键约束

性和一致性)

数据存储结构数据和索引存储在同一个文件数据文件(.MYD)和索引文
(.ibd),采用聚簇索引(索件(.MYI)分离,采用非聚簇
引与数据绑定)索引
崩溃恢复支持崩溃恢复(通过事务日志不支持崩溃恢复,数据可能丢
(redo log、undo log)恢复失(仅记录数据修改的位置,
数据,保证数据不丢失)无完整日志)
查询性能读写混合场景、并发场景性能单表查询速度快(索引与数据
优,但单表查询速度略低于分离,查询无需关联数据文
MyISAM件),适合只读场景
适用场景电商订单、金融交易、用户管静态网站数据、日志存储、报
理等需要事务、高并发的核心表统计等只读或读写较少的场
业务景

十二、MySQL中有哪些常见的操作?

MySQL的常见操作围绕“数据库管理”“表管理”“数据操作”“查询操作”“权限管理”展开,核心使用SQL语句实现,以下是分类整理的常见操作及示例:

  1. 数据库管理操作
  2. 创建数据库: CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARACTER

SET utf8mb4;(指定字符集为utf8mb4,支持表情符号)

  1. 查看数据库: SHOW DATABASES;(查看所有数据库)、 USE 数据库名;(切换到目标数据

库)

  1. 删除数据库: DROP DATABASE IF EXISTS 数据库名;(删除前判断是否存在,避免报错)
  2. 查看数据库配置: SHOW CREATE DATABASE 数据库名;(查看数据库的创建语句及字符集配

置)

  1. 表管理操作

id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID(主键,自增)', username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名(非空,唯一)',

password VARCHAR(100) NOT NULL COMMENT '密码(加密存储)', age INT DEFAULT 0 COMMENT '年龄(默认0)',

create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(默认当前时间)'

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

  1. 查看表: SHOW TABLES;(查看当前数据库所有表)、 DESC 表名;(查看表结构)、 SHOW

CREATE TABLE 表名;(查看表创建语句)

  1. 修改表:
  • 添加字段: ALTER TABLE 表名 ADD 字段名数据类型约束;
  • 修改字段: ALTER TABLE 表名 MODIFY 字段名新数据类型新约束;
  • 删除字段: ALTER TABLE 表名 DROP 字段名;
  • 修改表名: ALTER TABLE 旧表名 RENAME TO 新表名;
  1. 删除表: DROP TABLE IF EXISTS 表名;
  2. 数据操作(DML:数据操纵语言)
  3. 插入数据:
  • 全字段插入: INSERT INTO 表名 VALUES (值1, 值2, ...);
  • 指定字段插入: INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2,

...);

  • 批量插入: INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4);
  1. 修改数据: UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件;(必须加WHERE条

件,否则修改全表数据)

示例: UPDATE user SET age=25 WHERE id=1;

  1. 删除数据:
  • 按条件删除: DELETE FROM 表名 WHERE 条件;
  • 清空表数据(不删除表结构,自增ID重置): TRUNCATE TABLE 表名;(注意:TRUNCATE

无法回滚,DELETE可以通过事务回滚)

  1. 数据查询(DQL:数据查询语言)

核心语法: SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 分组条

  • 去重查询: SELECT DISTINCT age FROM user;(去除重复的age值)
  1. 条件查询:使用WHERE子句,支持=、!=、>、<、BETWEEN...AND、IN、LIKE、IS NULL等条件

示例:

  • 查询年龄大于20的用户: SELECT * FROM user WHERE age > 20;
  • 查询年龄在18-30之间的用户: SELECT * FROM user WHERE age BETWEEN 18 AND

30;

  • 查询用户名包含“张”的用户: SELECT * FROM user WHERE username LIKE '%

张%';(%表示任意字符)

  1. 排序查询: ORDER BY 字段排序方式(ASC升序,默认;DESC降序)

示例: SELECT * FROM user ORDER BY create_time DESC;(按创建时间降序)

  1. 分组查询: GROUP BY 字段,结合聚合函数(COUNT、SUM、AVG、MAX、MIN)使用

示例:查询各年龄的用户数量: SELECT age, COUNT(*) AS user_count FROM user GROUP BY age;

  1. 分页查询: LIMIT 偏移量, 每页条数(偏移量=(页码-1)*每页条数)

示例:查询第2页数据,每页10条: SELECT * FROM user LIMIT 10, 10;

  1. 多表关联查询:支持INNER JOIN(内连接,取交集)、LEFT JOIN(左连接,取左表所有数

据)、RIGHT JOIN(右连接,取右表所有数据)

示例(查询用户及对应的订单数据):

SELECT u.username, o.order_id FROM user u INNER JOIN order o ON u.id = o.user_id;

  1. 权限管理操作
  2. 创建用户: CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';(主机名用%表

示任意主机)

  1. 授权用户: GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

示例:授予用户查询和修改user表的权限: GRANT SELECT, UPDATE ON test.user TO 'test_user'@'%';

  1. 查看权限: SHOW GRANTS FOR '用户名'@'主机名';
  2. 撤销权限: REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
  3. 删除用户: DROP USER '用户名'@'主机名';
全站分卷索引 · 12 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷
  5. 5第 5 卷
  6. 6第 6 卷
  7. 7第 7 卷
  8. 8第 8 卷
  9. 9第 9 卷
  10. 10第 10 卷
  11. 11第 11 卷
  12. 12第 12 卷