SQL检索数据——SELECT

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

提示

1、关键字(keyword)
作为 SQL组成部分的保留字。关键字不能用作表或列的名字。例如:SELECT

2、结束 SQL 语句
多条 SQL语句必须以分号(;)分隔。多数 DBMS不需要在单条 SQL 语句后加分号,但也有 DBMS可能必须在单条 SQL语句后加上分号。 当然,如果愿意可以总是加上分号。事实上,即使不一定需要,加上 分号也肯定没有坏处。

3、SQL 语句和大小写
请注意,SQL语句不区分大小写,因此 SELECT 与 select 是相同的。 同样,写成 Select 也没有关系。但是建议对 SQL关键 字使用大写,而对列名和表名使用小写,这样做使代码更易于阅读和 调试。

4、使用空格
在处理 SQL语句时,其中所有空格都被忽略。SQL语句可以写成长长 的一行,也可以分写在多行。下面这 3种写法的作用是一样的:

 第一种:
 SELECT name FROM books;
 第二种:
 SELECT name
 FROM books;
 第三种:
 SELECT
 	name
 FROM
 	books;

推荐使用后面两种,便于阅读和理解,个人喜欢最后一种。

学习

例图:
在这里插入图片描述
1、SELECT语句
为了使用 SELECT 检索表数据,必须至少给出两条信息——想选择什么、以及从什么地方选择。
关键字:SELECTFROM

2、检索单个列
所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表 中检索数据
例如:

SELECT
 	name
FROM
 	books;

上述语句利用 SELECT 语句从 books表中检索一个名为 name 的列。
在这里插入图片描述
3、检索多个列
要想从一个表中检索多个列,仍然使用相同的 SELECT 语句。唯一的不 同是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。

提示:当心逗号 在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不 加。如果在最后一个列名后加了逗号,将出现错误。
例如:

SELECT
 	id,name,type
FROM
 	books;

上述语句利用 SELECT 语句从 books表中检索指定了 3 个列名id,name,type,列名之间用逗号分隔。
在这里插入图片描述
4、检索所有列
除了指定所需的列外(如上所述,一个或多个列),SELECT 语句还可以 检索所有的列而不必逐个列出它们。在实际列名的位置使用星号(*)通 配符可以做到这点。

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

提示:检索未知列 使用通配符有一个大优点。由于不明确指定列名(因为星号检索每一 列),所以能检索出名字未知的列。
例如:

SELECT
 	id,name,type
FROM
 	books;

上述语句利用 SELECT 语句从 books表中检索所有列。
在这里插入图片描述
5、检索不同的值(DISTINCT)
如前所述,SELECT 语句返回所有匹配的行。但是,如果你不希望每个值 每次都出现,该怎么办呢?例如,你想检索 books 表中所有书的分类,但是查询会把每个分类列出来,这时办法就是使用 DISTINCT 关键字,顾名思义,它指示数据库只返回不同 的值。

注意:不能部分使用 DISTINCT DISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。例 如,你指定 SELECT DISTINCT name, type,除非指定的两列完全相同,否则所有的行都会被检索出来。
例如:

SELECT DISTINCT
 	type
FROM
 	books;

告诉 DBMS只返回不同(具有唯一性)的 type 行,所以正如下面的输出,只有3行。如果使用 DISTINCT 关 键字,它必须直接放在列名的前面。
在这里插入图片描述
6、限制结果()
SELECT 语句返回指定表中所有匹配的行,很可能是每一行。如果你只想返回第一行或者一定数量的行,该怎么办呢?这是可行的,然而遗憾的 是,各种数据库中的这一 SQL实现并不相同。

  1. 在 SQL Server和 Access中使用 SELECT 时,可以使用 TOP 关键字来限制 最多返回多少行

     SELECT TOP 5
      	name
     FROM
      	books;
    

    上面代码使用 SELECT TOP 5 语句,只检索前 5行数据。

  2. 如果你使用 Oracle,需要基于 ROWNUM(行计数器)来计算行

     SELECT
     	name
     FROM
     	books
     WHERE ROWNUM <=5; 
    
  3. 如果你使用 MySQL、MariaDB、PostgreSQL或者 SQLite,需要使用 LIMIT 子句,如果需要指定从哪儿开始以及检索的行数,就要用到 OFFSET

     SELECT
     	name
     FROM
     	books
     LIMIT 5;
    

    这个表示查找五行,默认从 0 开始

     SELECT
     	name
     FROM
     	books
     LIMIT 5
     OFFSET 4;
    

    这个表示查找五行,从 4 开始

注意:第 0 行
第一个被检索的行是第 0行,而不是第 1行。因此,LIMIT 1 OFFSET 1 会检索第 2行,而不是第 1行。
提示:MySQL 和 MariaDB 捷径
MySQL和MariaDB支持简化版的LIMIT 4 OFFSET 3语句,即LIMIT 3,4。 使用这个语法,逗号之前的值对应 OFFSET,逗号之后的值对应 LIMIT。
在这里插入图片描述
8、使用注释
一、原因

  1. 我们这里使用的 SQL语句都很短,也很简单。然而,随着 SQL 语句 变长,复杂性增加,你就会想添加一些描述性的注释,这便于你自己 今后参考,或者供项目后续参与人员参考。这些注释需要嵌入在 SQL 脚本中,但显然不能进行实际的 DBMS 处理。
  2. 这同样适用于 SQL 文件开始处的内容,它可能包含程序员的联系方 式、程序描述以及一些说明。
  3. 注释的另一个重要应用是暂时停止要执行的 SQL代码。如果你碰到一 个长 SQL语句,而只想测试它的一部分,那么应该注释掉一些代码, 以便 DBMS将其视为注释而加以忽略。

二、使用
(1)---- 之后的文本就是注释。
(2)##之后的一整行都将作为注释。
(3)/**//**/之间的任何内容都是注释。
SQL语句正常执行
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值