为了账号安全,请及时绑定邮箱和手机立即绑定
慕课专栏

目录

索引目录

10+年DBA老司机带你轻松玩转 SQL

原价 ¥ 48.00

立即订阅
03 初探数据库-简单查询语句的使用
更新时间:2020-08-19 09:42:47
耐心是一切聪明才智的基础。——柏拉图

在上一节,我们已经对数据库、表和SQL语句的概念有了基本的了解,本节进一步和大家一起学习如何编写和执行查询语句。

3.1 客户端工具

访问数据库(包括执行查询语句)需要借助工具,就像从井里打水需要绳子和水桶一样,在安装好数据库之后,数据库服务器都自带命令行工具,比如 Oracle 的 Sql*plus ,尽管这些命令行工具功能很强大,基本满足了我们操作数据库的需求,但为了更方便更友好的访问数据库,最好还是使用客户端工具,值得推荐的几款客户端工具有:连接访问 Oracle 的 PL/SQL Developer,连接访问 SQLServer 的SQL Server Management Studio, 而 Navicat Premium 功能比较丰富,可以连接 Oracle、MySQL、SQLServer、PostgreSQL 和 SQLlite 等多种数据库。

Navicat Premium 的官网地址为:http://www.navicat.com.cn,根据自己的计算机环境下载对应的软件版本(32位或64位),下载软件后双击按照提示一步步的安装即可。

3.2 什么是查询语句

查询语句(带 Select 关键字)也叫检索语句,也可以更直观的叫它 Select 语句,当我们想从数据库中获取一个或多个字段的结果集时,就需要使用到查询语句,查询语句是我们平时使用最多的 SQL 语句,简单的查询语句语法为:

Select 字段  From  表名  

Select 语句大小写不敏感,就是说使用 SELECT STU_NAME FROM STUDENTselect stu_name from student 都能执行成功且结果相同。从以上查询语句可以发现,关键字与字段表名之间需要保留空格,空格可以是一个或多个,如果没有空格会导致执行错误。

值得说明的是,由于存在很多种数据库产品,而且不同数据库管理系统支持不同的 SQL 语法,但为了与 ANSI 标准相兼容,它们都以相似的方式支持一些关键字,比如:Select,Update,Insert,Delete,Drop,Where 等等。

ANSI是美国国家标准化组织的简称,它是一个核准多种行业标准的组织,该组织制定的SQL标准被称为ANSI SQL。1987年,国际标准化组织把ANSI SQL作为国际标准,ANSI SQL标准先后在1992、1999进行了修订,目前的标准为2011年修订的SQL-2011。

3.3 检索多个字段

上面例子中查询语句是用来查询学生表 ( student ) 中的姓名字段 ( stu_name ) ,如果希望同时返回学生表中的两个或多个字段,就需要这样来编写 SQL:

select stu_name,sid,age from student

当然,有时我们希望返回学生表中的所有字段,可以这样来编写 SQL:

select  id,sid,stu_name,gender,age from student

当一个表中的字段很多时,比如十多个甚至几十个字段,我们将所有字段都完全拼写正确也不是件容易的事,数据库开发者考虑到我们会遇到这种场景,所以查询表中所有字段也可以这样来编写 SQL:

select  *  from student

带上 * 号的查询语句虽然给我们提供了很大的方便,但不建议经常使用,就像我们从箱子里取出乒乓球,一次取出所有的球肯定会比取出一只球要费力的多。

尽管数据库系统功能很强大,获取所有字段仍会消耗较多的资源,除非业务需要,尽量一次只取出必要的字段,并将字段名写在 Select 关键字后面。

3.4 执行多条 SQL

当多个 SQL 语句放在一起执行时,SQL 结束时是否加上英文分号; 在不同数据库系统中要求是不同的。在 SQLServer 中是可以不加的,数据库可以自动识别一条 SQL 语句在哪里结束,但在 PostgreSQL,MySQL 和 Oracle 是必须要加分号的。

为了增加 SQL 的可移植性,养成良好的编程习惯,建议每条 SQL 后面都加上分号,做到“有始有终”。

在 Oracle 客户端上执行多条 SQL 的例子:

图片描述

最后那条 SQL 语句在这四种数据库(SQLServer、PostgreSQL,MySQL 和 Oracle)中都是可以不加分号的。

3.5 SQL 语句的注释

为了增加 SQL 语句的可读性,我们经常在 SQL 语句前面添加注释, ANSI 标准的注释符 -- 用于单行注释,格式为:--注释内容

--查询课程名和学分  

select  cname,credit from course ;  

多行注释使用/* */\* 用于注释文字的开头,*/用于注释文字的结尾。

/*第一条SQL查询课程编号,课程名和学分
  第二条SQL查选课学生编号和课程编号
*/
select  cid,cname,credit from course ;
select  cid,sid from elective ;

3.6 别名

与好朋友之间经常起绰号一样,我们也可以给字段或表名起别名,有时我们在检索数据时候,认为返回的字段名不够见文知意,这时,就可以将字段名重新命名,即起一个别名。来看个例子:

select  a.cname  as  ‘Course_Name’   from course a ;

在上面的 SQL 语句中,表 course 的别名是 a ,字段 cname 被重新定义别名为 Course_Name。

字段的别名可以是中文也可以是字符串,来看个例子:

select  cname  as  ‘课程名’   from course ;

也可以对函数处理后的字段进行重新命名:

select count(cid)  AS ‘总课程数’ from course ;

尽管别名在 SQL 中可有可无,但为了增加可读性,还是建议为表设置别名,

3.7 SQL 执行顺序

在我们编写 SQL 语句时一般是按照 select、from 、 where 、 group by、having 、order by 等关键字的顺序,但数据库在执行 SQL 的时候,并不是按照这个顺序执行的,以查询年龄大于 29 岁学生为例,让我们进一步了解数据库执行 SQL 语句的顺序。

select sid,stu_name,age,gender from  student where  age > 29;

数据库首先要知道从哪张表中获取数据,即首先执行 from 关键字,得知从 Student(学生表) 获取信息后,进一步查看我们希望得到哪些数据,这时就要执行 where 关键字,从而过滤掉年龄小于等于 29 岁的记录数据,最后数据库从 select 关键字那里获取我们最终需要哪些字段的信息

以上就是数据库执行简单 SQL 的大概顺序,是否与我们平时从 Excel 获取数据的操作顺序类似(打开Excel–>找到Sheet->筛选数据–>获取有效列)。然而数据库实际执行过程中,比这要复杂的多,我们在后面章节中会进一步阐述。

3.8 总结

通过本小节,我们了解了简单SQL的编写和执行,对SQL语句中一些专业术语也有了初步的印象。小节最后对SQL的执行顺序进行了说明,可能对于刚开始学习SQL的读者对SQL执行顺序还不能马上理解,但这并不影响下面章节的学习,可以暂时忽略该部分内容,继续下一小节的学习。

}
立即订阅 ¥ 48.00

你正在阅读课程试读内容,订阅后解锁课程全部内容

千学不如一看,千看不如一练

手机
阅读

扫一扫 手机阅读

10+年DBA老司机带你轻松玩转 SQL
立即订阅 ¥ 48.00

举报

0/150
提交
取消