1、SELECT语句:使用SELECT检索数据,必须至少给出两条信息-想选择什么,以及从什么地方选择。
注:关键字(keyword):作为SQL组成部分的保留字,关键字不能用作表或者列的名字。
输入: ------------------ SELECT prod_nameFROM 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_nameFROM Products;写法2:SELECT prod_name FROM Products;写法3:SELECTprod_name FROM Products;
3、同时检索多个列
从同一个表中同时检索多个列,使用SELECT 加多个关键字,每个关键字用逗号分开。
输入:------------------------select prod_name, prod_id, prod_pricefrom products;输出: --------------------------------------------------pro_name prod_id prod_priceFish bean bag toy BNBG01 3.49Bird bean bag toy BNBG02 3.49Rabbit bean bag toy BNBG03 3.498 inch teddy bear BR01 5.9912 inch teddy bear BR02 8.9918 inch teddy bear BR03 11.99Raggedy Ann RGAN01 4.99King doll RYL01 9.49Queen doll RYL02 9.49
3、检索所有列
SELECT * :星号(*)是通配符(一般最好别用,降低检索和应用户程序的性能)
输入------------------select *from products;输出---------------------prod_id vend_id prod_name prod_price prod_descBNBG01 DLL01 Fish bean bag toy 3.49 Fish bean bag toy, complete with bean bag worms with which to feed itBNBG02 DLL01 Bird bean bag toy 3.49 Bird bean bag toy, eggs are not includedBNBG03 DLL01 Rabbit bean bag toy 3.49 Rabbit bean bag toy, comes with bean bag carrotsBR01 BRS01 8 inch teddy bear 5.99 8 inch teddy bear, comes with cap and jacketBR02 BRS01 12 inch teddy bear 8.99 12 inch teddy bear, comes with cap and jacketBR03 BRS01 18 inch teddy bear 11.99 18 inch teddy bear, comes with cap and jacketRGAN01 DLL01 Raggedy Ann 4.99 18 inch Raggedy Ann dollRYL01 FNG01 King doll 9.49 12 inch king doll with royal garments and crownRYL02 FNG01 Queen doll 9.49 12 inch queen doll with royal garments and crown
4、检索不同的值
检索products表中的所有产品供应商的ID
select vend_idfrom products;输出---------------DLL01DLL01DLL01BRS01BRS01BRS01DLL01FNG01FNG01
分析:输出有9行,但只有三个不同的值,使用DISTINCT关键字检索不同的值,且必须直接放在列名前面。DISTINCT作用于后跟的所有列,不仅仅是第一列。
select distinct vend_idfrom products;输出:-----------------DLL01BRS01FNG01
DISTINCT作用于后跟的所有列,不仅仅是第一列。 -------------- select distinct vend_id, prod_pricefrom products;输出:-----------------DLL01 3.49BRS01 5.99BRS01 8.99BRS01 11.99DLL01 4.99FNG01 9.49
5、限制结果
SQL没有这个功能,但MYSQL有LIMIT和OFFSET语法
LIMIT 数字:最多返回多少行。
LIMIT 数字 OFFSET 数字:从第几行开始最多返回多少行,简写:limit 2,3 表示limit 3 offset 2,OFFSET是从0开始,1是指第2行。
select prod_namefrom productslimit 5;输出----------------Fish bean bag toyBird bean bag toyRabbit bean bag toy8 inch teddy bear12 inch teddy bear
select prod_namefrom productslimit 5 offset 5;输出-----------------18 inch teddy bearRaggedy AnnKing dollQueen doll
6、三种注释
方式一:--行内注释
方式二:#行内注释
方式三:/**/块注释
7、排序检索数据
语法:子句(clause):SQL语句由子构成,有些子句是必须的,有些是可选的,一个子句通常是一个关键字加上所提供的数据组成。
#输入select prod_namefrom products;/*输出:prod_name--------------------Fish bean bag toyBird bean bag toyRabbit bean bag toy8 inch teddy bear12 inch teddy bear18 inch teddy bearRaggedy AnnKing dollQueen doll*/
#输入select prod_namefrom productsorder by prod_name;/*输出:prod_name-------------------12 inch teddy bear18 inch teddy bear8 inch teddy bearBird bean bag toyFish bean bag toyKing dollQueen dollRabbit bean bag toyRaggedy Ann*/
order by 子句可以对输出进行排序,指定order by子句,应该保证它是select语句中最后一条子句,否则会出现错误信息。
7.1、按多个列排序
要按多个列排序。简单指定列名,列名之间用逗号分开(同选择多列一样)。先对prod_price排序,如果有相同的prod_price,再对prod_name排序。
select prod_id, prod_price, prod_namefrom productsorder by prod_price, prod_name;/*prod_id, prod_price, prod_nameBNBG02 3.49 Bird bean bag toyBNBG01 3.49 Fish bean bag toyBNBG03 3.49 Rabbit bean bag toyRGAN01 4.99 Raggedy AnnBR01 5.99 8 inch teddy bearBR02 8.99 12 inch teddy bearRYL01 9.49 King dollRYL02 9.49 Queen dollBR03 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_namefrom productsorder by 2,3/*prod_id, prod_price, prod_nameBNBG02 3.49 Bird bean bag toyBNBG01 3.49 Fish bean bag toyBNBG03 3.49 Rabbit bean bag toyRGAN01 4.99 Raggedy AnnBR01 5.99 8 inch teddy bearBR02 8.99 12 inch teddy bearRYL01 9.49 King dollRYL02 9.49 Queen dollBR03 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_namefrom productsorder by prod_price desc;/*输出降序prod_id, prod_price, prod_nameBR03 11.99 18 inch teddy bearRYL01 9.49 King dollRYL02 9.49 Queen dollBR02 8.99 12 inch teddy bearBR01 5.99 8 inch teddy bearRGAN01 4.99 Raggedy AnnBNBG01 3.49 Fish bean bag toyBNBG02 3.49 Bird bean bag toyBNBG03 3.49 Rabbit bean bag toy*/
select prod_id, prod_price, prod_namefrom productsorder by prod_price desc, prod_name;/*prod_id, prod_price, prod_nameBR03 11.99 18 inch teddy bearRYL01 9.49 King dollRYL02 9.49 Queen dollBR02 8.99 12 inch teddy bearBR01 5.99 8 inch teddy bearRGAN01 4.99 Raggedy AnnBNBG02 3.49 Bird bean bag toyBNBG01 3.49 Fish bean bag toyBNBG03 3.49 Rabbit bean bag toy*/
select prod_id, prod_price, prod_namefrom productsorder by prod_price desc, prod_name desc;/*prod_id, prod_price, prod_nameBR03 11.99 18 inch teddy bearRYL02 9.49 Queen dollRYL01 9.49 King dollBR02 8.99 12 inch teddy bearBR01 5.99 8 inch teddy bearRGAN01 4.99 Raggedy AnnBNBG03 3.49 Rabbit bean bag toyBNBG01 3.49 Fish bean bag toyBNBG02 3.49 Bird bean bag toy*/