• 数据库常用 SQL 语句大全,从基础到高级全掌握

数据库常用 SQL 语句大全,从基础到高级全掌握

2025-08-16 12:32:41 栏目:宝塔面板 0 阅读

在数据库操作中,SQL 语句是必不可少的工具。无论是数据查询、插入、更新,还是表结构的创建与修改,都需要用到 SQL。今天就为大家整理一份全面的 SQL 语句指南,从基础到高级,助你轻松搞定数据库操作。

一、基础 SQL 语句

1. SELECT 语句

SELECT 语句用于从表中选取数据,结果会被存储在一个结果集中。

选取特定列:

SELECT 列名称 FROM 表名称

选取所有列:

SELECT * FROM 表名称

在结果集中,大多数数据库软件系统都允许使用编程函数进行导航,比如 Move-To-First-Record、Get-Record-Content 等。

2. SELECT DISTINCT 语句

表中可能包含重复值,DISTINCT 关键词用于返回唯一不同的值。

SELECT DISTINCT 列名称 FROM 表名称

3. WHERE 子句

WHERE 子句可添加到 SELECT 语句中,用于有条件地从表中选取数据。

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符包括大于、等于、小于、between、like 等。需要注意的是,SQL 使用单引号环绕文本值,数值则不用加引号。

4. AND 和 OR 运算符

AND 和 OR 可在 WHERE 子句中把两个或多个条件结合起来,实现更精确的筛选。

5. ORDER BY 语句

ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序(ASC)排序,若要降序排序,可使用 DESC 关键字。

6. INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。

插入所有列的值:

INSERT INTO 表名称 VALUES (值 1, 值 2,....)

指定插入数据的列:

INSERT INTO table_name (列 1, 列 2,...) VALUES (值 1, 值 2,....)

7. Update 语句

Update 语句用于修改表中的数据。

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

8. DELETE 语句

DELETE 语句用于删除表中的行。

删除特定行:

DELETE FROM 表名称 WHERE 列名称 = 值

删除所有行(表结构、属性和索引保持完整):

DELETE FROM table_name

或:

DELETE * FROM table_name

二、高级 SQL 语句

1. TOP 子句

TOP 子句用于规定要返回的记录数目,对于大型表非常有用。

SELECT TOP number|percent column_name (s) FROM table_name

例子:

选择前两个记录:

SELECT TOP 2 * FROM Persons

选择前 50% 的记录:

SELECT TOP 50 PERCENT * FROM Persons

2. LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SELECT column_name (s) FROM table_name WHERE column_name LIKE pattern

例子:

从 "Persons" 表中选取居住在以 "N" 开始的城市里的人:

SELECT * FROM Persons WHERE City LIKE 'N%'

"%" 可定义通配符,如 '% g'、'% lon%';通过 NOT 关键字,可选取不满足模式的记录,如 

SELECT * FROM Persons WHERE City NOT LIKE '% lon%'

3. SQL 通配符

% 通配符:匹配任意字符序列(包括空序列)。例如,从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:

SELECT * FROM Persons WHERE City LIKE '% lond%'

_通配符:匹配单个字符。例如,从 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'

[charlist] 通配符:匹配字符列表中的任意一个字符。例如,从 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

要选取不以这些字符开头的,可使用 [!ALN]。

4. IN 操作符

IN 操作符允许在 WHERE 子句中规定多个值。

SELECT column_name (s) FROM table_name WHERE column_name IN (value1,value2,...)

例子:

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

5. BETWEEN 操作符

BETWEEN ... AND 用于选取介于两个值之间的数据范围,值可以是数值、文本或日期。如需选择范围之外的,可在前面加 NOT。

6. AS

AS 用于为列名称和表名称指定别名。

为表指定别名:

SELECT column_name (s) FROM table_name AS alias_name

为列指定别名:

SELECT column_name AS alias_name FROM table_name

7. JOIN

JOIN 用于从两个或更多表中获取完整结果,主要有以下几种类型:

  • INNER JOIN:如果表中有至少一个匹配,则返回行。
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行。
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行。
  • FULL JOIN:只要其中一个表中存在匹配,就返回行。

例子:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName

8. SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。需注意,UNION 内部的 SELECT 语句必须拥有相同数量的列,列的数据类型相似,且列的顺序相同。

SELECT column_name (s) FROM table_name1 UNION (ALL) SELECT column_name (s) FROM table_name2

默认地,UNION 选取不同的值,允许重复值则用 UNION ALL。例子:列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA

9. SELECT INTO 语句

SELECT INTO 语句从一个表中选取数据,插入另一个表中,常用于创建表的备份复件或存档记录。

插入所有列到新表:

SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename

插入指定列到新表:

SELECT column_name (s) INTO new_table_name [IN externaldatabase] FROM old_tablename

例子:制作 "Persons" 表的备份复件:

SELECT * INTO Persons_backup FROM Persons

10. CREATE DATABASE 语句

用于创建数据库:

CREATE DATABASE database_name

11. CREATE TABLE 语句

