MySQL作为一款广泛使用的关系型数据库管理系统(RDBMS),以其高性能、可靠性和易用性赢得了广泛的认可
无论是初学者还是资深开发者,熟练掌握MySQL语法都是提升数据处理能力的关键
本文将全面汇总MySQL的核心语法,涵盖数据定义、操作、查询及权限管理等方面,旨在为读者提供一个系统学习和快速查阅的权威指南
一、MySQL基础与数据类型 MySQL是一种结构化查询语言(SQL),用于读取、查询、更新和管理关系数据库
在MySQL中,数据按照表的形式进行组织,每个表由行和列组成,其中行代表记录,列代表字段
MySQL支持多种数据类型,以满足不同场景下的数据存储需求
-数值类型:包括整数(INT、BIGINT)、精确小数(DECIMAL)、浮点数(FLOAT、DOUBLE)等
这些类型适用于存储年龄、用户ID、金额等数值数据
-字符串类型:包括固定长度字符串(CHAR)、可变长度字符串(VARCHAR)、长文本(TEXT)等
CHAR类型适用于存储长度固定的字符串,如性别;VARCHAR则更灵活,适用于长度可变的字符串,如姓名
-日期时间类型:包括日期(DATE)、时间(TIME)、日期时间(DATETIME)、时间戳(TIMESTAMP)等
这些类型适用于存储创建时间、更新时间等时间相关数据
二、数据定义语言(DDL) DDL用于定义数据库和表结构,包括创建、修改和删除数据库和表等操作
-创建数据库:使用CREATE DATABASE语句可以创建一个新的数据库
例如,`CREATE DATABASE mydb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;`将创建一个名为`mydb`的数据库,并指定字符集和排序规则
-删除数据库:使用DROP DATABASE语句可以删除一个数据库
例如,`DROP DATABASE IF EXISTS mydb;`将删除名为`mydb`的数据库(如果存在)
-创建表:使用CREATE TABLE语句可以创建一个新的表
例如,`CREATE TABLE users(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age TINYINT, email VARCHAR(100) UNIQUE, create_time DATETIME DEFAULT CURRENT_TIMESTAMP);`将创建一个名为`users`的表,包含用户ID、姓名、年龄、电子邮件和创建时间等字段
-修改表结构:使用ALTER TABLE语句可以修改表结构,包括添加、删除、修改字段和重命名表等操作
例如,`ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER age;`将在`age`字段后添加一个新的`phone`字段
-删除表:使用DROP TABLE语句可以删除一个表
例如,`DROP TABLE IF EXISTS users;`将删除名为`users`的表(如果存在)
三、数据操纵语言(DML) DML用于管理数据库中的数据,包括插入、更新、删除和查询等操作
-插入数据:使用INSERT INTO语句可以向表中插入数据
例如,`INSERT INTO users(name, age, email) VALUES(Alice,25, alice@example.com);`将向`users`表中插入一条新记录
-更新数据:使用UPDATE语句可以更新表中的数据
例如,`UPDATE users SET age = age +1 WHERE name = Alice;`将`users`表中姓名为`Alice`的用户的年龄增加1岁
-删除数据:使用DELETE FROM语句可以删除表中的数据
例如,`DELETE FROM users WHERE age <18;`将删除`users`表中年龄小于18岁的用户记录
-清空表:使用TRUNCATE TABLE语句可以快速清空表中的所有数据,且不可回滚
例如,`TRUNCATE TABLE users;`将清空`users`表中的所有记录
四、数据查询语言(DQL) DQL是MySQL中最核心的部分,用于从表中检索数据
-基本查询:使用SELECT语句可以从表中检索数据
例如,`SELECT name, age FROM users;`将从`users`表中检索出姓名和年龄字段的数据
-条件查询:使用WHERE子句可以添加查询条件,以筛选符合特定条件的记录
例如,`SELECT - FROM users WHERE age > 30 AND email IS NOT NULL;`将检索出年龄大于30岁且电子邮件不为空的记录
-范围查询:使用BETWEEN...AND、`IN`和`NOT IN`等关键字可以进行范围查询
例如,`SELECT - FROM orders WHERE price BETWEEN100 AND200;`将检索出价格在100到200元之间的订单记录
-模糊查询:使用LIKE关键字可以进行模糊查询
例如,`SELECT - FROM users WHERE email LIKE %@example.com;`将检索出电子邮件以`@example.com`结尾的用户记录
-排序与分页:使用ORDER BY子句可以对查询结果进行排序,使用`LIMIT`子句可以进行分页查询
例如,`SELECT - FROM users ORDER BY age DESC LIMIT0,5;`将按年龄降序排列,并检索出前5条记录
-分组与聚合:使用GROUP BY子句可以对查询结果进行分组,结合聚合函数(如COUNT、SUM、AVG、MAX、MIN)可以进行统计计算
例如,`SELECT age, COUNT() AS total FROM users GROUP BY age HAVING total >1;`将按年龄分组,并统计每组的人数,只显示人数大于1的组
五、数据控制语言(DCL) DCL用于管理数据库用户的权限,包括授权、撤销权限等操作
-创建用户:使用CREATE USER语句可以创建一个新的数据库用户
例如,`CREATE USER username@host IDENTIFIED BY password;`将创建一个名为`username`、密码为`password`的用户
-授予权限:使用GRANT语句可以授予用户特定的权限
例如,`GRANT ALL PRIVILEGES ON db_name- . TO username@host;`将授予用户`username`对数据库`db_name`的所有权限
-撤销权限:使用REVOKE语句可以撤销用户的权限
例如,`REVOKE ALL PRIVILEGES ON db_name- . FROM username@host;`将撤销用户`username`对数据库`db_name`的所有权限
-删除用户:使用DROP USER语句可以删除一个数据库用户
例如,`DROP USER username@host;`将删除名为`username`的用户
六、存储过程和函数 MySQL还支持存储过程和函数的创建和使用,以封装复杂的数据库操作
-创建存储过程:使用`CREATE PROCEDURE`语句可