2 查询叙述
在执行资料库的操作中,查询算是最常见也是最复杂的工作,所以一个查询叙述所使用到的子句也最多,下列是查询叙述的基本语法:
这一章会讨论「SELECT」、「FROM」、「WHERE」、「ORDER BY」和「LIMIT」五个子句组合起来的查询叙述。其它的子句会在下一章继续讨论。
在你使用「SELECT」搭配各种子句来查询资料时,要特别注意子句使用的顺序:
就算你每一个子句的写法都没有出错,如果顺序不对了:
2.1 指定使用中的资料库
一个资料库伺服器可以建立许多需要的资料库,所以在你执行任何资料库的操作前,通常要先指定使用的资料库。下列是指定资料库的指令:
如果你使用「MySQL Workbench」这类的工具软体,画面上看起来会像这样:
2.2 只有 SELECT
一个 SQL 查询叙述一定要以「SELECT」子句开始,再搭配其它的子句完成查询资料的工作。你可以单独使用「SELECT」子句,只不过这样的用法跟资料库一点关系都没有,它只不过把你输入的内容显示出来而已:
例如下列的查询叙述,只是简单的显示字串和计算结果,并不会查询资料库中的资料:
SELECT 'My name is Simon Johnson', 35 * 12
2.3 指定栏位与表格
一般所谓的查询叙述,通常是查询资料库中的资料,所以「SELECT」子句会搭配「FROM」子句来使用,而「SELECT」后面可以指定「*」表示要查询指定表格的所有栏位:
如果目前使用中的资料库为「world」,下列的叙述可以查询「world」资料库中,「city」表格的所有资料:
SELECT * FROM city
一个资料库伺服器可以建立许多需要的资料库,所以在你执行任何资料库的操作前,都要使用「USE」叙述指定一个使用中的资料库。不过你也可以在 SQL 叙述中使用下列的语法来指定资料库:
如果目前使用中的资料库是「world」,你不用先使用「USE cmdev」叙述切换使用中的资料库,可以使用下列的语法查询「cmdev」资料库中的「emp」表格:
SELECT * FROM cmdev.emp
2.4 指定需要的栏位
有时候你并不需要查询一个表格中所有的栏位,所以你可以在「SELECT」子句后面自己指定需要的栏位:
如果你在「SELECT」后面使用「*」的话:
你可以依照自己的需要决定要查询哪些栏位和顺序:
2.5 数学运算
除了查询表格中的栏位外,你可以加入任何需要的运算,这里先讨论一般常见的数学运算。下列是很常用来执行数学运算的运算子:
优先顺序 | 运算子 | 说明 | 范例 | 运算结果 |
---|---|---|---|---|
1 | % | 余数 | 7 % 3 | 1 |
1 | MOD | 余数 | 7 MOD 3 | 1 |
1 | * | 乘 | 7 * 3 | 21 |
1 | / | 除 | 7 / 3 | 2.333 |
1 | DIV | 除(整数) | 7 DIV 3 | 2 |
2 | + | 加 | 7 + 3 | 10 |
2 | - | 减 | 7 – 3 | 4 |
注:优先顺序的数字从 1 开始,1 表示优先权比较高,2 比较低,以此类推。就跟一般数学运算的先乘除后加减一样:在一个运算式中,优先权高的先算完,再换低优先权继续算;同样优先权的就由左到右计算。你也可以在运算式中使用左右括号,括号中的运算会先执行。
以「cmdev」资料库中的员工表格(emp) 来说,想要计算员工的年薪,就可以使用这些运算子来完成你的查询工作:
2.6 别名
你可以另外为「SELECT」后面查询的资料取一个自己想要的名称,这个作法称为「别名(alias
name)」:
取栏位别名会让执行查询后的结果,使用你自己取的名称为栏位名称:
注:帮一般栏位取一个栏位别名是比较没有必要的,如果是运算式的话,通常就要帮它取一个栏位别名来取代原来一大串的运算式。
在取栏位别名的时候要特别注意下列的状况:
另外如果你「坚持」要使用 SQL 语法中的保留字来当作栏位别名的话:
如果违反上列两个规定,执行叙述以后会发生错误。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论