Day-2:检索数据

1、SELECT语句:使用SELECT检索数据,必须至少给出两条信息-想选择什么,以及从什么地方选择。

  注:关键字(keyword):作为SQL组成部分的保留字,关键字不能用作表或者列的名字。

输入:
------------------
SELECT
prod_name FROM Products;

输出:

prod_name

----------------------

Fish bean bag toy

Bird bean bag toy

Rabbit bean bag toy

8 inch teddy bear

12 inch teddy bear

18 inch teddy bear

Raggedy Ann

King doll

Queen doll

     注:样表数据使用的是SQL必知必会的数据

2、SQL语法

  SQL语句以(;)结尾,不是必须但最好这样做。

  SQL语句不区分大小写,但一般对SQL关键字大写,对列名和表名小写(有些特殊的DBMS系统会区分),这样写容易区分和调试。

  SQL语句空格会被忽略,以下三种写法等价,但将SQL语句分成多行更容易阅读和调试。

写法1:
SELECT prod_name
FROM Products;

写法2:
SELECT prod_name FROM Products;

写法3:
SELECT
prod_name 
FROM 
Products;

3、同时检索多个列

  从同一个表中同时检索多个列,使用SELECT 加多个关键字,每个关键字用逗号分开。

输入:
------------------------
select prod_name, prod_id, prod_price
from products;

输出:
-------------------------------------------------- pro_name prod_id prod_price Fish bean bag toy BNBG01
3.49 Bird bean bag toy BNBG02 3.49 Rabbit bean bag toy BNBG03 3.49 8 inch teddy bear BR01 5.99 12 inch teddy bear BR02 8.99 18 inch teddy bear BR03 11.99 Raggedy Ann RGAN01 4.99 King doll RYL01 9.49 Queen doll RYL02 9.49

3、检索所有列 

  SELECT * :星号(*)是通配符(一般最好别用,降低检索和应用户程序的性能) 

输入
------------------
select *
from products;

输出
---------------------
prod_id   vend_id  prod_name              prod_price   prod_desc
BNBG01    DLL01    Fish bean bag toy      3.49         Fish bean bag toy, complete with bean bag worms with which to feed it
BNBG02    DLL01    Bird bean bag toy      3.49         Bird bean bag toy, eggs are not included
BNBG03    DLL01    Rabbit bean bag toy    3.49         Rabbit bean bag toy, comes with bean bag carrots
BR01      BRS01    8 inch teddy bear      5.99         8 inch teddy bear, comes with cap and jacket
BR02      BRS01    12 inch teddy bear     8.99         12 inch teddy bear, comes with cap and jacket
BR03      BRS01    18 inch teddy bear     11.99        18 inch teddy bear, comes with cap and jacket
RGAN01    DLL01    Raggedy Ann            4.99         18 inch Raggedy Ann doll
RYL01     FNG01    King doll              9.49         12 inch king doll with royal garments and crown
RYL02     FNG01    Queen doll             9.49         12 inch queen doll with royal garments and crown
                

4、检索不同的值

检索products表中的所有产品供应商的ID

select vend_id
from products;

输出
---------------
DLL01
DLL01
DLL01
BRS01
BRS01
BRS01
DLL01
FNG01
FNG01

分析:输出有9行,但只有三个不同的值,使用DISTINCT关键字检索不同的值,且必须直接放在列名前面。DISTINCT作用于后跟的所有列,不仅仅是第一列。

select distinct vend_id
from products;

输出:
-----------------
DLL01
BRS01
FNG01
DISTINCT作用于后跟的所有列,不仅仅是第一列。
--------------
select
distinct vend_id, prod_price from products; 输出:----------------- DLL01 3.49 BRS01 5.99 BRS01 8.99 BRS01 11.99 DLL01 4.99 FNG01 9.49

 5、限制结果

  SQL没有这个功能,但MYSQL有LIMIT和OFFSET语法

  LIMIT 数字:最多返回多少行。

  LIMIT 数字 OFFSET 数字:从第几行开始最多返回多少行,简写:limit 2,3 表示limit 3 offset 2,OFFSET是从0开始,1是指第2行。

select prod_name
from products
limit 5;


输出
----------------
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
8 inch teddy bear
12 inch teddy bear
select prod_name
from products
limit 5 offset 5;

输出
-----------------
18 inch teddy bear
Raggedy Ann
King doll
Queen doll

