SQL查询语句从入门到实战全攻略
"为啥我明明存了数据却查不出来?"这是不是刚学数据库的你最抓狂的问题?别慌!今天咱们就手把手把SQL查询那点事儿掰开揉碎讲明白,保准你看完就能上手实操!
一、基础查询:查数据就像翻字典
1. 最简单的查全表
直接上硬菜!想查看整张学生表?一句搞定:
sql复制SELECT * FROM 学生表;
这个星号(*)就是"通配符",相当于说"所有列我都要"。不过要提醒各位,实际开发中最好别偷懒用星号,后面会讲到为啥。

2. 精准定位特定列
比如只想看学生姓名和年龄:
sql复制SELECT 姓名, 年龄 FROM 学生表;
注意列名之间用逗号隔开,最后一个列名别手滑加逗号!这就像写作文最后一句加句号一样重要。
二、条件筛选:给你的数据装个筛子
1. 基础条件查询
想找所有挂科的同学?用WHERE就对了!
sql复制SELECT 学号 FROM 成绩表 WHERE 分数 < 60;
这里有个坑要注意:文本类型的数据得加单引号,比如WHERE 专业='计算机'
,数字就不用。
2. 模糊搜索神器LIKE
找姓张的同学?试试这个:
sql复制SELECT * FROM 学生表 WHERE 姓名 LIKE '张%';
这个百分号%相当于任意字符的占位符,下划线_表示单个字符。比如说李_
就能找到李强、李娜这些两个字的名字。
三、数据整容:给你的结果排排坐

1. 排序大法ORDER BY
想看工资从高到低排序的员工名单?
sql复制SELECT 姓名, 工资 FROM 员工表 ORDER BY 工资 DESC;
默认是升序ASC,想倒过来记得加DESC。这里有个冷知识:其实可以按多个字段排序,比如先按部门排,同部门再按工资排。
2. 分组统计GROUP BY
想知道每个部门的平均工资?
sql复制SELECT 部门, AVG(工资) FROM 员工表 GROUP BY 部门;
这里必须提醒:SELECT后面只能放分组字段和聚合函数!就像你不能说"按省份统计人口,结果还要显示每个市"一样自相矛盾。
四、高阶操作:玩转多表查询
1. 表连接三剑客
- 内连接INNER JOIN:只要匹配的记录
sql复制SELECT 员工.姓名, 部门.名称FROM 员工表 INNER JOIN 部门表ON 员工.部门ID = 部门.ID;
- 左连接LEFT JOIN:左表全保留,右表没匹配就显示NULL
- 全连接FULL JOIN:两边的记录都保留
这里有个血泪教训:表连接一定要明确关联条件,不然会产生笛卡尔积,分分钟让你电脑卡 *** 。
2. 子查询套娃技巧
找工资超过平均水平的员工:
sql复制SELECT 姓名 FROM 员工表WHERE 工资 > (SELECT AVG(工资) FROM 员工表);
这种写法就像俄罗斯套娃,里层查询先算出平均值,外层再用这个值筛选。刚开始可能有点绕,多练几次就通了。
五、性能优化:让你的查询飞起来
1. 索引就像字典目录
在经常查询的字段(比如学号、身份证号)上建索引,速度能提升几十倍!但别乱建索引,就像不能给字典每页都贴便利贴一样,会影响写入速度。
2. 避免SELECT *的陷阱
只查需要的列,就像去超市不会把整个货架搬回家。特别是大文本字段(如个人简介),不必要的话千万别查。
个人实战心得
干了五年数据库开发,发现新手最容易踩三个坑:
- 忘记WHERE条件直接UPDATE或DELETE(建议先用SELECT测试)
- 在多表连接时搞混字段归属(养成给表起别名的好习惯)
- 忽视NULL值的特殊处理(记住
IS NULL
而不是= NULL
)
最后送大家一句话:SQL学得好,数据任你找!现在就去打开数据库管理工具,把文中的例子都实操一遍,包你今晚做梦都在写SELECT语句!