您好,欢迎来到95分类目录!站长微信:vip3632094
当前位置:95分类目录 » 站长资讯 » 百度你丫收录啊 » 文章详细 订阅RssFeed

130条必背SQL常用语句 - SQL语句

来源:SQL语句 浏览:4449次 时间:2025-09-08
简介:SQL语句
SQL语句
已认证公众号

分享SQL知识,讲解语句用法,助力数据库高效操作。

扫码关注公众号


一、基础查询与筛选(1-20条)

1、查询表中所有数据及所有列
SELECT * FROM student; -- student为表名,*代表所有列

解析:最基础的查询语句,用于获取目标表的完整数据集,适用于快速查看表中全部信息。

2、查询表中指定列的数据
SELECT id, name, age FROM student; -- 查询student表中的id、name、age三列

解析:仅提取需要的列,减少数据传输量,提高查询效率,是我们日常查询中最常用的方式之一。

3、查询符合单一条件的数据
SELECT * FROM student WHERE age = 18; -- 查询student表中年龄为18岁的所有数据

解析:通过WHERE子句筛选数据,精准定位符合条件的记录,是条件查询的基础。

4、查询符合多条件(AND)的数据
SELECT * FROM student WHERE age > 18 AND gender = '男'; -- 查询年龄大于18且性别为男的学生

解析:AND连接多个条件,仅返回同时满足所有条件的记录,适用于多维度筛选。

5、查询符合多条件(OR)的数据
SELECT * FROM student WHERE class = '一班' OR score > 90; -- 查询一班学生或成绩大于90分的学生

解析:OR连接多个条件,返回满足任意一个条件的记录,用于扩大筛选范围。

6、查询指定范围内的数据(BETWEEN)
SELECT * FROM student WHERE score BETWEEN 80 AND 90; -- 查询成绩在80到90分之间的学生(包含80和90)

解析:替代score >=80 AND score <=90,简化范围查询逻辑,适用于数值、日期等类型。

7、查询指定集合内的数据(IN)
SELECT * FROM student WHERE class IN ('一班''二班''三班'); -- 查询一、二、三班的学生

解析:替代多个OR条件,高效筛选属于指定集合的记录,适用于固定枚举值查询。

8、模糊查询(开头匹配)
SELECT * FROM student WHERE name LIKE '张%'; -- 查询姓“张”的学生(%代表任意长度字符)

解析:LIKE结合通配符%实现模糊匹配,张%表示以“张”开头的任意名字。

9、模糊查询(中间匹配)
SELECT * FROM student WHERE name LIKE '%小%'; -- 查询名字中包含“小”的学生

解析:%小%表示任意位置包含“小”的字符串,适用于不确定字符位置的模糊查询。

10、模糊查询(结尾匹配)
SELECT * FROM student WHERE name LIKE '%伟'; -- 查询名字以“伟”结尾的学生

解析:%伟表示以“伟”结尾的字符串,针对性匹配尾部固定的内容。

11、查询非空数据
SELECT * FROM student WHERE address IS NOT NULL; -- 查询地址不为空的学生

解析:IS NOT NULL筛选非空字段,IS NULL则筛选空字段,用在处理字段空值场景。

12、查询指定日期范围内的数据(含时间)
SELECT * FROM user_login 
WHERE login_time BETWEEN '2024-05-01 00:00:00' AND '2024-05-01 23:59:59';

解析:针对带时间戳的字段,用BETWEEN精准筛选“某一天”、“某一小时”等具体时间范围的数据,避免因只写日期漏查当天23:00-23:59的数据,是日志查询、行为分析的常用语句。

13、查询本周数据
SELECT * FROM orders 
WHERE YEARWEEK(order_date, 1) = YEARWEEK(CURDATE(), 1); -- 获取本周所有订单

解析:YEARWEEK(date, mode)返回年份和周数组合,mode=1表示周从周一开始,适用于周期性统计。

14、查询两表差异数据(左表有、右表无)
SELECT s.id, s.name 
FROM student s 
LEFT JOIN graduate g ON s.id = g.stu_id 
WHERE g.stu_id IS NULL;

解析:本质是“左连接+空值筛选”,精准定位“主表存在、关联表不存在”的记录(如:未毕业学生),用在数据对账(已注册未下单用户、已下单未付款订单)等高频场景,比NOT IN更高效且避免NULL值陷阱。

