是不是刚学 SQL 就被查询语句难住了?对着数据库表想查个数据,写了半天代码要么查不出结果,要么跳出一堆 “语法错误”;好不容易记住了 SELECT 基本格式,加个条件查询就懵,WHERE 后面的逻辑总写错;看到别人用排序、分组查询很顺手,自己却不知道该怎么组合语句。零基础学 SQL,查询语句是绕不开的核心,也是最能体现效率的技能。今天兔子哥就从零基础角度,把数据库查询语句的实战步骤拆解开,带大家从简单查询到复杂筛选一步步练,每个案例都能直接抄代码,跟着做,你会发现查询语句没那么难!
基础问题:啥是 SQL 查询语句?为啥它是数据库的 “重头戏”?
可能有朋友会问:“查询语句不就是找数据吗?有那么重要吗?” 当然重要!你可以把数据库想象成一个超级大的 Excel 表格,里面存着成千上万条数据,比如学生信息、商品记录。而 SQL 查询语句就是 “筛选工具”,能帮你从海量数据里快速找出想要的内容 —— 比如 “查所有 18 岁的学生”“找销量前 10 的商品”,这些都得靠查询语句实现。
为啥说它是 “重头戏”?因为咱们用数据库,80% 的操作都是在查数据。做报表要查、做分析要查、日常数据核对也要查。不会查询语句,数据库里的数据就是一堆乱码,根本用不起来。网友 “小数据” 说:“之前用 Excel 筛选数据要点半天,学了 SQL 查询语句后,一句代码搞定,效率直接翻倍!” 所以呀,学好查询语句,才算真正会用数据库。
场景问题:从零开始学查询,5 步实战步骤 + 案例
咱们以 “学生表” 为例,一步步学查询语句。先准备好数据,后面的案例都基于这个表:
步骤 1:建表插数据(先有 “原材料”)
首先得有个表和数据,不然查询啥呀?咱们建个 student 表,存学号、姓名、年龄、班级和成绩:
sql
-- 创建学生表CREATE TABLE student (id INT, -- 学号name VARCHAR(20), -- 姓名age INT, -- 年龄class VARCHAR(10), -- 班级score INT -- 成绩);-- 插入测试数据INSERT INTO student (id, name, age, class, score)VALUES(1, '小明', 18, '一班', 90),(2, '小红', 17, '二班', 85),(3, '小刚', 18, '一班', 78),(4, '小丽', 17, '二班', 92),(5, '小强', 19, '一班', 65);执行这两段代码,数据库里就有 5 条学生数据了,接下来的查询都用这个表练手。
步骤 2:最简单查询 —— 查所有数据或指定字段
刚入门先练 “无条件查询”,比如查整个表的数据,或只查某几个字段:
sql
-- 查所有学生的所有信息(*表示所有字段)SELECT * FROM student;-- 只查姓名和成绩(指定字段,用逗号隔开)SELECT name, score FROM student;-- 查班级信息(去重,避免重复显示)SELECT DISTINCT class FROM student; -- DISTINCT能去掉重复的班级效果:第一段代码会显示表中所有 5 条记录;第二段只显示姓名和成绩两列;第三段会显示 “一班”“二班” 两个不重复的班级。
避坑点:字段名之间用英文逗号隔开,最后一个字段后别加逗号;DISTINCT 要写在 SELECT 后面,别放错位置。
步骤 3:带条件查询 —— 用 WHERE 筛选数据
实际查询时很少查所有数据,大多要带条件,比如查 “一班的学生”“成绩大于 80 分的学生”:
sql
-- 查一班的所有学生SELECT name, age FROM student WHERE class = '一班';-- 查成绩大于80分的学生SELECT name, score FROM student WHERE score > 80;-- 查年龄18岁且成绩大于75分的学生(多条件用AND)SELECT name, age, score FROM studentWHERE age = 18 AND score > 75;-- 查一班或成绩大于90分的学生(多条件用OR)SELECT name, class, score FROM studentWHERE class = '一班' OR score > 90;效果:第一段查出来小明、小刚、小强 3 人;第二段查出来小明、小红、小丽 3 人。
避坑点:字符串条件(比如 ' 一班 ')必须用单引号;大于、小于符号是
> <,等于号是=(不是==);多条件用 AND(并且)或 OR(或者)连接,别用中文 “和”“或”。步骤 4:排序查询 —— 用 ORDER BY 排顺序
查出来的数据乱乱的?可以用 ORDER BY 按某个字段排序,比如按成绩从高到低排:
sql
-- 按成绩从高到低排序(DESC表示降序)SELECT name, score FROM student ORDER BY score DESC;-- 按年龄从小到大排,年龄相同再按成绩从高到低排SELECT name, age, score FROM studentORDER BY age ASC, score DESC; -- ASC表示升序(默认可不写)效果:第一段会把小丽(92)、小明(90)、小红(85)依次排前面;第二段先按年龄 17、18、19 排,同年龄的再按成绩降序。
避坑点:ORDER BY 要写在语句最后;降序必须加 DESC,升序可加 ASC 或不写;多个排序条件用逗号隔开,先按第一个条件排,再按第二个。
步骤 5:分组查询 —— 用 GROUP BY 统计数据
想统计每个班级的平均分、总人数?用 GROUP BY 分组查询:
sql
-- 按班级分组,查每个班级的人数SELECT class, COUNT(*) AS 人数 FROM student GROUP BY class;-- 按班级分组,查每个班级的平均分(保留1位小数)SELECT class, ROUND(AVG(score), 1) AS 平均分 FROM studentGROUP BY class;-- 按班级分组,只查平均分大于80的班级(用HAVING过滤分组)SELECT class, ROUND(AVG(score), 1) AS 平均分 FROM studentGROUP BY class HAVING 平均分 > 80;效果:第一段显示 “一班 3 人”“二班 2 人”;第二段显示各班平均分;第三段只显示平均分超 80 的班级。
避坑点:GROUP BY 要和聚合函数(COUNT、AVG 等)一起用;HAVING 用来过滤分组结果,不能用 WHERE 代替;AS 后面的 “人数”“平均分” 是别名,让结果更易读。
解决方案:这些查询错误不解决,查数据永远不顺手
新手写查询语句,这些错误几乎人人都踩过,照着解决就能少走弯路:
错误 1:条件里用了中文符号,提示 “语法错误”
现象:
SELECT * FROM student WHERE class = ‘一班’; 执行报错。原因:字符串用了中文单引号‘’,SQL 只认英文单引号 ''。
解决方法:把所有引号换成英文的,比如
class = '一班'。错误 2:字段名拼错,查不到数据或提示 “未知列”
现象:
SELECT name, scroe FROM student; 提示 “Unknown column'scroe'”。原因:把 “score” 拼成了 “scroe”,字段名和表中定义的不一致。
解决方法:用
DESC student;查看表结构,确认字段名正确,比如正确是 “score” 不是 “scroe”。错误 3:ORDER BY 放错位置,排序不生效
现象:
SELECT name, score FROM student ORDER BY score DESC WHERE class = '一班'; 报错。原因:ORDER BY 必须放在 WHERE 后面,不能放前面。
解决方法:调整顺序,
SELECT name, score FROM student WHERE class = '一班' ORDER BY score DESC;。错误 4:忘记加分号,语句执行不了
现象:输入
SELECT * FROM student 回车后出现 “->”,没反应。原因:SQL 语句必须以英文分号结尾,没加分号会认为语句没输完。
解决方法:补加分号再回车,
SELECT * FROM student;。自问自答:零基础练查询语句常见疑问
记不住那么多查询格式怎么办?
不用死记!新手先记住 “SELECT 字段 FROM 表名 WHERE 条件 ORDER BY 字段;” 这个基本结构,多写几次就熟了。可以把常用语句抄在纸上,练的时候对着写,用多了自然就记住了。
查数据时想只看前几条,有简单方法吗?
有!用 LIMIT 限制显示条数,比如
SELECT * FROM student LIMIT 3; 只显示前 3 条数据,适合快速预览。这个小技巧在数据量大的时候特别好用,能避免一下子查出太多数据卡顿。除了这些,还有更复杂的查询吗?需要学吗?
当然有,比如多表连接查询、子查询这些,但新手不用急。先把单表查询的基础练熟,再慢慢学复杂的。基础打牢了,学进阶内容会很顺,不然容易越学越乱。
最后说点实在话
零基础学 SQL 查询语句,最忌讳 “只看不动手”。看教程觉得简单,自己写却到处出错,这太正常了。我刚开始学的时候,把 “ORDER BY” 写成 “ORDER BYS”,查了半天没结果;用 WHERE 多条件时,把 AND 写成 “&”,报错半天找不到原因。但这些错误都是必经之路,解决多了,你会越来越熟练。
建议大家自己建个测试表,每天花 10 分钟练几个查询案例,从简单到复杂慢慢加条件。比如今天练带 WHERE 的查询,明天加 ORDER BY 排序,后天试试 GROUP BY 分组。坚持一周,你会发现自己写查询语句越来越顺,查数据再也不用对着表发呆了。记住,SQL 是工具,用得越多越顺手,别怕犯错,动手练才是最快的入门方法!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~