用于创建数据库中的表。

CREATE TABLE 表名称 (列名称 1 数据类型,列名称 2 数据类型,列名称 3 数据类型,....)

12. SQL 约束

约束用于限制加入表的数据的类型,可在创建表时或表创建后通过 ALTER TABLE 语句规定。主要有:

  • NOT NULL:强制列不接受 NULL 值。
  • UNIQUE:唯一标识数据库表中的每条记录,每个表可多个 UNIQUE 约束。
  • PRIMARY KEY:唯一标识数据库表中的每条记录,主键包含唯一值且不能为 NULL,每个表只能有一个主键。
  • FOREIGN KEY:一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY,用于预防破坏表之间连接的动作。
  • CHECK:限制列中的值的范围。
  • DEFAULT:向列中插入默认值。

13. CREATE INDEX 语句(索引)

索引使数据库应用程序能更快地查找数据,理想情况是在常被搜索的列上创建索引。

创建简单索引(允许重复值):

CREATE INDEX index_name ON table_name (column_name)

创建唯一索引(两个行不能有相同的索引值):

CREATE UNIQUE INDEX index_name ON table_name (column_name)

例子:在 Person 表的 LastName 列创建名为 "PersonIndex" 的简单索引:

CREATE INDEX PersonIndex ON Person (LastName)

14. DROP 语句

用于删除索引、表和数据库。

删除索引:

DROP INDEX index_name ON table_name

删除表(表的结构、属性及索引也被删除):

DROP TABLE 表名称

删除数据库:

DROP DATABASE 数据库名称

仅删除表内数据,保留表本身:

TRUNCATE TABLE 表名称

15. ALTER TABLE 语句

用于在已有的表中添加、修改或删除列。

添加列:

ALTER TABLE table_name ADD column_name datatype

删除列:

ALTER TABLE table_name DROP COLUMN column_name

16. AUTO INCREMENT 字段(自增)

希望每次插入新记录时自动创建主键字段的值,可创建 auto-increment 字段。

例子:

CREATE TABLE Persons (P_Id int NOT NULL AUTO_INCREMENT,LastName varchar (255) NOT NULL,FirstName varchar (255),Address varchar (255),City varchar (255),PRIMARY KEY (P_Id))

默认 AUTO_INCREMENT 开始值是 1,每条新记录递增 1,可通过 ALTER TABLE Persons AUTO_INCREMENT=100 修改起始值。

17. SQL CREATE VIEW 语句(视图)

视图是基于 SQL 语句的结果集的可视化的表,可像使用真实表一样使用。

CREATE VIEW view_name AS SELECT column_name (s) FROM table_name WHERE condition

例子:创建视图 "Current Product List" 列出 Products 表中所有正在使用的产品:

CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No

可通过 CREATE OR REPLACE VIEW 更新视图,通过 DROP VIEW view_name 删除视图。

18. SQL 日期

MySQL 中常用的内建日期函数有 NOW ()、CURDATE ()、CURTIME () 等,存储日期或日期 / 时间值的数据类型有 DATE、DATETIME、TIMESTAMP、YEAR。

19. SQL NULL 值

NULL 用作未知的或不适用的值的占位符,无法用比较运算符测试,必须使用 IS NULL 和 IS NOT NULL 操作符。Oracle 中可用 NVL () 函数处理 NULL 值。

三、SQL 函数

1. SQL AVG 函数

返回数值列的平均值,NULL 值不计入计算。

SELECT AVG (column_name) FROM table_name

2. SQL COUNT () 函数

返回匹配指定条件的行数。

  • COUNT (column_name):返回指定列的值的数目(NULL 不计入)。
  • COUNT (*):返回表中的记录数。
  • COUNT (DISTINCT column_name):返回指定列的不同值的数目。

3. FIRST () 函数

返回指定字段中第一个记录的值,可结合 ORDER BY 语句排序。

SELECT FIRST (column_name) FROM table_name

4. LAST () 函数

返回指定字段中最后一个记录的值,可结合 ORDER BY 语句排序。

SELECT LAST (column_name) FROM table_name

5. MAX () 函数

返回一列中的最大值,NULL 值不计入计算,也可用于文本列获取按字母顺序排列的最高值。

6. MIN () 函数

返回一列中的最小值,NULL 值不计入计算,也可用于文本列获取按字母顺序排列的最低值。

7. SUM () 函数

返回数值列的总数(总额)。

SELECT SUM (column_name) FROM table_name

8. GROUP BY 语句

结合合计函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function (column_name) FROM table_name WHERE column_name operator value GROUP BY column_name

9. HAVING 子句

因 WHERE 关键字无法与合计函数一起使用,故增加 HAVING 子句。

SELECT column_name, aggregate_function (column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function (column_name) operator value

10. UCASE () 函数

把字段的值转换为大写。

SELECT UCASE (column_name) FROM table_name

11. LCASE () 函数

把字段的值转换为小写。

SELECT LCASE (column_name) FROM table_name

12. MID () 函数

从文本字段中提取字符。

SELECT MID (column_name,start [,length]) FROM table_name

13. LEN () 函数

返回文本字段中值的长度。

SELECT LEN (column_name) FROM table_name

14. ROUND () 函数

把数值字段舍入为指定的小数位数。

SELECT ROUND (column_name,decimals) FROM table_name

15. NOW () 函数

返回当前的日期和时间,SQL Server 中用 getdate () 函数。

16. FORMAT () 函数

用于对字段的显示进行格式化。

SELECT FORMAT (column_name,format) FROM table_name

掌握这些 SQL 语句,能让你在数据库操作中更加得心应手。无论是日常的数据查询、维护,还是复杂的数据分析,这些语句都能发挥重要作用。赶紧收藏起来,随时查阅吧!

本文地址:https://www.yitenyun.com/324.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL Web 应用 异步数据库 数据同步 ACK 双主架构 循环复制 Deepseek 宝塔面板 Linux宝塔 Docker 生命周期 JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer 序列 核心机制 esxi esxi6 root密码不对 无法登录 web无法登录 SSL 堡垒机 跳板机 HTTPS Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 HTTPS加密 连接控制 机制 Windows宝塔 Mysql重置密码 无法访问宝塔面板 HexHub 运维 Oracle 处理机制 Serverless 无服务器 语言 Spring Redis 异步化 ES 协同 group by 索引 技术 InnoDB 数据库锁 开源 PostgreSQL 存储引擎 监控 高可用 SQL 动态查询 分页查询 响应模型 缓存方案 缓存架构 缓存穿透 R edis 线程 数据 主库 自定义序列化 服务器 管理口 scp Linux的scp怎么用 scp上传 scp下载 scp命令 日志文件 MIXED 3 SVM Embedding 查询 存储 Linux 安全 工具 电商 系统 OB 单机版 SQLark SQLite-Web SQLite 数据库管理工具 架构 Rsync Postgres OTel Iceberg Recursive 云原生 RocketMQ 长轮询 配置 流量 共享锁 • 索引 • 数据库 防火墙 黑客 修改DNS Centos7如何修改DNS 向量数据库 大模型 聚簇 非聚簇 sftp 服务器 参数 PG DBA ​Redis 机器学习 推荐模型 场景 GreatSQL 连接数 优化 万能公式 缓存 业务 AI 助手 Ftp 数据备份 MySQL 9.3 Netstat Linux 服务器 端口 数据分类 加密 同城 双活 信息化 智能运维 RDB AOF openHalo 窗口 函数 INSERT COMPACT 核心架构 订阅机制 人工智能 推荐系统 磁盘架构 线上 库存 预扣 事务 Java 开发 MVCC redo log 重做日志 prometheus Alert Redisson 锁芯 向量库 Milvus mini-redis INCR指令 网络架构 网络配置 Doris SeaTunnel 高效统计 今天这篇文章就跟大家 Undo Log Python 引擎 性能 网络故障 B+Tree ID 字段 模型 Canal Web PostGIS IT运维 不宕机 数据脱敏 加密算法 R2DBC Redis 8.0 Hash 字段 分布式 集中式 崖山 新版本 自动重启 Pottery 微软 SQL Server AI功能 容器化 虚拟服务器 虚拟机 内存 OAuth2 Token Entity JOIN ZODB DBMS 管理系统 MongoDB 容器 数据类型 数据结构 读写 sqlmock 启动故障 分库 分表 LRU SpringAI 悲观锁 乐观锁 单点故障 QPS 高并发 传统数据库 向量化 数据页 StarRocks 数据仓库 数据集成工具 分页 Redka 工具链 Testcloud 云端自动化 事务隔离 部署 聚簇索引 非聚簇索引 分页方案 排版 filelock 排行榜 排序 发件箱模式 意向锁 记录锁 速度 服务器中毒 Web 接口 1 大表 业务场景 SSH Caffeine CP 仪表盘 分布式架构 分布式锁​ dbt 数据转换工具 日志 原子性 池化技术 连接池 EasyExcel MySQL8 AIOPS MCP 开放协议 网络 InfluxDB 优化器 IT 双引擎 RAG HelixDB Order 频繁 Codis Go 数据库迁移 字典 单线程 Ansible Crash 代码 对象 LLM 事务同步 订单 线程安全 Pump List 类型 UUIDv7 主键 服务器性能 TIME_WAIT 负载均衡 锁机制 行业 趋势 编程 算法 数据字典 兼容性 主从复制 代理 GitHub Git 语句 播客 UUID ID 神经系统 慢SQL优化 千万级 拦截器 动态代理 Valkey Valkey8.0 矢量存储 数据库类型 AI代理 查询规划 分布式锁 CAS 失效 MGR 多线程 技巧 Weaviate Zookeeper 分布式集群 解锁 调优 并发控制 恢复机制 ReadView 闪回 国产数据库 产业链 Next-Key 国产 用户 快照读 当前读 视图 RR 互联网 关系数据库 count(*) count(主键) 行数 表空间 恢复数据