MySQL 学习笔记 —— 2、检索数据

关键字

作为 SQL 组成部分的保留字,关键字是不能用作表或列的名字的
常有的关键字有:selectupdatecreate
每个 SQL 语句都是由一个或多个关键字构成的

SELECT

select 语句的作用是从一个或多个表中检索信息
至少需要给出两个信息——想要选择什么,以及从什么地方选择

检索单个列

以下所有代码均来自《SQL必知必会(第四版)》,且需要配合书中给出的案例使用,相关链接为 案例源码下载与导入

在 mysql 中输入

select prod_name from Products;

利用 SELECT 语句从 Products 表中检索一个名为 prod_name 的列

图片1

  1. 多条 SQL 语句必须以分号(;)分隔
  2. SQL 语句不区分大小写;但是将 SQL 关键字使用大写,其他使用小写,可以使代码更加易于阅读
  3. 在处理 SQL 语句时,其中所有的空格都被忽略;一条语句可以写成很长的一行,也可以分写在多行

检索多个列

要想从一个表中检索多个列,仍然使用相同的 SELECT 语句;

只是,必须在 SELECT 关键字后给出多个列名,列名之间必须使用 逗号分隔

SELECT prod_id, prod_name, prod_price FROM Products;

图片2

检索所有列

除了指定所需的列外,SELECT 语句还可以检索所有的列而不必逐个列出
在实际列名的位置使用星号(*)通配符可以做到这点

 SELECT * FROM Products;

picture3

  • 列的顺序一般是列在表中定义出现的顺序,但是并不总是如此;由于通常,数据返回程序后,会根据需要进行格式化,再表示出来,所以不需要考虑此问题

  • 使用通配符(*)可以检索出名字未知的列(优点),但是检索不必要的列通常会降低检索和应用程序的性能(缺点)

检索不同的值

SELECT 语句会返回所有匹配的行;如下所示,有时候这样是不必要的,因为有一部分是重复的,所以需要检索出不同的值

这时可以使用 DISTINCT 关键字,指示数据库只返回不同的值

如果使用 DISTINCT 关键字,必须直接放到列名的前面;并且将作用于所有的列,而不仅仅是其后的一个列

SELECT vend_id FROM Products;

图4

SELECT DISTINCT vend_id FROM Products;

图5

不能部分使用 DISTINCT:
DISTINCT 关键字应用于所有列而不仅仅是前置它的列
如果给出 SELECT DISTINCT vend_id, prod_price , 除非指定的两个列都不同, 否则所有行都将被检索出来

限制结果

SELECT 语句返回指定表中所有匹配的行,很可能是每一行,如果只想返回第一行或一定数量的行
这个语句随使用的数据库的不同而不同

在 MySQL 中,使用 LIMIT 子句

SELECT prod_name FROM Products LIMIT 5;

tu6

LIMIT 5 指示 MySQL 等 DBMS 返回不超过 5 行的数据
为了得到后面的 5 行数据,需要指定从哪儿开始以及检索的行数

SELECT prod_name FROM Products LIMIT 5 OFFSET 5;

图7

LIMIT 5 OFFSET 5 指示 MySQL 等 DBMS 返回 从第5行起的5行数据

  • 第一个数字 5 指示检索的行数
  • 第二个数字 5 指示从哪儿开始

MySQL 支持简化版的 LIMIT 4 OFFSET 3 语句,即 LIMIT 3,4
逗号前的数字对应 OFFSET;逗号后的数字对应 LIMIT

1、第一个被检索的行是第0行,而不是第1行;即索引从0开始

2、LIMIT 1,1 将检索出第二行而不是第一行

3、LIMIT 中指定要检索的行数为检索的最大行数,如果没有足够的行( 例如,给出 LIMIT 10, 5 ,但是只有 13 行 ),MySQL 将只返回它能够返回的那么多行

使用完全限定的表名

迄今为止使用的 SQL 例子只通过列名引用列,也可以使用完全限定的名字来引用列(同时使用表名和列名

SELECT products.prod_name FROM products;

图图1

表名也可以是完全限定的

mysql> SELECT products.prod_name
    -> FROM crashcourse.products;

只要 products 表确实位于 crashcourse 数据库中,那么上述两个 SQL 语句作用是一样的

tutu 2

使用注释

SQL 语句是由 DBMS 处理的指令,如果向其中加入不执行的解释文本,可以使用 -- 或者 #

-- 之后的文本就是注释
# 需要在一行的开始使用,这一整行都将变成注释

突

也可以进行多行注释,注释可以在脚本的任何位置停止和开始,使用 /* */
注释从 /* 开始,到 */ 结束,/**/ 之间的任何内容都是注释

tu8

参考内容

SQL 必知必会(第四版)
MySQL 必知必会

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值