MySQL数据库常用指令
目录
- 前言
- 一、DDL(数据定义语言)- 结构管理
- 二、DML(数据操作语言)- 数据管理
- 三、DQL(数据查询语言)- 数据检索
- 四、SQL执行顺序
- 五、高级查询概念
- 六、数据库对象管理
- 七、数据完整性约束
- 八、触发器
- 九、数据库设计理论
- 十、最佳实践建议
- 总结
前言
本文将系统性地介绍MySQL数据库的核心操作,从基础的数据库和表管理,到复杂的查询操作,再到高级的数据库设计概念。无论你是数据库初学者还是希望巩固基础知识的开发者,这份指南都能为你提供实用的参考。
一、DDL(数据定义语言)- 结构管理
1.1 数据库操作
数据库是存储数据的容器,以下是常用的数据库管理命令:
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE 数据库名;
-- 使用指定数据库
USE 数据库名;
-- 查看当前使用的数据库
SELECT DATABASE();
-- 删除数据库
DROP DATABASE 数据库名;
1.2 表操作
表是数据库中存储数据的基本单位:
-- 查看当前数据库中的所有表
SHOW TABLES;
-- 创建表
CREATE TABLE 表名 (
字段名1 字段类型,
字段名2 字段类型,
...
);
-- 查看表结构
DESC 表名;
-- 查看建表语句
SHOW CREATE TABLE 表名;
-- 删除表
DROP TABLE 表名;
1.3 表结构修改
当需要调整已有表的结构时,可以使用ALTER TABLE命令:
-- 添加字段
ALTER TABLE 表名 ADD 字段名 数据类型;
-- 修改字段数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
-- 修改字段名和类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT '注释'] [约束];
-- 删除字段
ALTER TABLE 表名 DROP 字段名;
-- 重命名表
ALTER TABLE 旧表名 RENAME TO 新表名;
二、DML(数据操作语言)- 数据管理
2.1 插入数据
-- 插入单条记录
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2);
-- 插入多条记录
INSERT INTO 表名 (字段1, 字段2) VALUES
(值1, 值2),
(值3, 值4);
2.2 更新数据
-- 更新数据
UPDATE 表名 SET 字段1=值1, 字段2=值2 [WHERE 条件];
注意:如果不加WHERE条件,将更新表中所有记录!
2.3 删除数据
-- 删除数据
DELETE FROM 表名 [WHERE 条件];
注意:如果不加WHERE条件,将删除表中所有记录!
三、DQL(数据查询语言)- 数据检索
3.1 基础查询
-- 查询指定字段
SELECT 字段1, 字段2, 字段3 FROM 表名;
-- 查询所有字段
SELECT * FROM 表名;
-- 使用别名
SELECT 字段1 AS 别名1, 字段2 AS 别名2 FROM 表名;
-- 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
3.2 条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
常用条件运算符:
=等于<>或!=不等于>大于>=大于等于<小于<=小于等于IS NULL空值判断IS NOT NULL非空值判断
3.3 聚合函数查询
聚合函数对一列数据进行纵向计算:
SELECT 聚合函数(字段名) FROM 表名;
常用聚合函数:
COUNT()计数SUM()求和AVG()平均值MAX()最大值MIN()最小值
重要提示:NULL值不参与聚合函数运算,会自动被过滤。
3.4 分组查询
SELECT 字段列表 FROM 表名
[WHERE 条件]
GROUP BY 分组字段名
[HAVING 分组后过滤条件];
关键区别:
- WHERE:分组前过滤,不能对聚合函数进行判断
- HAVING:分组后过滤,可以对聚合函数进行判断
重要规则:在包含GROUP BY的SELECT语句中,SELECT后面只能跟参加分组的字段以及聚合函数!
13.5 排序查询
SELECT 字段列表 FROM 表名
ORDER BY 字段1 排序方式1, 字段2 排序方式2;
排序方式:
ASC升序(默认,可省略)DESC降序
3.6 分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
-- 查询前n条记录
SELECT * FROM 表名 LIMIT n;
3.7 连接查询
等值连接
SELECT * FROM 表1, 表2 WHERE 表1.字段 = 表2.字段;
自连接
SELECT first.字段1, second.字段2
FROM 表名 first, 表名 second
WHERE first.关联字段 = second.关联字段;
外连接
-- 左外连接
SELECT 字段列表
FROM 表1 LEFT OUTER JOIN 表2 ON (连接条件);
-- 右外连接
SELECT 字段列表
FROM 表1 RIGHT OUTER JOIN 表2 ON (连接条件);
-- 使用USING简化(当连接字段名相同时)
SELECT 字段列表
FROM 表1 LEFT OUTER JOIN 表2 USING(字段名);
四、SQL执行顺序
理解SQL语句的执行顺序对于编写复杂查询非常重要:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
五、高级查询概念
5.1 子查询运算符
在子查询中,可以使用以下逻辑运算符:
- ANY/SOME:满足子查询中任意一个条件
- ALL:满足子查询中所有条件
SELECT * FROM 表名 WHERE 字段 > ALL(SELECT 字段 FROM 其他表);
5.2 空值处理
-- 判断空值
WHERE 字段 IS NULL
-- 判断非空值
WHERE 字段 IS NOT NULL
六、数据库对象管理
6.1 视图
视图是虚拟表,基于查询结果创建:
-- 创建视图
CREATE VIEW 视图名(列名1, 列名2, ...)
AS (子查询);
-- 使用视图
SELECT * FROM 视图名;
6.2 用户和权限管理
-- 创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
-- 授权
GRANT 权限类型 ON 数据库.表名 TO '用户名'@'主机';
-- 回收权限
REVOKE 权限类型 ON 数据库.表名 FROM '用户名'@'主机';
6.3 角色管理
角色是一组权限的集合:
-- 创建角色
CREATE ROLE 角色名;
-- 给角色授权
GRANT 权限 ON 对象名 TO 角色名;
-- 将角色授予用户
GRANT 角色名 TO 用户名 [WITH ADMIN OPTION];
WITH ADMIN OPTION:允许用户将获得的权限再授予其他用户。
七、数据完整性约束
7.1 主键约束
-- 建表时定义主键
CREATE TABLE 表名 (
id INT PRIMARY KEY,
...
);
主键特点:
- 唯一标识表中每一行数据
- 不能为NULL
- 一个表只能有一个主键
7.2 外键约束
-- 建表时定义外键
CREATE TABLE 表名 (
字段名 数据类型,
FOREIGN KEY (外键字段) REFERENCES 主表(主键字段)
);
-- 后续添加外键
ALTER TABLE 表名 ADD FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
外键作用:
- 维护数据完整性
- 防止插入无效数据
- 支持级联操作
7.3 检查约束
-- 添加检查约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (条件);
-- 示例
ALTER TABLE student ADD CONSTRAINT chk_age CHECK (age <= 60);
八、触发器
触发器是由特定事件自动执行的存储过程:
CREATE TRIGGER 触发器名
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON 表名 FOR EACH ROW
BEGIN
SQL语句;
END;
-- 查看触发器
SHOW TRIGGERS;
-- 删除触发器
DROP TRIGGER 触发器名;
触发器四要素
- 监视地点:哪个表
- 监视事件:INSERT/UPDATE/DELETE
- 触发时间:BEFORE/AFTER
- 触发动作:要执行的SQL语句
九、数据库设计理论
9.1 三范式
第一范式(1NF)
属性不可分割,每个属性都是原子项。
第二范式(2NF)
- 满足第一范式
- 消除部分依赖:非主属性必须完全依赖于主属性
第三范式(3NF)
- 满足第二范式
- 消除传递依赖:非主属性不能依赖于其他非主属性
9.2 数据库设计六阶段
- 需求分析:确定用户需求和数据需求
- 概念结构设计:设计E-R图
- 逻辑结构设计:将E-R图转换为关系模式
- 物理结构设计:确定存储结构和存取方法
- 数据库实施:建立数据库和应用系统
- 数据库运行和维护:系统运行、监控和改进
十、最佳实践建议
- 命名规范:使用有意义的表名和字段名
- 索引优化:在经常查询的字段上建立索引
- 数据类型选择:根据实际需要选择合适的数据类型
- 备份策略:定期备份重要数据
- 权限控制:遵循最小权限原则
- 查询优化:避免使用SELECT *,合理使用WHERE条件
总结
掌握MySQL数据库操作需要循序渐进地学习各个知识点。从基础的DDL、DML、DQL操作开始,逐步深入到高级查询、数据库设计和优化。实践是学习数据库最好的方法,建议结合实际项目多加练习。
希望这份指南能够帮助你系统地掌握MySQL数据库操作,在实际开发中游刃有余!
2286

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



