CodeGym /课程 /SQL SELF /SELECT基础语法:查询结构和组成部分

SELECT基础语法:查询结构和组成部分

SQL SELF
第 1 级 , 课程 4
可用

好了,我们已经开始了解SELECT了,这个SQL命令就是用来从数据库里的表(或者多个表)里取数据的。可以说它就像数据库里的F5刷新键:“给我看看你都有什么”。最简单的查询结构长这样:


        SELECT 列1, 列2, … 列N
        FROM

这里:

  • SELECT — 这是查询的关键字,所有查询都从它开始。
  • 列1, 列2, ... — 这是你想要获取数据的列的列表。
  • FROM 表 — 指定你要从哪个表里取数据。

我们直接用例子来拆解一下吧!

SELECT命令的基本结构

查询所有列。如果你想看表里的所有数据,可以用星号*。比如说,我们有个表叫students

id name age grade
1 Alex 17 A
2 Maria 19 B
3 Otto 21 C

要把这个表里的所有数据都查出来,用这个查询:


        SELECT * FROM students
        

结果就是下面这样的列和行:

id name age grade
1 Alex 17 A
2 Maria 19 B
3 Otto 21 C

也就是说——整个表都查出来了,没毛病。

只查指定的列

当然,大多数时候你只想查你需要的那些列,没必要把没用的数据都带出来。比如你只想知道名字年龄。那你就写这样的查询:


        SELECT name, age FROM students
        

查询结果会是这样:

name age
Alex 17
Maria 19
Otto 21

明白区别了吗?只查你需要的列,查询又快又清爽。

查询的执行顺序

SQL查询其实有点小坑:虽然我们写SELECT在最前面,但实际上数据库先处理FROM部分,然后才返回结果。底层流程大概是这样的:

  1. 先处理FROM里的表:服务器先找到你指定的表。
  2. 对行应用条件(如果有的话):只选出符合条件的行。
  3. 选出指定的列:从剩下的行里提取你要的数据。

比如这个命令:


        SELECT name FROM students
        

数据库会先找到students表,然后读name列,最后才把结果返回给你。

实战例子

例子1:学生名单。

假设你是大学管理员,需要所有学生的名字。查询如下:

SELECT name
FROM students;

结果:

name
Alex
Maria
Otto

例子2:加上年龄和id。

现在你还想要id、名字和年龄。只要多写几个列就行:

SELECT name, age, id
FROM students;

结果:

name age id
Alex 17 1
Maria 19 2
Otto 21 3

例子3:加上表达式。

假如你想知道你的学生距离成年还差几岁。

那你可以把age换成21-age。这里我们假设21岁算成年:

SELECT name, 21-age
FROM students;

结果如下:

name 21-age
Alex 4
Maria 2
Otto 0

关于表达式的更多内容,后面几节课会详细讲。现在我们来看看你们可能已经遇到过的常见错误。

SELECT时常见的错误

表名和列名拼错了。

最常见的错误之一——表名或者列名写错了。

如果数据库里没有studentsz这个表,你会报错:

SELECT name
FROM studentsz; -- 错误:没有这个表!

或者列名其实叫name,你写成了student_name,也会报错:

SELECT student_name -- 错误:没有这个列!
FROM students;

解决办法很简单:随时检查你的表名和列名。

查询语法写错了。

还有一个常见错误——写列名的时候忘了加逗号:

SELECT name age id -- 错误:少了逗号!
FROM students; 

不过别担心。SELECT查询只是查数据,哪怕写错了也不会把你的数据库数据搞坏。但等我们学到那些能改数据的命令时,错误就会很严重了。

*而不是指定列。

你用*的时候,会把所有数据都查出来,包括你不需要的。这会让查询变慢,表大了还容易出问题。记住,只查你真正需要的列就行。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION