LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

42个可直接用于SQL语句编写的语法级概念,你能说出几个?

admin
2026年1月12日 14:47 本文热度 4009

SQL 概念很多,但直接出现在 SQL 语句文本中的,可直接参与 SQL 语句编写的语法级概念并不多,也就 42 个(组),不知你能说出几个?下面按照使用频率与结构重要性从 高频 → 低频 的顺序来逐一介绍这些概念。介绍时,先介绍每一个概念在 SQL 语句中的具体位置及必要说明,再通过详细示例来具体介绍。(所有代码块或表格均可左右滚动)

1、关键字(Keyword)

位置:所有语句开头及关键位置
说明:SQL 中具有特殊语法意义的保留字,是语句结构的基础。
核心用途与典型代表:

用途
典型关键字
数据查询(DQL)SELECT
, FROM, WHERE, HAVING, GROUP BY, ORDER BY
数据操作 (DML)INSERT
, UPDATE, DELETE, MERGE, UPSERT
数据定义 (DDL)CREATE
, ALTER, DROP, TRUNCATE, RENAME
数据控制 (DCL)GRANT
, REVOKE
事务控制 (TCL)START TRANSACTION
, BEGIN, COMMIT, ROLLBACK, SAVEPOINT
连接与锁定JOIN
, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN, FOR UPDATE, LOCK IN SHARE MODE
分页控制LIMIT
, OFFSET, FETCH, NEXT, ROWS ONLY(标准 SQL:OFFSET ... FETCH NEXT ... ROWS ONLY)
模式与对象SCHEMA
, DATABASE, TABLE, VIEW, INDEX, TEMPORARY, RECURSIVE
公共表表达式WITH
, WITH RECURSIVE

-- 示例:多种关键字协同工作
START TRANSACTION;
INSERT INTO orders (user_id, amount) VALUES (101, 99.99);
UPDATE accounts SET balance = balance - 99.99 WHERE user_id = 101;
COMMIT;

-- 查询示例(含标准分页)
SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.status = 'active'
GROUP BY u.id, u.name
HAVING COUNT(o.id) >= 1
ORDER BY order_count DESC
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY; -- 标准 SQL 分页语法
2、标识符(Identifier)

位置:紧随关键字后的命名对象
分类:表名、字段(列)名、数据库名、视图名、索引名、模式名、别名等等。
注意:可被引号(如:双引号或反引号)包围以支持特殊字符或保留字命名。

SELECT id, first_name AS "Name" FROM `user-info`; 
-- `user-info` (带连字符的表名), "Name" (列别名), id, first_name (字段名)
3、常量/字面量(Constant/Literal)

位置:WHERE/SET/VALUES 子句
分类:字符串、数字、日期时间、布尔值、NULL。

INSERT INTO products VALUES (101, 'Laptop', 999.99, '2025-08-23', TRUE);
-- 101 (整数), 'Laptop' (字符串), 999.99 (浮点数), '2025-08-23' (日期), TRUE (布尔)
4、子句(Clause)

位置:语句功能模块
说明:由关键字引导的语法模块,构成 SQL 语句的“积木”。

SELECT name, age                    -- SELECT 子句
FROM users                          -- FROM 子句
WHERE age >= 18                     -- WHERE 子句
GROUP BY age                        -- GROUP BY 子句
HAVING COUNT(*) > 5                 -- HAVING 子句
ORDER BY name ASC                   -- ORDER BY 子句
LIMIT 100;                          -- LIMIT 子句
5、操作符(Operator)

位置:WHERE/SELECT/SET 子句
说明:执行运算或比较的符号或保留字。
核心子类:

