SQL必知必会_学习笔记2

1.简单检索

1.1 检索多列

  • 检索指定的多个列
select prod_id, prod_name, prod_price from dx_products;

检索出来的结果如下:

prod_idprod_nameprod_price
BNBG01Fish3.49
BNBG02Fish3.49
BNBG03Rabbit3.49
BR018 inch teddy bear5.99
BR0212 inch teddy bear8.99
BR0318 inch teddy bear11.99
  • 检索全部列
select * from dx_products;

1.2 检索不同的值

检索不同的值,在列前面加distinct

select distinct vend_id from dx_products;

检索出来的结果如下:

vend_id
BRS01
DLL01
FNG01

distinct作用于所有的列,而不仅仅是跟在distinct后面的那一列
没有加distinct的情况

select vend_id, prod_price from dx_products;

检索出来的结果如下,这是没有加distinct的情况

vend_idprod_price
DLL013.49
DLL013.49
DLL013.49
BRS015.99
BRS018.99
BRS0111.99
DLL014.99
FNG019.49
FNG019.49

加distinct的情况

select distinct vend_id, prod_price from dx_products;

检索出来的结果如下,这是没有加distinct的情况,此时distinct是作用在vend_id和 prod_price两列上

vend_idprod_price
DLL013.49
BRS015.99
BRS018.99
BRS0111.99
DLL014.99
FNG019.49

1.3 限制个数

没有限制个数时

select prod_name from dx_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 dx_products limit 3;

检索出来的结果如下

prod_name
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
  • 第一个被检索的是0行,而不是1行,这里写的limit 3 相当于limit 3 offset 0

带偏移的,限制个数

select prod_name from dx_products limit 3 offset 4;

检索出来的结果如下,偏移量是4,也就是从第4行开始检索

prod_name
12 inch teddy bear
18 inch teddy bear
Raggedy Ann

2. 排序检索

如果检索时,没有排序,此时一般是按照添加进数据库的顺序输出的,但是关系型数据库理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义
不带排序的检索

select prod_name from dx_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

单列排序

  • 使用order by指定排序的字段,这里按照prod_name列的字典序进行排序
select prod_name from dx_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可以对多个列进行排序,这里先按照prod_price排序,只有在prod_price相同的时候,再按照prod_name排序
select prod_id, prod_price, prod_name from dx_products 
order by prod_price, prod_name;

检索出的结果如下

prod_idprod_priceprod_name
BNBG023.49Bird bean bag toy
BNBG013.49Fish bean bag toy
BNBG033.49Rabbit bean bag toy
RGAN014.99Raggedy Ann
BR015.998 inch teddy bear
BR028.9912 inch teddy bear
RYL019.49King doll
RYL029.49Queen doll
BR0311.9918 inch teddy bear

单列的降序排序

  • 按照prod_price的降序排序,用order by prod_price desc
select prod_id, prod_price, prod_name from dx_products 
order by prod_price DESC;

检索出的结果如下

prod_idprod_priceprod_name
BR0311.9918 inch teddy bear
RYL019.49King doll
RYL029.49Queen doll
BR028.9912 inch teddy bear
BR015.998 inch teddy bear
RGAN014.99Raggedy Ann
BNBG023.49Bird bean bag toy
BNBG013.49Fish bean bag toy
BNBG033.49Rabbit bean bag toy
  • 升序排序用ASC,但是其实不用指定ASC,因为如果不指定,默认就是升序

多列的降序排序

  • 多列的降序排序,prod_price和prod_name后面都需要有DESC,先按照prod_price降序排序,在prod_price相同的时候,再按照prod_name排序
select prod_id, prod_price, prod_name from dx_products 
order by prod_price DESC, prod_name DESC;

检索出的结果如下

prod_idprod_priceprod_name
BR0311.9918 inch teddy bear
RYL029.49Queen doll
RYL019.49King doll
BR028.9912 inch teddy bear
BR015.998 inch teddy bear
RGAN014.99Raggedy Ann
BNBG033.49Rabbit bean bag toy
BNBG013.49Fish bean bag toy
BNBG023.49Bird bean bag toy

3. 过滤检索

  • 过滤数据用where,where语句中的操作符有,等于=,不等于!=或者<>,大于等于>=,小于等于<=,在两个数之间BETWEEN,IS NULL 为空值,is not NULL不为空值

3.1 过滤不等于

  • 过滤了prod_price中不等于3.49的
select prod_id, prod_price, prod_name from dx_products 
where prod_price <> 3.49;

检索出的结果如下

prod_idprod_priceprod_name
BR015.998 inch teddy bear
BR028.9912 inch teddy bear
BR0311.9918 inch teddy bear
RGAN014.99Raggedy Ann
RYL019.49King doll
RYL029.49Queen doll

3.2 过滤范围

  • 过滤prod_price在5和10之间的
select prod_price, prod_name from dx_products 
where prod_price between 5 and 10;

检索出的结果如下

prod_priceprod_name
5.998 inch teddy bear
8.9912 inch teddy bear
9.49King doll
9.49Queen doll

3.3 空值检查

  • 过滤得到cust_email不为null的结果
select cust_id, cust_email from dx_customers 
where cust_email is not null;

检索出的结果如下

cust_idcust_email
100001abc@toys.com
100003efg@fun.com
100004hij@fun.com
  • 过滤得到cust_email为空的结果
select cust_id, cust_email from dx_customers 
where cust_email is null;
cust_idcust_email
100002
100005

4. 高级数据过滤(操作符和通配符)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值