当前位置:首页 > 问答 > 正文

怎么用SQL语句快速找到你想要的表格信息,数据库里查表其实没那么难

“怎么用SQL语句快速找到你想要的表格信息,数据库里查表其实没那么难”

很多刚开始接触数据库的朋友,一听到SQL查询就觉得头大,感觉是程序员才搞得定的高深技术,其实不然,查数据库就像在一个巨大的图书馆里找一本书,只要你掌握了正确的方法,就能快速定位到你想要的信息,今天我们就来聊聊,怎么用最简单的SQL语句,在这个“数据图书馆”里轻松找到你想要的“书”。

最基础也是最核心的语句,就是SELECT语句,你可以把它理解成一句“我要看什么东西”的指令,它的基本结构非常简单,通常长这样:(来源:W3Schools SQL教程)

SELECT 你想看的列名 FROM 这些列所在的表名;

举个例子,假设我们有一个叫“员工信息表”的表格,里面记录了所有员工的数据,包括工号、姓名、部门、工资等,如果你只是想看看所有员工的姓名,那么你的SQL语句就是这样:

SELECT 姓名 FROM 员工信息表;

当你执行这条语句后,数据库就会把“员工信息表”里所有员工的姓名都列出来给你看,是不是很简单?如果你想知道得更全面一点,想同时看到员工的工号和姓名,那就在SELECT后面加上这两个列名,用逗号隔开:

SELECT 工号, 姓名 FROM 员工信息表;

甚至,如果你懒得一个个列出来,想看到这个表里所有的列,有一个偷懒的写法,就是使用星号(*),这个星号就代表了“所有列”的意思,下面这条语句会把“员工信息表”里每一行数据的每一个信息都展示出来:

SELECT * FROM 员工信息表;

在实际工作中,除非你确实需要查看整张表的全貌,否则不建议经常使用SELECT *,因为如果表很大、列很多,查询速度会变慢,而且返回的信息太多也不利于你快速找到重点。

怎么用SQL语句快速找到你想要的表格信息,数据库里查表其实没那么难

好了,现在我们已经知道怎么看全部数据了,但大多数时候,我们并不需要看全部,我们只想看其中符合某些条件的部分,我们只想看“销售部”的员工有哪些,这时候,就需要请出另一个关键指令——WHERE子句。(来源:菜鸟教程 SQL WHERE 子句)

WHERE的作用就是设置一个条件,像筛子一样,只留下符合条件的记录,我们把WHERE加在FROM的后面:

SELECT 姓名, 部门 FROM 员工信息表 WHERE 部门 = ‘销售部’;

执行这条语句,数据库就会乖乖地只把部门是“销售部”的员工姓名和部门列出来,这里的等号(=)就是判断是否相等的条件,除了等号,我们还可以用其他条件,

  • 大于(>)、小于(<):想找工资高于8000的员工?SELECT 姓名, 工资 FROM 员工信息表 WHERE 工资 > 8000;
  • 不等于(<> 或 !=):想找除了销售部以外的员工?SELECT 姓名, 部门 FROM 员工信息表 WHERE 部门 <> ‘销售部’;
  • 模糊查询(LIKE):这个非常实用!当你记不清全名,只记得部分内容时就用它,你想找所有姓“张”的员工,可以这样写:SELECT 姓名 FROM 员工信息表 WHERE 姓名 LIKE ‘张%’; 这里的百分号(%)是一个通配符,代表任意长度的任意字符,张%’就表示以“张”开头的所有名字。

查出来的数据可能顺序是乱的,我们希望能按照一定的规律排列,比如按工资从高到低排序,这样一眼就能看出谁的收入最高,这时就要用到ORDER BY子句。(来源:W3Schools SQL ORDER BY 关键字)

ORDER BY就是“排序依据”的意思,我们把它放在语句的最后面。

怎么用SQL语句快速找到你想要的表格信息,数据库里查表其实没那么难

SELECT 姓名, 工资 FROM 员工信息表 ORDER BY 工资 DESC;

这句的意思就是:查询员工的姓名和工资,然后按照“工资”这一列来排序,后面的DESC是“降序”的意思,也就是从大到小排,如果你想从小到大排,就把DESC换成ASC(升序),或者干脆不写,因为默认就是升序。

我们再学一个统计功能,我们经常需要知道一些汇总信息,比如公司总共有多少个员工?销售部的最高工资是多少?这就要用到聚合函数。(来源:菜鸟教程 SQL 聚合函数)

常用的聚合函数有:

  • *COUNT()*:数一数有多少行,`SELECT COUNT() FROM 员工信息表;` 这会返回员工的总数。
  • SUM(列名):对某一列的值求和。SELECT SUM(工资) FROM 员工信息表 WHERE 部门=‘销售部’; 这会计算出销售部所有员工的工资总和。
  • AVG(列名):计算某一列的平均值。SELECT AVG(工资) FROM 员工信息表; 计算全公司的平均工资。
  • MAX(列名)/MIN(列名):找出某一列的最大值/最小值。SELECT MAX(工资) FROM 员工信息表; 找出公司的最高工资。

你可以把这些基础的语句像搭积木一样组合起来使用,就能解决绝大部分常见的查表需求,一个相对复杂的查询:“找出销售部工资最高的前三名员工的姓名和工资,并按工资从高到低排列”,它的SQL语句就是:

SELECT 姓名, 工资 FROM 员工信息表 WHERE 部门 = ‘销售部’ ORDER BY 工资 DESC LIMIT 3; (注:LIMIT用于限制返回的条数,语法可能因数据库类型略有不同,如在SQL Server中会用TOP)

看,其实并不复杂对吧?快速找到你想要表格信息的关键就是:用SELECT指明要看什么,用FROM指明从哪张表看,用WHERE来过滤出你关心的部分,用ORDER BY来让结果更有序,再用聚合函数来做简单的统计,多练习几次,你就能越来越熟练,在数据的海洋里轻松遨游了,数据库查表真的没那么难!