15、查询字段值出现次数大于N的记录
SELECT phone, COUNT(*) AS repeat_count 
FROM user_register 
GROUP BY phone 
HAVING COUNT(*) > 2 
ORDER BY repeat_count DESC;

解析:按“手机号”等唯一标识分组,筛选重复出现超过2次的记录,用于检测“重复注册”、“恶意刷单”等异常数据,是我们进行数据清洗、风控排查的常用语句。

16、去重查询指定列
SELECT DISTINCT class FROM student; -- 查询所有不重复的班级名称

解析:DISTINCT去除指定列的重复值,仅返回唯一记录,适用于获取枚举值列表。

17、查询表的字段结构信息
DESCRIBE student;  -- 简写:DESC student

解析:快速查看表的字段名、数据类型、主键/NULL约束、默认值等结构信息,比SHOW CREATE TABLE更简洁,是我们“忘记表结构时快速确认字段”的高频语句。

18、查询当前数据库所有表名
-- MySQL
SELECT TABLE_NAME 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'your_database_name'  -- 替换为你的数据库名
  AND TABLE_TYPE = 'BASE TABLE';  -- 只查询基础表(排除视图等)

-- SQL Server
SELECT name AS TABLE_NAME 
FROM sys.tables;

-- Oracle
SELECT table_name 
FROM user_tables;

解析:通过系统表查询当前数据库的所有表名,用在“新接手项目了解结构”、“批量生成脚本”等场景,是我们在数据库管理、项目交接时的高频语句。

19、JSON字段查询
SELECT profile->'$.contact.phone' AS phone FROM users; -- 提取JSON字段中的手机号

解析:->运算符(MySQL 5.7+)便捷查询JSON类型字段,适用于半结构化数据处理,但提取结果是带引号的字符串(如:"138****8000")。若需获取“无引号的纯文本”,需使用->>运算符(JSON解引用),更符合日常使用场景:

-- 推荐:返回无引号的手机号(138****8000)
SELECT profile->>'$.contact.phone' AS phone FROM users;

说明:其他数据库语法差异较大,如:PostgreSQL用profile->'contact.phone',返回的是text类型(无引号);SQL Server用JSON_VALUE(profile, '$.contact.phone'),返回的可能是带引号的字符串(取决于数据类型)。

20、跨数据库查询
SELECT * FROM db1.student s 
JOIN db2.scores sc ON s.id = sc.stu_id; -- 关联两个不同数据库的表

解析:通过database.table语法实现跨库操作,需用户有对应权限,适用于分布式数据库架构。

二、排序与分页(21-25条)

21、按指定列升序排序
SELECT * FROM student ORDER BY score ASC; -- 按成绩升序排序(ASC可省略,默认升序)

解析:

  • 标签: SQL语句 gh_d27f82789e25
  • © 版权声明

    推荐站点

    • Retro GamesRetro Games

      在线免费畅玩红白机(FC)、超任(SFC)、世嘉(MD)、Neo Geo、GB、GBA、N64、PS1/PSX和街机等模拟器怀旧复古游戏! 免费享受最佳复古游戏合集,无需下载。 Retro Games - Play Classic Retro Games , Emulator Games Online for Free.

      retrogamesnexus.com
    • 希仁之拥的博客希仁之拥的博客

      独立开发者 & 开源爱好者。喜欢猫猫狗狗、花花草草,热衷于创造酷酷的东西。 —— 希仁之拥 © blog.keepchen.com

      blog.keepchen.com
    • QR Online.ioQR Online.io

      Free online QR code generator supporting URL, text, contact info, WiFi and more. Customize colors, add logos, high-quality output.

      www.qronline.io
    • Temp Mail 365Temp Mail 365

      Temp Mail 365 provides instant temporary email addresses to protect your privacy and avoid spam. No registration required, 5-60 minute validity.

      temp-mail-365.com
    • 优站库优站库

      一个集网站推荐、内容推荐于一体的宝藏之地。我们精心搜罗各类常用网站,构建起全面的网站目录。无论是学习提升所需的在线课程平台,还是休闲娱乐的影视音乐网站,亦或是商务办公的效率工具站点,都能在我们的分类大全中快速找到。同时,我们也是一个充满活力的建站交流社区。站长们在此分享经验、探讨技术,共同提升网站建设水平。作为网址导航,我们为你清晰分类,节省寻找优质网站的时间和精力。在这里,你无需再为找不到合适的网站而烦恼,只需轻轻一点,就能开启精彩的网络之旅。

      www.uzkoo.com