6、三种注释

  方式一:--行内注释

  方式二:#行内注释

  方式三:/**/块注释 

7、排序检索数据

  语法:子句(clause):SQL语句由子构成,有些子句是必须的,有些是可选的,一个子句通常是一个关键字加上所提供的数据组成。

#输入
select prod_name
from products;

/*输出:
prod_name
--------------------
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
8 inch teddy bear
12 inch teddy bear
18 inch teddy bear
Raggedy Ann
King doll
Queen doll
*/
#输入
select prod_name
from products
order by prod_name;

/*
输出:
prod_name
-------------------
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
Bird bean bag toy
Fish bean bag toy
King doll
Queen doll
Rabbit bean bag toy
Raggedy Ann
*/

order by 子句可以对输出进行排序,指定order by子句,应该保证它是select语句中最后一条子句,否则会出现错误信息。

7.1、按多个列排序

要按多个列排序。简单指定列名,列名之间用逗号分开(同选择多列一样)。先对prod_price排序,如果有相同的prod_price,再对prod_name排序。

select prod_id, prod_price, prod_name
from products
order by prod_price, prod_name;

/*
prod_id, prod_price, prod_name
BNBG02    3.49    Bird bean bag toy
BNBG01    3.49    Fish bean bag toy
BNBG03    3.49    Rabbit bean bag toy
RGAN01    4.99    Raggedy Ann
BR01    5.99    8 inch teddy bear
BR02    8.99    12 inch teddy bear
RYL01    9.49    King doll
RYL02    9.49    Queen doll
BR03    11.99    18 inch teddy bear

*/

7.2按列位置排序(相对位置),order by 2:表示按select清单中第二个列prod_price排序,order by 2,3表示先按prod_price,再按prod_name排序。

select prod_id, prod_price, prod_name
from products
order by 2,3

/*
prod_id, prod_price, prod_name
BNBG02    3.49    Bird bean bag toy
BNBG01    3.49    Fish bean bag toy
BNBG03    3.49    Rabbit bean bag toy
RGAN01    4.99    Raggedy Ann
BR01    5.99    8 inch teddy bear
BR02    8.99    12 inch teddy bear
RYL01    9.49    King doll
RYL02    9.49    Queen doll
BR03    11.99    18 inch teddy bear

*/

7.3指定排序方向

可做升序(默认ASC关键字)或者降序排序,指定DESC(降序)关键字。

DESC关键字只应用到直接位于其前面的列名,order by prod_price DESC, prod_name,prod_price有作用,prod_name无作用。

如果想在多个列上进行降序排序,则必须对每一个列指定DESC关键字。

select prod_id, prod_price, prod_name
from products
order by prod_price desc;

/*输出降序
prod_id,  prod_price,    prod_name
BR03       11.99         18 inch teddy bear
RYL01      9.49          King doll
RYL02      9.49          Queen doll
BR02       8.99          12 inch teddy bear
BR01       5.99          8 inch teddy bear
RGAN01     4.99          Raggedy Ann
BNBG01     3.49          Fish bean bag toy
BNBG02     3.49          Bird bean bag toy
BNBG03     3.49          Rabbit bean bag toy
*/
select prod_id, prod_price, prod_name
from products
order by prod_price desc, prod_name;

/*
prod_id, prod_price, prod_name
BR03    11.99    18 inch teddy bear
RYL01    9.49    King doll
RYL02    9.49    Queen doll
BR02    8.99    12 inch teddy bear
BR01    5.99    8 inch teddy bear
RGAN01    4.99    Raggedy Ann
BNBG02    3.49    Bird bean bag toy
BNBG01    3.49    Fish bean bag toy
BNBG03    3.49    Rabbit bean bag toy
*/
select prod_id, prod_price, prod_name
from products
order by prod_price desc, prod_name desc;

/*
prod_id, prod_price, prod_name
BR03    11.99    18 inch teddy bear
RYL02    9.49    Queen doll
RYL01    9.49    King doll
BR02    8.99    12 inch teddy bear
BR01    5.99    8 inch teddy bear
RGAN01    4.99    Raggedy Ann
BNBG03    3.49    Rabbit bean bag toy
BNBG01    3.49    Fish bean bag toy
BNBG02    3.49    Bird bean bag toy
*/

 

posted @ 2017-03-15 16:11  起航追梦人  阅读(183)  评论(0编辑  收藏  举报