MySQL检索数据和排序检索.md
来源:互联网 发布:淘宝宝贝图片怎么上传 编辑:程序博客网 时间:2024/05/16 23:47
- 第四章 检索数据
- 1 SELECT语句
- 2 检索单个列
- 3 检索多列
- 4 检索所有列
- 5 检索不同的行
- 6 限制条件
- 7 使用完全限定的表名
- 第五章 排序检索
- 1 排序数据
- 2 多列排序
- 3 指定排序方向
第四章 检索数据
SELECT
语句检索数据。
4.1 SELECT
语句
使用SELECT
需要表明想要检索的信息,以及要检索的地方。
4.2 检索单个列
使用SELECT
进行单列检索,
mysql> SELECT prod_name FROM products;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Detonator || Bird seed || Carrots || Fuses || JetPack 1000 || JetPack 2000 || Oil can || Safe || Sling || TNT (1 stick) || TNT (5 sticks) |+----------------+
分析,从上述语句中可以看出,
1. SELECT
语句从products表中检索prod_name列;
2. 同时,此检索是未排序数列;
3. 多条SQL语句以(;)结束;
4. SQL语句不区分大小写,但通常将SQL关键字使用大写,而对所有列和表名使用小写。
4.3 检索多列
使用SELECT
语句,其后跟随多个列名,并且以逗号分隔,最后一个列名后不添加逗号。
例如从products表中选择三列,
mysql> SELECT prod_id, prod_name, prod_price FROM products;+---------+----------------+------------+| prod_id | prod_name | prod_price |+---------+----------------+------------+| ANV01 | .5 ton anvil | 5.99 || ANV02 | 1 ton anvil | 9.99 || ANV03 | 2 ton anvil | 14.99 || DTNTR | Detonator | 13.00 || FB | Bird seed | 10.00 || FC | Carrots | 2.50 || FU1 | Fuses | 3.42 || JP1000 | JetPack 1000 | 35.00 || JP2000 | JetPack 2000 | 55.00 || OL1 | Oil can | 8.99 || SAFE | Safe | 50.00 || SLING | Sling | 4.49 || TNT1 | TNT (1 stick) | 2.50 || TNT2 | TNT (5 sticks) | 10.00 |+---------+----------------+------------+
4.4 检索所有列
除指定列外,SELECT
语句可以检索所有的列而不必逐一列出,使用通配符(*)。
mysql> SELECT * FROM products;+---------+---------+----------------+------------+----------------------------------------------------------------+| prod_id | vend_id | prod_name | prod_price | prod_desc |+---------+---------+----------------+------------+----------------------------------------------------------------+| ANV01 | 1001 | .5 ton anvil | 5.99 | .5 ton anvil, black, complete with handy hook || ANV02 | 1001 | 1 ton anvil | 9.99 | 1 ton anvil, black, complete with handy hook and carrying case || ANV03 | 1001 | 2 ton anvil | 14.99 | 2 ton anvil, black, complete with handy hook and carrying case || DTNTR | 1003 | Detonator | 13.00 | Detonator (plunger powered), fuses not included || FB | 1003 | Bird seed | 10.00 | Large bag (suitable for road runners) || FC | 1003 | Carrots | 2.50 | Carrots (rabbit hunting season only) || FU1 | 1002 | Fuses | 3.42 | 1 dozen, extra long || JP1000 | 1005 | JetPack 1000 | 35.00 | JetPack 1000, intended for single use || JP2000 | 1005 | JetPack 2000 | 55.00 | JetPack 2000, multi-use || OL1 | 1002 | Oil can | 8.99 | Oil can, red || SAFE | 1003 | Safe | 50.00 | Safe with combination lock || SLING | 1003 | Sling | 4.49 | Sling, one size fits all || TNT1 | 1003 | TNT (1 stick) | 2.50 | TNT, red, single stick || TNT2 | 1003 | TNT (5 sticks) | 10.00 | TNT, red, pack of 10 sticks |+---------+---------+----------------+------------+----------------------------------------------------------------+
- 注意,除非特殊要求,尽量避免使用通配符,因为会降低检索和应用程序的性能。
4.5 检索不同的行
SELECT
返回所有匹配的行,但是,如果不想每个值重复出现,需要使用DISTINCT
语句。对比如下
mysql> SELECT vend_id FROM products;+---------+| vend_id |+---------+| 1001 || 1001 || 1001 || 1002 || 1002 || 1003 || 1003 || 1003 || 1003 || 1003 || 1003 || 1003 || 1005 || 1005 |+---------+
mysql> SELECT DISTINCT vend_id FROM products;+---------+| vend_id |+---------+| 1001 || 1002 || 1003 || 1005 |+---------+
使用DISTINCT
会应用于所有列,而非是与它相邻的列。
4.6 限制条件
使用LIMIT
子句,来限制结果。例如,返回前5行
mysql> SELECT prod_name FROM products LIMIT 5;+--------------+| prod_name |+--------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Detonator || Bird seed |+--------------+
而,LIMIT 5, 5
为,从第5行开始的5行。
mysql> SELECT prod_name FROM products LIMIT 5,5;+--------------+| prod_name |+--------------+| Carrots || Fuses || JetPack 1000 || JetPack 2000 || Oil can |+--------------+
- 注意,行0. 检索出的第一行为行0,而不是行1.因此
LIMIT 1, 1
,检索出第二行。 - 注意,在行数不够是,使用空值,即最多可返回的行。
4.7 使用完全限定的表名
可以使用完全限定的表名,来引用列(同时使用表名和列名)。如下,限定列名和限定表名
mysql> SELECT products.prod_name FROM products;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Detonator || Bird seed || Carrots || Fuses || JetPack 1000 || JetPack 2000 || Oil can || Safe || Sling || TNT (1 stick) || TNT (5 sticks) |+----------------+
mysql> SELECT products.prod_name FROM superMakert.products;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Detonator || Bird seed || Carrots || Fuses || JetPack 1000 || JetPack 2000 || Oil can || Safe || Sling || TNT (1 stick) || TNT (5 sticks) |+----------------+
第五章 排序检索
ORDER BY
子句
5.1 排序数据
直接SELECT
检索出的数据没有进行排序。关系型数据库设计认为,不明确规定排序顺序,不应该假定检索出的数据顺序有意义。为明确排序,可以使用ORDER BY
子句。ORDER BY
子句可以同时取一个或多个列的名字,据此排序。如下,
mysql> SELECT prod_name FROM products ORDER BY prod_name;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Bird seed || Carrots || Detonator || Fuses || JetPack 1000 || JetPack 2000 || Oil can || Safe || Sling || TNT (1 stick) || TNT (5 sticks) |+----------------+
分析,通常ORDER BY
子句使用的列为将要显示的列,但完全可以使用未检索的列作为排序。
5.2 多列排序
为了按照多列排序,只要指定列名,列名之间用逗号隔开即可。例如,
mysql> SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;+---------+------------+----------------+| prod_id | prod_price | prod_name |+---------+------------+----------------+| FC | 2.50 | Carrots || TNT1 | 2.50 | TNT (1 stick) || FU1 | 3.42 | Fuses || SLING | 4.49 | Sling || ANV01 | 5.99 | .5 ton anvil || OL1 | 8.99 | Oil can || ANV02 | 9.99 | 1 ton anvil || FB | 10.00 | Bird seed || TNT2 | 10.00 | TNT (5 sticks) || DTNTR | 13.00 | Detonator || ANV03 | 14.99 | 2 ton anvil || JP1000 | 35.00 | JetPack 1000 || SAFE | 50.00 | Safe || JP2000 | 55.00 | JetPack 2000 |+---------+------------+----------------+
分析,仅在多行具有相同的prod_price值时,才会按照prod_name排序。
5.3 指定排序方向
指定排序方向,是用DESC
关键字。
mysql> SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;+---------+------------+----------------+| prod_id | prod_price | prod_name |+---------+------------+----------------+| JP2000 | 55.00 | JetPack 2000 || SAFE | 50.00 | Safe || JP1000 | 35.00 | JetPack 1000 || ANV03 | 14.99 | 2 ton anvil || DTNTR | 13.00 | Detonator || TNT2 | 10.00 | TNT (5 sticks) || FB | 10.00 | Bird seed || ANV02 | 9.99 | 1 ton anvil || OL1 | 8.99 | Oil can || ANV01 | 5.99 | .5 ton anvil || SLING | 4.49 | Sling || FU1 | 3.42 | Fuses || FC | 2.50 | Carrots || TNT1 | 2.50 | TNT (1 stick) |+---------+------------+----------------+
- 注意,如果在多个列是用降序排序,必须在每个列上都使用
DESC
关键字。
- MySQL检索数据和排序检索.md
- mysql---数据排序检索
- mysql必知必会 - 排序检索数据
- [MYSQL-5]排序检索数据
- MySQL排序检索数据----ORDER BY
- mysql必知必会--第二回 排序检索数据
- MySQL排序检索数据(ORDER BY)
- [Mysql必知必会系列]排序检索数据
- MySQL-排序检索
- 数据库---排序检索数据
- SQL 排序检索数据
- Mysql检索数据
- MYSQL数据检索总结
- mysql---基本数据检索
- mysql 检索数据
- MySQL SELECT检索数据
- [MYSQL-4] 检索数据
- mysql检索数据
- Mysql----时间处理
- android 小米手机播放短小音频无声音问题
- HDU
- copy-maven-plugin不兼容maven3.1及以上版本:java.lang.NoClassDefFoundError: Lorg/sonatype/aether/RepositorySys
- Java 创建连接池
- MySQL检索数据和排序检索.md
- C++面向对象程序设计
- Combination
- FPGA之verilog学习第一天(时分秒数字时钟)
- android toolbar 设置应用栏 [U01]
- 521. Longest Uncommon Subsequence I
- 关于bit位域和大小端的理解
- 操作系统学习笔记
- 常用DOS命令大全