835 words
4 minutes
SQL 系列(一):基础通用核心

AI 智能总结

SQL 1 基础通用核心#

SQL 是关系型数据库的通用操作语言,绝大多数基础语法可跨 MySQL、Oracle、SQLServer 通用,仅少量语法存在方言差异。本文精简梳理 DML、DDL/DCL/DTL、数据库约束三大核心知识点,搭配可运行代码,清晰区分多数据库用法,快速掌握 SQL 底层基础。

一、DML 数据操作语言(核心常用)#

DML 是日常开发使用频率最高的语法,负责操作数据表数据,三者基础语法完全通用,仅分页、排序细节存在方言差异。

1. 基础增删改查(通用)#

-- 查
SELECT 字段1,字段2 FROM 表名 WHERE 条件;
-- 增
INSERT INTO 表名(字段1,字段2) VALUES(值1,值2);
-- 改
UPDATE 表名 SET 字段1=新值 WHERE 条件;
-- 删
DELETE FROM 表名 WHERE 条件;

2. 分组、排序、聚合函数(通用)#

常用聚合:COUNT、SUM、MAX、MIN、AVG

-- 通用分组排序
SELECT 部门, COUNT(*) 人数 FROM 员工表
GROUP BY 部门 HAVING COUNT(*) > 2
ORDER BY 人数 DESC;

3. 方言差异:分页查询#

-- MySQL 分页
SELECT * FROM 员工表 LIMIT 0,10;
-- SQLServer 分页
SELECT TOP 10 * FROM 员工表;
-- Oracle 分页(需伪列)
SELECT * FROM (SELECT * FROM 员工表) WHERE ROWNUM <= 10;

4. 多表连接、子查询(完全通用)#

内连接、左连接、子查询语法三库无差异

-- 通用左连接
SELECT a.姓名,b.部门名 FROM 员工表 a
LEFT JOIN 部门表 b ON a.部门id = b.部门id;
-- 通用子查询
SELECT * FROM 员工表 WHERE 部门id IN (SELECT 部门id FROM 部门表);

二、DDL/DCL/DTL 数据库定义/权限/事务语言#

1. DDL 数据定义语言(建库、表、索引、视图)#

基础语法通用,建库仅 MySQL 支持,Oracle、SQLServer 无自建库语法。

-- MySQL 建库
CREATE DATABASE 测试库;
-- 通用建表
CREATE TABLE 学生表(学号 INT,姓名 VARCHAR(20));
-- 通用建索引
CREATE INDEX idx_stu_name ON 学生表(姓名);
-- 通用建视图
CREATE VIEW 学生视图 AS SELECT 学号,姓名 FROM 学生表;

2. DCL 数据控制语言(权限管理)#

语法通用,用于账号权限授予、回收

-- 授权通用语法
GRANT SELECT,INSERT ON 学生表 TO 测试账号;
-- 回收权限
REVOKE SELECT ON 学生表 FROM 测试账号;

3. DTL 事务语言(三者完全通用)#

事务四大特性 ACID,基础语法无方言差异

START TRANSACTION; -- 开启事务
UPDATE 学生表 SET 姓名='张三' WHERE 学号=1;
COMMIT; -- 提交
-- ROLLBACK; -- 回滚

三、数据库五大约束(通用核心)#

约束用于保证数据完整性,主键、非空、唯一三库完全通用,外键、检查约束存在细微差异。

通用基础约束代码#

CREATE TABLE 用户表(
id INT PRIMARY KEY, -- 主键:唯一且非空
phone VARCHAR(11) UNIQUE, -- 唯一约束:数据不重复
name VARCHAR(20) NOT NULL, -- 非空约束:禁止为空
age INT CHECK (age > 0) -- 检查约束
);

方言差异#

  1. 外键约束:三库语法一致,MySQL 需 InnoDB 引擎才生效
  2. CHECK 约束:MySQL 旧版本不生效,仅语法兼容;Oracle、SQLServer 完全生效

总结#

  1. 开发高频的DML 增删改查、连接、子查询、聚合分组全平台通用;
  2. 分页、建库、CHECK 约束是三大数据库主要方言差异点;
  3. 约束、事务、索引、视图核心语法统一,可一套代码适配多数据库。
SQL 系列(一):基础通用核心
https://fuwari.vercel.app/posts/sql-series/sql-01-basics/
Author
Zero02
Published at
2025-04-01
License
CC BY-NC-SA 4.0