数据库MySQL常用指令

MySQL数据库常用指令

目录

  • 前言
  • 一、DDL(数据定义语言)- 结构管理
    • 1.1 数据库操作
    • 1.2 表操作
    • 1.3 表结构修改
  • 二、DML(数据操作语言)- 数据管理
    • 2.1 插入数据
    • 2.2 更新数据
    • 2.3 删除数据
  • 三、DQL(数据查询语言)- 数据检索
    • 3.1 基础查询
    • 3.2 条件查询
    • 3.3 聚合函数查询
    • 3.4 分组查询
    • 3.5 排序查询
    • 3.6 分页查询
    • 3.7 连接查询
  • 四、SQL执行顺序
  • 五、高级查询概念
    • 5.1 子查询运算符
    • 5.2 空值处理
  • 六、数据库对象管理
    • 6.1 视图
    • 6.2 用户和权限管理
    • 6.3 角色管理
  • 七、数据完整性约束
    • 7.1 主键约束
    • 7.2 外键约束
    • 7.3 检查约束
  • 八、触发器
    • 触发器四要素
  • 九、数据库设计理论
    • 9.1 三范式
    • 9.2 数据库设计六阶段
  • 十、最佳实践建议
  • 总结

前言

本文将系统性地介绍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 * FROM1,2 WHERE1.字段 =2.字段;
自连接
SELECT first.字段1, second.字段2
FROM 表名 first, 表名 second
WHERE first.关联字段 = second.关联字段;
外连接
-- 左外连接
SELECT 字段列表
FROM1 LEFT OUTER JOIN2 ON (连接条件);

-- 右外连接
SELECT 字段列表
FROM1 RIGHT OUTER JOIN2 ON (连接条件);

-- 使用USING简化(当连接字段名相同时)
SELECT 字段列表
FROM1 LEFT OUTER JOIN2 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 触发器名;

触发器四要素

  1. 监视地点:哪个表
  2. 监视事件:INSERT/UPDATE/DELETE
  3. 触发时间:BEFORE/AFTER
  4. 触发动作:要执行的SQL语句

九、数据库设计理论

9.1 三范式

第一范式(1NF)

属性不可分割,每个属性都是原子项。

第二范式(2NF)
  • 满足第一范式
  • 消除部分依赖:非主属性必须完全依赖于主属性
第三范式(3NF)
  • 满足第二范式
  • 消除传递依赖:非主属性不能依赖于其他非主属性

9.2 数据库设计六阶段

  1. 需求分析:确定用户需求和数据需求
  2. 概念结构设计:设计E-R图
  3. 逻辑结构设计:将E-R图转换为关系模式
  4. 物理结构设计:确定存储结构和存取方法
  5. 数据库实施:建立数据库和应用系统
  6. 数据库运行和维护:系统运行、监控和改进

十、最佳实践建议

  1. 命名规范:使用有意义的表名和字段名
  2. 索引优化:在经常查询的字段上建立索引
  3. 数据类型选择:根据实际需要选择合适的数据类型
  4. 备份策略:定期备份重要数据
  5. 权限控制:遵循最小权限原则
  6. 查询优化:避免使用SELECT *,合理使用WHERE条件

总结

掌握MySQL数据库操作需要循序渐进地学习各个知识点。从基础的DDL、DML、DQL操作开始,逐步深入到高级查询、数据库设计和优化。实践是学习数据库最好的方法,建议结合实际项目多加练习。

希望这份指南能够帮助你系统地掌握MySQL数据库操作,在实际开发中游刃有余!

你可能感兴趣的:(数据库,数据库,mysql)