SQL语法

学习MySQL SQL语句的基本语法和规则

SQL语法基础

SQL(Structured Query Language)是用于管理关系数据库的标准语言。MySQL遵循SQL标准,并提供了自己的扩展。

SQL语句分类

  • DDL(数据定义语言) - 定义和管理数据库对象
  • DML(数据操作语言) - 操作数据库中的数据
  • DQL(数据查询语言) - 查询数据库中的数据
  • DCL(数据控制语言) - 控制数据库访问权限
  • TCL(事务控制语言) - 管理数据库事务

SQL基本语法规则

语句结束符

SQL语句以分号(;)结束,但在某些客户端工具中分号是可选的。

SQL示例
SELECT * FROM users;

大小写敏感性

  • SQL关键字不区分大小写:SELECTselect 是相同的
  • 数据库名、表名和列名在Windows上不区分大小写,在Linux/Unix上区分大小写
SQL示例
-- 以下语句是等效的
SELECT username FROM users;
select username from users;
Select Username From Users;

注释

MySQL支持三种注释方式:

SQL示例
-- 单行注释(标准SQL)
# 单行注释(MySQL扩展)
/* 
   多行注释
   可以跨越多行
*/

SELECT * FROM users; -- 这是行尾注释

标识符命名规则

合法标识符

  • 可以包含字母、数字、下划线和美元符号
  • 必须以字母或下划线开头
  • 最大长度为64个字符
  • 不能是MySQL保留字
SQL示例
-- 合法的标识符
user_name
user123
_user
$user

-- 不合法的标识符
123user    -- 以数字开头
user-name  -- 包含连字符
select     -- 保留字

引用标识符

如果标识符包含特殊字符或是保留字,可以使用反引号(`)引用:

SQL示例
-- 引用包含特殊字符的标识符
CREATE TABLE `user-table` (
    `select` VARCHAR(50)
);

-- 在查询中使用引用的标识符
SELECT `select` FROM `user-table`;

SQL语句结构

基本SELECT语句

SQL语法
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1 ASC|DESC
LIMIT number;

INSERT语句

SQL语法
-- 插入指定列
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

-- 插入所有列
INSERT INTO table_name
VALUES (value1, value2, ...);

UPDATE语句

SQL语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

DELETE语句

SQL语法
DELETE FROM table_name
WHERE condition;

运算符

比较运算符

运算符 描述 示例
= 等于 age = 18
<> 或 != 不等于 age <> 18
> 大于 age > 18
< 小于 age < 18
>= 大于等于 age >= 18
<= 小于等于 age <= 18
BETWEEN 在某个范围内 age BETWEEN 18 AND 25
LIKE 搜索模式 name LIKE 'J%'
IN 指定多个可能的值 age IN (18, 21, 25)

逻辑运算符

运算符 描述 示例
AND 逻辑与 age > 18 AND status = 'active'
OR 逻辑或 age < 18 OR age > 65
NOT 逻辑非 NOT status = 'inactive'

算术运算符

运算符 描述 示例
+ 加法 price + tax
- 减法 price - discount
* 乘法 price * quantity
/ 除法 total / items
% 或 MOD 取模 age % 2

常用SQL函数

字符串函数

SQL示例
SELECT 
    CONCAT(first_name, ' ', last_name) AS full_name,
    UPPER(username) AS upper_username,
    LENGTH(email) AS email_length,
    SUBSTRING(description, 1, 100) AS short_desc
FROM users;

数值函数

SQL示例
SELECT 
    ROUND(price, 2) AS rounded_price,
    CEIL(rating) AS ceiling_rating,
    FLOOR(rating) AS floor_rating,
    ABS(balance) AS absolute_balance
FROM products;

日期函数

SQL示例
SELECT 
    NOW() AS current_datetime,
    CURDATE() AS current_date,
    CURTIME() AS current_time,
    DATE_ADD(created_at, INTERVAL 7 DAY) AS next_week,
    DATEDIFF(NOW(), birth_date) AS days_old
FROM users;

SQL语句执行顺序

了解SQL语句的执行顺序对于编写高效的查询非常重要:

  1. FROM - 确定要查询的表
  2. WHERE - 过滤行
  3. GROUP BY - 分组行
  4. HAVING - 过滤分组
  5. SELECT - 选择列
  6. ORDER BY - 排序结果
  7. LIMIT - 限制结果数量

SQL最佳实践

  • 使用有意义的表名和列名
  • 避免使用SELECT *,明确指定需要的列
  • 使用适当的索引提高查询性能
  • 避免在WHERE子句中使用函数,这会使索引失效
  • 使用参数化查询防止SQL注入
  • 适当使用事务确保数据一致性
学习建议:熟练掌握SQL语法是数据库开发的基础,建议多练习各种SQL语句,理解每个关键字的作用。

下一步学习

掌握了SQL基本语法后,您可以继续学习: