MySQL 的关键字

MySQL 中的关键字是数据库中具有特殊含义的保留字,它们用于定义数据库结构、操作数据库数据和控制数据库行为。关键字在 MySQL 查询中扮演着至关重要的角色,因为它们是 SQL 语句的核心组成部分。

1. 数据定义语言 (DDL) 关键字

数据定义语言 (DDL) 关键字用于定义、修改和删除数据库结构,如数据库、表和索引等。这些关键字通常用于创建、删除表结构以及修改表的列等操作。

1.1 CREATE

CREATE 关键字用于创建数据库对象,比如数据库、表、索引等。

  • 创建数据库:

    sql 复制代码
    CREATE DATABASE my_database;
  • 创建表:

    sql 复制代码
    CREATE TABLE employees (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100),
        salary DECIMAL(10, 2)
    );
  • 创建索引:

    sql 复制代码
    CREATE INDEX idx_name ON employees(name);
1.2 ALTER

ALTER 关键字用于修改已存在的数据库对象,比如表的结构(添加或删除列、修改列类型等)。

  • 添加新列:

    sql 复制代码
    ALTER TABLE employees ADD birth_date DATE;
  • 修改列的数据类型:

    sql 复制代码
    ALTER TABLE employees MODIFY salary DECIMAL(12, 2);
  • 删除列:

    sql 复制代码
    ALTER TABLE employees DROP COLUMN birth_date;
1.3 DROP

DROP 关键字用于删除数据库对象,如表、数据库或索引。删除操作是不可逆的,因此要谨慎使用。

  • 删除数据库:

    sql 复制代码
    DROP DATABASE my_database;
  • 删除表:

    sql 复制代码
    DROP TABLE employees;
  • 删除索引:

    sql 复制代码
    DROP INDEX idx_name ON employees;
1.4 RENAME

RENAME 关键字用于重命名数据库对象,比如重命名表。

  • 重命名表:

    sql 复制代码
    RENAME TABLE employees TO staff;

2. 数据操作语言 (DML) 关键字

数据操作语言 (DML) 关键字用于查询、插入、更新和删除表中的数据,是数据库操作中最为频繁使用的部分。

2.1 SELECT

SELECT 关键字用于从数据库中查询数据,是最常用的关键字之一。

  • 基本查询:

    sql 复制代码
    SELECT * FROM employees;
  • 查询指定列:

    sql 复制代码
    SELECT name, salary FROM employees;
  • 使用条件查询:

    sql 复制代码
    SELECT * FROM employees WHERE salary > 5000;
2.2 INSERT

INSERT 关键字用于向表中插入新数据。

  • 插入一条记录:

    sql 复制代码
    INSERT INTO employees (name, salary) VALUES ('John Doe', 7500);
  • 插入多条记录:

    sql 复制代码
    INSERT INTO employees (name, salary) VALUES ('Alice', 6000), ('Bob', 5500);
2.3 UPDATE

UPDATE 关键字用于更新表中的数据。

  • 更新单条记录:

    sql 复制代码
    UPDATE employees SET salary = 8000 WHERE id = 1;
  • 更新多条记录:

    sql 复制代码
    UPDATE employees SET salary = salary * 1.1 WHERE salary < 6000;
2.4 DELETE

DELETE 关键字用于删除表中的数据。

  • 删除一条记录:

    sql 复制代码
    DELETE FROM employees WHERE id = 1;
  • 删除所有记录:

    sql 复制代码
    DELETE FROM employees;
2.5 REPLACE

REPLACE 关键字类似于 INSERT,但如果插入的记录主键冲突,会先删除原有记录,再插入新记录。

  • 插入新记录或替换已有记录:

    sql 复制代码
    REPLACE INTO employees (id, name, salary) VALUES (1, 'John Doe', 8000);

3. 数据控制语言 (DCL) 关键字

数据控制语言 (DCL) 关键字用于控制数据库的访问权限,确保数据库的安全性和数据的保密性。

3.1 GRANT

GRANT 关键字用于向用户授予权限。

  • 授予用户查询权限:

    sql 复制代码
    GRANT SELECT ON my_database.* TO 'username'@'localhost';
  • 授予用户所有权限:

    sql 复制代码
    GRANT ALL PRIVILEGES ON my_database.* TO 'username'@'localhost';
3.2 REVOKE

REVOKE 关键字用于撤销用户的权限。

  • 撤销查询权限:

    sql 复制代码
    REVOKE SELECT ON my_database.* FROM 'username'@'localhost';
  • 撤销所有权限:

    sql 复制代码
    REVOKE ALL PRIVILEGES ON my_database.* FROM 'username'@'localhost';

4. 事务控制语言 (TCL) 关键字

事务控制语言 (TCL) 关键字用于管理数据库事务,确保数据操作的原子性和一致性。事务可以确保一组操作要么全部成功,要么全部回滚。

4.1 BEGIN / START TRANSACTION