类型
操作符
说明
算术+
, -, *, /, %
数值计算
比较=
, <>/!=, >, <, >=, <=, BETWEEN, IN, LIKE
值比较
逻辑AND
, OR, NOT
条件组合
字符串连接
`

集合操作符UNION
, UNION ALL, INTERSECT, EXCEPT/MINUS
合并多个 SELECT 结果集
集合比较操作符ANY
, SOME, ALL
与子查询结果进行量化比较
一元操作符+
, - (正负号), ~ (位非)
单操作数

通配符(%, _):虽为字符,但在 LIKE 操作中具有特殊语义,是其模式匹配的组成部分。

SELECT price * 1.1 AS new_price FROM products; -- * (算术)
SELECT * FROM users WHERE age BETWEEN 18 AND 65 AND status IN ('active', 'trial');
SELECT name FROM asia_customers
UNION ALL
SELECT name FROM europe_customers; -- UNION ALL (集合操作符)
SELECT * FROM logs WHERE message LIKE 'Error%'; -- LIKE + % (通配符)

-- 集合比较操作符示例
SELECT name, price FROM products 
WHERE price > ALL (SELECT price FROM products WHERE category = 'Budget Phone');
6、表达式(Expression)

位置:SELECT/WHERE/HAVING/ORDER BY
说明:由常量、变量、运算符、函数等组成的可求值结构。

SELECT price * quantity AS total, 
       (price * quantity) * (1 - discount) AS final_price
FROM order_items;

SELECT * FROM users 
WHERE age > 18 AND (country = 'US' OR country = 'CA');
-- age > 18 AND (country = 'US' OR country = 'CA') 是复合逻辑表达式
7、函数(Function)

位置:SELECT/WHERE/GROUP BY/HAVING/ORDER BY
说明:返回一个值的内置或用户定义程序。
分类:

  • 标量函数:UPPER(), LOWER(), LENGTH(), ROUND(), COALESCE(), IFNULL(), CASE 表达式
  • 聚合函数:COUNT(), SUM(), AVG(), MAX(), MIN(), GROUP_CONCAT(), STRING_AGG()
  • 窗口函数:ROW_NUMBER(), RANK(), DENSE_RANK(), SUM(...) OVER (...), LAG(), LEAD()
  • 类型转换:CAST(), CONVERT(), TRY_CAST()
SELECT 
  UPPER(name) AS upper_name,
  CASE WHEN age < 20 THEN 'Young' ELSE 'Adult' END AS age_group,
  AVG(salary) OVER (PARTITION BY dept) AS dept_avg_salary
FROM employees;
8、谓词(Predicate)

位置:WHERE/HAVING/ON 子句
说明:返回 TRUE/FALSE/UNKNOWN 的条件表达式。
常见谓词:

  • IS NULL / IS NOT NULL
  • IN / NOT IN
  • EXISTS / NOT EXISTS
  • BETWEEN ... AND ...(闭区间)
  • LIKE / NOT LIKE
  • ANY / SOME / ALL(配合子查询)
SELECT * FROM customers WHERE phone IS NULL;             -- IS NULL 谓词
SELECT * FROM orders WHERE status IN ('shipped', 'delivered'); -- IN 谓词
SELECT * FROM products p WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.product_id = p.id
); -- EXISTS 谓词

-- BETWEEN 谓词示例
SELECT * FROM sales 
WHERE sale_date BETWEEN '2025-01-01' AND '2025-01-31';
9、绑定变量(Bind Variable)

位置:动态 SQL/预处理语句中的值占位符

PREPARE stmt FROM 'SELECT * FROM users WHERE id = ? AND status = ?';
EXECUTE stmt USING @user_id, 'active';
10、别名(Alias)

位置:SELECT/FROM 后
分类:列别名(AS)、表别名(AS 或空格)。

SELECT u.name AS user_name, p.title AS product_title
FROM users u
JOIN purchases pu ON u.id = pu.user_id
JOIN products p ON pu.product_id = p.id;
11、空值(NULL)

位置:WHERE/HAVING 条件,或查询结果中

SELECT * FROM employees WHERE manager_id IS NULL;
INSERT INTO temp_table (id, name, salary) VALUES (1, 'Alice', NULL);
12、子查询(Subquery)

位置:WHERE/FROM/SELECT 子句中

-- WHERE 子句中的子查询
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);

-- FROM 子句中的子查询(派生表)
SELECT dept, AVG(salary) FROM (
  SELECT dept, salary FROM employees WHERE hire_date > '2020-01-01'
) AS recent_employees GROUP BY dept;
13、注释(Comment)

位置:任意位置(不影响执行)

-- 单行注释
/* 多行注释
   可以跨行 */
SELECT /* 内联注释 */ * FROM users;
14、事务(Transaction)

位置:多操作封装

START TRANSACTION;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 或 ROLLBACK;
15、参数(Parameter)

位置:存储过程/函数调用

CALL get_user_orders(101, '2025-01-01'); -- 101, '2025-01-01' 为传入参数
16、连接类型(Join Type)

位置:FROM/JOIN 子句
说明:属于“关键字”子类,但因其重要性常单独强调。

SELECT * FROM orders o INNER JOIN customers c ON o.cust_id = c.id;
SELECT * FROM users u LEFT JOIN profiles p ON u.id = p.user_id;
17、视图(View)

位置:FROM 子句(作为表的逻辑替代)

CREATE VIEW active_users_view AS SELECT * FROM users WHERE status = 'active';
SELECT * FROM active_users_view; -- 使用视图
18、锁(Lock)

位置:SELECT ... FOR UPDATE / SHARE 等语句中
说明:属于“关键字”子类。

SELECT * FROM inventory WHERE item_id = 1001 FOR UPDATE;
19、执行计划(Execution Plan)

位置:EXPLAIN / EXPLAIN ANALYZE 语句后

EXPLAIN SELECT * FROM large_table WHERE indexed_col = 'value';
20、索引(Index)

位置:CREATE/DROP 语句

CREATE INDEX idx_users_email ON users(email);
DROP INDEX idx_users_email ON users;
21、数据类型转换(Data Type Conversion)

位置:SELECT/WHERE/SET
说明:通过 CAST()、CONVERT() 等函数实现,已归入“函数”条目。

SELECT CAST('2025-08-23' AS DATE);
22、CASE 表达式

位置:SELECT/WHERE/ORDER BY 等
说明:属于“表达式”和“函数”范畴,常用于条件逻辑。

SELECT name,
       CASE WHEN score >= 90 THEN 'A'
            WHEN score >= 80 THEN 'B'
            ELSE 'C'
       END AS grade
FROM students;
23、分区(Partitioning)

位置:表定义/查询条件(PARTITION)

SELECT * FROM sales PARTITION (p2025_q3);
24、公共表表达式(CTE)

位置:WITH 子句

WITH high_value_customers AS (
  SELECT id, name FROM customers WHERE total_spent > 10000
)
SELECT * FROM high_value_customers;
25、窗口函数(Window Function)

位置:SELECT 子句
说明:属于“函数”子类。

SELECT name, salary,
       RANK() OVER (ORDER BY salary DESC) AS overall_rank,
       ROW_NUMBER() OVER (PARTITION BY dept ORDER BY hire_date) AS dept_hire_order
FROM employees;
26、数据类型(Data Type)

位置:CREATE/ALTER TABLE

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
27、约束(Constraint)

位置:表定义中

CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT NOT NULL,
  amount DECIMAL(10,2) CHECK (amount > 0),
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
28、临时表(Temporary Table)

位置:CREATE TEMPORARY TABLE / 临时结果集

CREATE TEMPORARY TABLE temp_results AS SELECT * FROM large_table WHERE condition = 'temp';
29、批量操作(Bulk Operation)

位置:INSERT/UPDATE/DELETE

INSERT INTO products (id, name) VALUES (1,'A'), (2,'B'), (3,'C'); -- 批量插入
30、递归查询(Recursive Query)

位置:WITH RECURSIVE

WITH RECURSIVE employee_tree AS (
  SELECT id, name, manager_id FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id FROM employees e
  JOIN employee_tree et ON e.manager_id = et.id
)
SELECT * FROM employee_tree;
31、存储过程(Stored Procedure)

位置:CALL 语句

CALL calculate_bonus(2025, 'sales');
32、模式(Schema)

位置:对象名前缀

SELECT * FROM finance.budgets; -- finance 为模式名
33、外键关联动作(Foreign Key Action)

位置:外键约束定义

FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE SET NULL
34、触发器(Trigger)

位置:CREATE TRIGGER

CREATE TRIGGER log_user_update
AFTER UPDATE ON users
FOR EACH ROW
INSERT INTO user_logs (user_id, action) VALUES (OLD.id, 'UPDATE');
35、同义词(Synonym)

位置:对象访问(Oracle 等)

SELECT * FROM emp_syn; -- emp_syn 是 employees 表的同义词
36、自增(Auto-increment)

位置:表定义

CREATE TABLE items (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
37、元数据(Metadata)

位置:信息模式查询

SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'users';
38、字符集(Charset & Collation)

位置:库/表/列定义

CREATE TABLE messages (
  content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);
39、游标(Cursor)

位置:存储过程内

DECLARE cur CURSOR FOR SELECT id FROM users;
OPEN cur;
FETCH cur INTO @user_id;
CLOSE cur;
40、权限(Permission)

位置:GRANT/REVOKE

GRANT SELECT, INSERT ON mydb.users TO 'analyst'@'%';
41、事务隔离级别(Isolation Level)

位置:事务设置

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
42、递归 CTE(Recursive CTE)

位置:WITH RECURSIVE 子句
说明:一种特殊的公共表表达式,用于处理层级或图结构数据(如:组织架构、评论树、BOM)。必须包含锚点查询和递归查询,并通过 UNION [ALL] 连接。

-- 示例:查询评论树中某条评论的所有后代
WITH RECURSIVE comment_tree AS (
  -- 锚点:起始评论
  SELECT id, parent_id, content, 0 AS level
  FROM comments
  WHERE id = 1001

  UNION ALL

  -- 递归:查找子评论
  SELECT c.id, c.parent_id, c.content, ct.level + 1
  FROM comments c
  INNER JOIN comment_tree ct ON c.parent_id = ct.id
)
SELECT * FROM comment_tree ORDER BY level;

关键语法元素:WITH RECURSIVE, UNION [ALL], 自引用 JOIN。

好啦!这 42 组 SQL 语句中的语法级概念都枚举完啦!以后有机会一一展开(详细拆解)。其实我们日常写 SQL 语句时,涉及到的高频概念也就前十几组,像关键字、标识符、函数这些天天用,后面像游标、递归 CTE 这些,遇到复杂需求再翻出来用就行。

记住这些“语法积木”,不管是查数据、建表,还是写复杂逻辑,我们都能搭出想要的 SQL 语句。多练几次,慢慢就熟啦!


该文章在 2026/1/13 9:49:59 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号