【数据库知识扫描】 | SQL复习-开篇 检索数据及使用注释

先回答三个问题:为什么学?大概是个什么方式,怎么学?

因为金三银四学习好时光,因为知识越用越新。大概是一个对着书,敲着练习,完成实验心得,截图+po博文的方式。

最好在较短时间内,复习完这本SQL必知必会(之所以是说复习,是因为之前使用过也学习过,但并不够深入),对以MySQL的掌握程度来看,考虑进一步的优化问题,能熟练完成crud(增删改查),包括DQL、DML,对于DDL的学习操作也要掌握。

所以这部分前面操作,快速过一遍,后面部门需要重点关注。

目录

第2课 检索数据

2.1 SELECT语句

2.2 使用注释


使用软件之前,先建库然后使用命令行界面完成教材附录中提供的命令文件

学习准备已经完成了,将相关表及数据添加上去了。

添加完数据,可以看到数据库中出现这些表及记录:

打开表看下数据是否都在:

既然添加成功了,那么使用+ 在线微信读书,网页打开这本教材,主要是为了自己方便查看:

万事具备,接下来开始复习:

第一课主要是介绍数据库、数据库管理系统、数据库管理员、数据表、数据、记录这些专用名词,这里看一遍就可以,在后面实践性学习中,有区别可以标注出来。那么从第二课开始,学会检索:

第2课 检索数据

如何使用SELECT语句从表中检索一个或多个数据列。

2.1 SELECT语句

这两条信息对于我们检索表数据非常重要:想选择什么,以及从什么地方选择。

我们来依次跟着练习(前面提供的建表及数据插入可以直接复制粘贴,这里最好自己敲,没有很复杂,熟悉一下)

 而且为了养成标准习惯,开始使用大写关键字:

①检索单个列 

SELECT prod_name FROM Products;

检索结果和书上结果一致,但加个说明:自己敲命令的话,得到结果只要相同行数就行,顺序并不强行一样。

结束SQL语句的符号是分号(;),部分DBMS不需要对单条加,但是加也没有坏处。所以默认单多条SQL语句都以这个结尾。

大小写的问题:关键字大小写不区分,包括Select都行,但是从开发人员角度来看,关键字的大写和表名列名包括值区别开来,代码会更容易阅读调试。表名啊列名啊数据值,这都需要一致。

空格问题:SQL语句中不识别空格,所以可以写一排也可以多行,作用一样。

②检索多个列 

SELECT prod_id,prod_name,prod_price FROM Products;

与前一个例子一样,这条语句使用SELECT语句从表Products中选择数据。在这个例子中,指定了3个列名,列名之间用逗号分隔。

逗号问题:在选择多个列时,一定要在列名之间加上逗号(,),但最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误。

数据显示问题:SQL语句一般返回原始的、无格式的数据。数据的格式化是表示问题,而不是检索问题。

③检索所有列 

SELECT语句还可以检索所有的列,在实际列名的位置使用星号(*)通配符可以做到。

SELECT *FROM Products;

通配符*的使用:一般而言,除非确实需要表中的每一列,否则最好少使用*通配符。虽然使用通配符能让你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能

加上能检索出名字未知的列,所以作为熟系数据库的表结构内容来用。

④检索不同值 

查重结果,查到是一回事,为了保证查出来的结果唯一性。举个栗子:

返回9条结果(即使表中只有3个产品供应商),因为products表中有9种产品。

那么如何检索出不同的值?得到的结果是唯一的。可以使用DISTINCT关键字,顾名思义,它指示数据库只返回不同的值。

 两条语句如下:

SELECT vend_id FROM Products;
SELECT DISTINCT vend_id FROM Products;

DISTINCT使用:不能部分使用DISTINCT,它会作用于所有的列,不仅仅是跟在其后的那一列。比如说,指定SELECT DISTINCT vend_id,prod_price,因为指定的两列不完全相同,所以所有的行都会被检索出来,也可以理解查重对比的话,对比维度加多,这里面总会有不一样的信息,那么相同信息列在其他列不一样不同,所以所有列都出来了。

⑤限制检索结果 

对检索到的结果有要求,比如只想要其中一行或者一定范围内的。这个地方,不同数据库实现不同,学习使用的是MySQL,所以主要以MySQL为主来看(使用MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT子句):

LIMIT 5指示MySQL等DBMS返回不超过5行的数据:

SELECT prod_name FROM Products LIMIT 5;

获得结果为:

再加一个限制,比如返回从第5行起的5行数据。LIMIT 5 OFFSET 5可以指示MySQL等DBMS完成该限制显示,第一个数字是检索的行数,第二个数字是指从哪儿开始。这个语句的输出是:

在我们的例子中,Products表中只有9种产品,所以LIMIT 5 OFFSET 5只返回了4行数据(因为没有第5行)。

开始行的问题:第一个被检索的行是0行开始,所以LIMIT 1 OFFSET 1会检索第2行,而不是第1行。

简洁语法问题:MySQL(MariaDB和SQLite也)支持简化版的LIMIT 4OFFSET 3语句,即LIMIT 3,4。使用这个语法,逗号之前的值对应OFFSET,逗号之后的值对应LIMIT。

2.2 使用注释

同编程语言一样,如果遇到不需要处理执行的文本(比如注释说明、雍正之类的)

① --(两个连字符)嵌在行内

语句及运行结果如下:

mysql> SELECT prod_name  -- this
    -> FROM Products;

② # 行内注释

③ 多行注释 从/*开始,到*/结束

这部分的复习就结束了,这一课完成~下一课会对检索出来的数据进行排序。

刻意练习,每日精进。Go~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值