BEGINSTART TRANSACTION 用于显式开启一个事务。

  • 开启事务:

    sql 复制代码
    START TRANSACTION;
4.2 COMMIT

COMMIT 用于提交当前事务,使事务中的所有操作生效。

  • 提交事务:

    sql 复制代码
    COMMIT;
4.3 ROLLBACK

ROLLBACK 用于回滚当前事务,撤销事务中的所有操作。

  • 回滚事务:

    sql 复制代码
    ROLLBACK;
4.4 SAVEPOINT

SAVEPOINT 允许在事务中设置保存点,以便部分回滚。

  • 设置保存点:

    sql 复制代码
    SAVEPOINT sp1;
  • 回滚到保存点:

    sql 复制代码
    ROLLBACK TO SAVEPOINT sp1;
4.5 RELEASE SAVEPOINT

RELEASE SAVEPOINT 用于删除指定的保存点。

  • 删除保存点:

    sql 复制代码
    RELEASE SAVEPOINT sp1;

5. 查询控制关键字

在 MySQL 中,还有一些关键字用于控制查询的执行方式和输出结果。

5.1 DISTINCT

DISTINCT 用于去除查询结果中的重复记录。

  • 查询不重复的员工姓名:

    sql 复制代码
    SELECT DISTINCT name FROM employees;
5.2 ORDER BY

ORDER BY 用于对查询结果进行排序,可以按升序 (ASC) 或降序 (DESC) 排序。

  • 按工资升序排序:

    sql 复制代码
    SELECT * FROM employees ORDER BY salary ASC;
  • 按姓名降序排序:

    sql 复制代码
    SELECT * FROM employees ORDER BY name DESC;
5.3 GROUP BY

GROUP BY 用于将查询结果按某一列进行分组,常与聚合函数一起使用。

  • 按部门分组并计算每个部门的平均工资:

    sql 复制代码
    SELECT department, AVG(salary) FROM employees GROUP BY department;
5.4 HAVING

HAVING 类似于 WHERE,但它用于过滤聚合结果。

  • 过滤出平均工资大于5000的部门:

    sql 复制代码
    SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 5000;
5.5 LIMIT

LIMIT 用于限制查询返回的记录数。

  • 返回前 5 条记录:

    sql 复制代码
    SELECT * FROM employees LIMIT 5;
  • 返回第 3 条到第 7 条记录:

    sql 复制代码
    SELECT * FROM employees LIMIT 2, 5;
5.6 UNION

UNION 用于将多个查询结果合并成一个结果集,同时去除重复记录。

  • 合并两个查询结果:

    sql 复制代码
    SELECT name FROM employees WHERE salary > 5000
    UNION
    SELECT name FROM managers;

6. 常用条件关键字

6.1 WHERE

WHERE 用于指定查询的条件。

  • 查询工资大于5000的员工:

    sql 复制代码
    SELECT * FROM employees WHERE salary > 5000;
6.2 AND / OR

ANDOR 用于组合多个查询条件。

  • 查询工资大于5000且在 IT 部门的员工:

    sql 复制代码
    SELECT * FROM employees WHERE salary > 5000 AND department = 'IT';
  • 查询工资大于5000或在 IT 部门的员工:

    sql 复制代码
    SELECT * FROM employees WHERE salary > 5000 OR department = 'IT';
6.3 IN

IN 用于指定多个值,类似于多个 OR 的组合。

  • 查询在 IT 或 HR 部门的员工:

    sql 复制代码
    SELECT * FROM employees WHERE department IN ('IT', 'HR');
6.4 BETWEEN

BETWEEN 用于指定范围条件。

  • 查询工资在 3000 到 6000 之间的员工:

    sql 复制代码
    SELECT * FROM employees WHERE salary BETWEEN 3000 AND 6000;
6.5 LIKE

LIKE 用于模糊匹配,常与通配符 %(匹配任意多个字符)和 _(匹配一个字符)配合使用。

  • 查询姓名以 "J" 开头的员工:

    sql 复制代码
    SELECT * FROM employees WHERE name LIKE 'J%';

结论

MySQL 中的关键字定义了数据库操作的规则和行为,它们使得开发者能够高效地操作和管理数据。关键字分为多个类别,包括数据定义语言 (DDL)、数据操作语言 (DML)、数据控制语言 (DCL)、事务控制语言 (TCL) 和查询控制关键字等。理解并熟练使用这些关键字是 MySQL 数据库开发和操作的重要基础,通过合理应用它们可以提高数据管理的效率和准确性。

相关推荐
nongcunqq42 分钟前
abap 操作 excel
java·数据库·excel
rain bye bye1 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼1 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术3 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师3 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779133 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分4 小时前
pom.xml
xml·数据库
虚行4 小时前
Mysql 数据同步中间件 对比
数据库·mysql·中间件
奥尔特星云大使4 小时前
mysql读写分离中间件Atlas安装部署及使用
数据库·mysql·中间件·读写分离·atlas
牛马baby4 小时前
【mysql】in 用到索引了吗?
数据库·mysql·in