MYSQL必知必会笔记:第四章检索数据

4.1SELECT语句

为了使用select语句必须至少给出两条信息—想选择什么,以及从什么地方选择

检索单个列

格式:

SELECT 想选择什么
FROM 从什么地方选择;

输入:

SELECT bookname 
from BookInfo;

输出

+-----------------------+
| bookname              |
+-----------------------+
| 电脑乐园              |
| Java2核心技术         |
| 计算机应用基础        |
| 大学语文教程          |
| 谁动了我的奶酪        |
| 倾城之恋              |
| 盗墓笔记              |
| 韩寒作品集            |
| 沉睡之城111           |
| 爱丽丝漫游奇境        |
+-----------------------+
10 rows in set (0.00 sec)

分析:

上述语句使用SELECT语句从BookInfo表中检索一个名为bookname的列,将表中指定列全部返回。

关于 ;符号

结束SQL语句就是;,多条SQL语句必须以分号;分割。

关于大小写

SQL语句不区分大小写,SELECT=select=Select

规范:对SQL关键字使用大写,对列和表名使用小写。

检索多列

上述只是检索了bookname一列下面展示检索多列

想从一个表中检索多列,使用相同的SELECT语句。唯一不同的是必须在SELECT关键字后给出多个需要检索的列名,列名直接必须一逗号分割,最后一列不可以添加逗号。

格式:

SELECT 想选择1,想选择2,想选择3
FROM 从什么地方选择;

输入:

SELECT bookname,bookid,author
from BookInfo;

输出

+-----------------------+-----------+------------------+
| bookname              | bookid    | author           |
+-----------------------+-----------+------------------+
| 电脑乐园              | 1008-2352 | 谭宇             |
| Java2核心技术         | 7111-1790 | Gray Comel       |
| 计算机应用基础        | 7305-0458 | 黄强             |
| 大学语文教程          | 7564-1018 | 董自厚           |
| 谁动了我的奶酪        | 7800-7336 | 斯宾塞.约翰      |
| 倾城之恋              | 7800-8287 | 莫然             |
| 盗墓笔记              | 9787-5057 | 南派三叔         |
| 韩寒作品集            | 9787-5378 | 韩寒             |
| 沉睡之城111           | 9787-5613 | 蔡骏             |
| 爱丽丝漫游奇境        | 9787-8020 | 卡罗尔           |
+-----------------------+-----------+------------------+
10 rows in set (0.00 sec)

检索所有的列

除了指定列之外,SELECT语句还可以通过通配符星号*来检索所有列

格式:

SELECT *
FROM 从什么地方选择;

输入:

SELECT *
from BookInfo;

输出

+-----------+-----------------------+------------------+-----------------------------+--------------+-------+------------+-------+
| bookid    | bookname              | author           | press                       | booklocation | price | booktypeid | total |
+-----------+-----------------------+------------------+-----------------------------+--------------+-------+------------+-------+
| 1008-2352 | 电脑乐园              | 谭宇             | 广西电脑乐园杂志社          | TP3/K29      |    52 | T          |    30 |
| 7111-1790 | Java2核心技术         | Gray Comel       | 机械工业出版社              | TP312/233    |    68 | T          |     5 |
| 7305-0458 | 计算机应用基础        | 黄强             | 南京大学出版社              | TP3/913      |  27.4 | T          |    15 |
| 7564-1018 | 大学语文教程          | 董自厚           | 东南大学出版社              | H1/56        |    34 | H          |    20 |
| 7800-7336 | 谁动了我的奶酪        | 斯宾塞.约翰      | 中信出版社                  | B825/49      |  23.5 | B          |    10 |
| 7800-8287 | 倾城之恋              | 莫然             | 华凌出版社                  | I247/566     |  30.5 | I          |    20 |
| 9787-5057 | 盗墓笔记              | 南派三叔         | 中国友谊出版公司            | I247/468     |    28 | I          |    20 |
| 9787-5378 | 韩寒作品集            | 韩寒             | 北岳文艺出版社              | I217/257     |    36 | I          |    40 |
| 9787-5613 | 沉睡之城111           | 蔡骏             | 陕西师范大学出版社          | I247/66      |    25 | I          |    10 |
| 9787-8020 | 爱丽丝漫游奇境        | 卡罗尔           | 光明日报出版社              | I561/18      |  26.3 | I          |    12 |
+-----------+-----------------------+------------------+-----------------------------+--------------+-------+------------+-------+
10 rows in set (0.00 sec)

如果给定一个通配符*号,则返回表中所有列,列的顺序是列在表中定义的顺序

关于使用通配符

一般最好不要使用通配符*号,虽然使用通配符可能会使自己省事省力,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。

检索去重distinct关键字

一般SELECT会返回所有匹配的行,但是,如果你不想要每个值每次都出现这时候需要用到distance。

如:

mysql> select press 
			from BookInfo;
+-----------------------------+
| press                       |
+-----------------------------+
| 广西电脑乐园杂志社          |
| 机械工业出版社              |
| 南京大学出版社              |
| 东南大学出版社              |
| 南京大学出版社              |
| 南京大学出版社              |
| 南京大学出版社              |
| 南京大学出版社              |
| 南京大学出版社              |
| 南京大学出版社              |
+-----------------------------+
10 rows in set (0.00 sec)

select语句返回10行,其中大量重复,使用distance解决。

输入:

 SELECT DISTINCT  press 
 from BookInfo;

输出

+-----------------------------+
| press                       |
+-----------------------------+
| 广西电脑乐园杂志社          |
| 机械工业出版社              |
| 南京大学出版社              |
| 东南大学出版社              |
+-----------------------------+
4 rows in set (0.00 sec)

分析 SELECT DISTINCT press 告诉mysql之封你号不同的press行,因此只返回4行,如果使用distanct语句, 必须放在列名的最前面,一旦使用distinct则应用的是所有的列。

限制结果Limit关键字

select语句返回所有匹配的行,他们可能是表中的每个行,为了只返回前几行数据,可使用limit字句。

输入:

select press 
from BookInfo 
LIMIT 5;

输出

+-----------------------------+
| press                       |
+-----------------------------+
| 广西电脑乐园杂志社          |
| 机械工业出版社              |
| 南京大学出版社              |
| 东南大学出版社              |
| 南京大学出版社              |
+-----------------------------+
5 rows in set (0.00 sec)

分析:

使用LIMIT 5 指示MySQL返回不多于5行

为了得到下一个5行,可指定要检索的开始行与行数

输入:

select press 
from BookInfo 
LIMIT 5,5;

输出

+-----------------------+
| press                 |
+-----------------------+
| 南京大学出版社        |
| 南京大学出版社        |
| 南京大学出版社        |
| 南京大学出版社        |
| 南京大学出版社        |
+-----------------------+
5 rows in set (0.00 sec)

分析:

LIMIT 5,5返回从第五行开始的5行。第一个数字为开始位置,第二个为要检索的行数

关于行0

检索出来的第一行为行0即下标从0开始计算,因此,LIMIT 1,1 将检索出第二行而不是第一行。

限定表名

如果,列prod_name在表products中,则可以

输入:

SELECT products.prod_name
FROM  products;

如果,列prod_name在表products中,且表products在crashcourse数据库中则可以

输入:

SELECT products.prod_name
FROM  crashcourse.products;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tree_Root.

大佬给点饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值