无论是构建复杂的大型应用,还是处理日常的数据管理任务,MySQL都提供了丰富而强大的语法功能
本文将全面介绍MySQL的语法,帮助读者更好地掌握这一数据管理利器
一、MySQL基础语法规则 在深入探讨MySQL的各种语法之前,我们先来了解一些基础规则
MySQL的关键字不区分大小写,但为了提高代码的可读性,建议将关键字大写
例如,`SELECT - FROM users;和select from users;`在功能上等价,但前者更易读
此外,MySQL的语句以分号(;)结尾,这是SQL语句的标准结束符
MySQL支持两种注释方式:单行注释和多行注释
单行注释可以使用`--`或``开头,如`-- 这是单行注释`或` 这是单行注释`
多行注释则使用`- / 这是多行注释 /`的形式
注释在代码中不会被执行,但有助于提高代码的可读性和可维护性
二、数据定义语言(DDL) 数据定义语言用于创建、修改和删除数据库对象,如表、索引等
这是数据库管理的核心部分
2.1 数据库操作 创建数据库是使用MySQL的第一步
使用`CREATE DATABASE`语句可以创建一个新的数据库,例如: sql CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; 这条语句会创建一个名为`mydb`的数据库,如果数据库已存在则不会重复创建
同时,它指定了数据库的默认字符集和排序规则
删除数据库则使用`DROP DATABASE`语句,例如: sql DROP DATABASE IF EXISTS mydb; 这条语句会删除名为`mydb`的数据库,如果数据库不存在则不会报错
切换数据库使用`USE`语句,例如: sql USE mydb; 这条语句会将当前的操作环境切换到`mydb`数据库
2.2 表操作 表是数据库的基本存储单元,用于存储数据
创建表使用`CREATE TABLE`语句,例如: sql CREATE TABLE IF NOT EXISTS 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`、`name`、`age`、`email`和`create_time`
其中,`id`字段是主键,且自动递增;`name`字段为非空字符串;`email`字段为唯一字符串;`create_time`字段默认为当前时间戳
修改表结构使用`ALTER TABLE`语句
添加字段的语法如下: sql ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER age; 这条语句在`users`表的`age`字段后添加了一个名为`phone`的字段
修改字段的语法如下: sql ALTER TABLE users MODIFY COLUMN phone VARCHAR(30) NOT NULL; 这条语句将`phone`字段的类型修改为`VARCHAR(30)`,并设置为非空
修改字段名的语法如下: sql ALTER TABLE users CHANGE COLUMN phone tel VARCHAR(30); 这条语句将`phone`字段重命名为`tel`
删除字段的语法如下: sql ALTER TABLE users DROP COLUMN tel; 这条语句删除了`tel`字段
重命名表的语法如下: sql RENAME TABLE users TO user_info; 这条语句将`users`表重命名为`user_info`
删除表的语法如下: sql DROP TABLE IF EXISTS user_info; 这条语句删除了名为`user_info`的表
2.3索引操作 索引是提高数据库查询性能的重要手段
创建索引使用`CREATE INDEX`语句,例如: sql CREATE INDEX idx_name ON users(name); 这条语句在`users`表的`name`字段上创建了一个普通索引
创建唯一索引的语法如下: sql CREATE UNIQUE INDEX idx_email ON users(email); 这条语句在`users`表的`email`字段上创建了一个唯一索引,确保每个`email`值都是唯一的
创建全文索引的语法如下: sql CREATE FULLTEXT INDEX idx_content ON articles(content); 这条语句在`articles`表的`content`字段上创建了一个全文索引,用于文本搜索
删除索引使用`DROP INDEX`语句,例如: sql DROP INDEX idx_name ON users; 这条语句删除了`users`表上的`idx_name`索引
三、数据操作语言(DML) 数据操作语言用于对表中的数据进行增、删、改操作
这是数据库管理的日常任务
3.1插入数据 插入数据使用`INSERT INTO`语句
单条插入的语法如下: sql INSERT INTO users(name, age, email) VALUES(Alice,25, alice@example.com); 这条语句向`users`表中插入了一条新记录
批量插入的语法如下: sql INSERT INTO users(name, age, email) VALUES (Charlie,35, charlie@example.com), (David,40, david@example.com); 这条语句向`users`表中批量插入了两条新记录
3.2 更新数据 更新数据使用`UPDATE`语句
条件更新的语法如下: sql UPDATE users SET age = age +1 WHERE name = Alice; 这条语句将`users`表中`name`为`Alice`的记录的`age`字段值加1
全表更新的语法如下: sql UPDATE users SET age =0; 这条语句将`users`表中所有记录的`age`字段值设置为0
注意,全表更新需要谨慎使用,因为它会修改表中的所有行
3.3 删除数据 删除数据使用`DELETE FROM`语句
条件删除的语法如下: sql DELETE FROM users WHERE age <18; 这条语句删除了`users`表中`age`小于18的所有记录
清空表的语法如下: sql TRUNCATE TABLE users; 这条语句清空了`users`表中的所有记录,并且比`DELETE`语句更快,但不可回滚
四、数据查询语言(DQL) 数据查询语言用于从表中检索数据
这是数据库管理中最常用的操作
4.1 SELECT基本语法 `SELECT`语句用于从表中检索数据
其基本语法如下: sql SELECT【DISTINCT】字段1,字段2, ... FROM 表名 【WHERE 条件】 【GROUP BY 分组字段【HAVING 分组后条件】】 【ORDER BY