Photo by Lorem Ipsum
835 words
4 minutes
SQL 系列(一):基础通用核心
SQL 教程
Posts in this series (10)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(*) > 2ORDER 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 员工表 aLEFT 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) -- 检查约束);方言差异
- 外键约束:三库语法一致,MySQL 需 InnoDB 引擎才生效
- CHECK 约束:MySQL 旧版本不生效,仅语法兼容;Oracle、SQLServer 完全生效
总结
- 开发高频的DML 增删改查、连接、子查询、聚合分组全平台通用;
- 分页、建库、CHECK 约束是三大数据库主要方言差异点;
- 约束、事务、索引、视图核心语法统一,可一套代码适配多数据库。
SQL 系列(一):基础通用核心
https://fuwari.vercel.app/posts/sql-series/sql-01-basics/