SQL查询语句从入门到实战全攻略

"为啥我明明存了数据却查不出来?"这是不是刚学数据库的你最抓狂的问题?别慌!今天咱们就手把手把SQL查询那点事儿掰开揉碎讲明白,保准你看完就能上手实操!


一、基础查询:查数据就像翻字典

​1. 最简单的查全表​
直接上硬菜!想查看整张学生表?一句搞定:

sql复制
SELECT * FROM 学生表;

这个星号(*)就是"通配符",相当于说"所有列我都要"。不过要提醒各位,实际开发中最好别偷懒用星号,后面会讲到为啥。

SQL查询语句从入门到实战全攻略  第1张

​2. 精准定位特定列​
比如只想看学生姓名和年龄:

sql复制
SELECT 姓名, 年龄 FROM 学生表;

注意列名之间用逗号隔开,最后一个列名别手滑加逗号!这就像写作文最后一句加句号一样重要。


二、条件筛选:给你的数据装个筛子

​1. 基础条件查询​
想找所有挂科的同学?用WHERE就对了!

sql复制
SELECT 学号 FROM 成绩表 WHERE 分数 < 60;

这里有个坑要注意:文本类型的数据得加单引号,比如WHERE 专业='计算机',数字就不用。

​2. 模糊搜索神器LIKE​
找姓张的同学?试试这个:

sql复制
SELECT * FROM 学生表 WHERE 姓名 LIKE '张%';

这个百分号%相当于任意字符的占位符,下划线_表示单个字符。比如说李_就能找到李强、李娜这些两个字的名字。


三、数据整容:给你的结果排排坐

SQL查询语句从入门到实战全攻略  第2张

​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 *的陷阱​
只查需要的列,就像去超市不会把整个货架搬回家。特别是大文本字段(如个人简介),不必要的话千万别查。


​个人实战心得​
干了五年数据库开发,发现新手最容易踩三个坑:

  1. 忘记WHERE条件直接UPDATE或DELETE(建议先用SELECT测试)
  2. 在多表连接时搞混字段归属(养成给表起别名的好习惯)
  3. 忽视NULL值的特殊处理(记住IS NULL而不是= NULL

最后送大家一句话:SQL学得好,数据任你找!现在就去打开数据库管理工具,把文中的例子都实操一遍,包你今晚做梦都在写SELECT语句!