1.简单检索
1.1 检索多列
- 检索指定的多个列
select prod_id, prod_name, prod_price from dx_products;
检索出来的结果如下:
prod_id | prod_name | prod_price |
---|---|---|
BNBG01 | Fish | 3.49 |
BNBG02 | Fish | 3.49 |
BNBG03 | Rabbit | 3.49 |
BR01 | 8 inch teddy bear | 5.99 |
BR02 | 12 inch teddy bear | 8.99 |
BR03 | 18 inch teddy bear | 11.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_id | prod_price |
---|---|
DLL01 | 3.49 |
DLL01 | 3.49 |
DLL01 | 3.49 |
BRS01 | 5.99 |
BRS01 | 8.99 |
BRS01 | 11.99 |
DLL01 | 4.99 |
FNG01 | 9.49 |
FNG01 | 9.49 |
加distinct的情况
select distinct vend_id, prod_price from dx_products;
检索出来的结果如下,这是没有加distinct的情况,此时distinct是作用在vend_id和 prod_price两列上
vend_id | prod_price |
---|---|
DLL01 | 3.49 |
BRS01 | 5.99 |
BRS01 | 8.99 |
BRS01 | 11.99 |
DLL01 | 4.99 |
FNG01 | 9.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_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 |
单列的降序排序
- 按照prod_price的降序排序,用order by prod_price desc
select prod_id, prod_price, prod_name from dx_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 |
BNBG02 | 3.49 | Bird bean bag toy |
BNBG01 | 3.49 | Fish bean bag toy |
BNBG03 | 3.49 | Rabbit 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_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 |
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_id | prod_price | prod_name |
---|---|---|
BR01 | 5.99 | 8 inch teddy bear |
BR02 | 8.99 | 12 inch teddy bear |
BR03 | 11.99 | 18 inch teddy bear |
RGAN01 | 4.99 | Raggedy Ann |
RYL01 | 9.49 | King doll |
RYL02 | 9.49 | Queen doll |
3.2 过滤范围
- 过滤prod_price在5和10之间的
select prod_price, prod_name from dx_products
where prod_price between 5 and 10;
检索出的结果如下
prod_price | prod_name |
---|---|
5.99 | 8 inch teddy bear |
8.99 | 12 inch teddy bear |
9.49 | King doll |
9.49 | Queen doll |
3.3 空值检查
- 过滤得到cust_email不为null的结果
select cust_id, cust_email from dx_customers
where cust_email is not null;
检索出的结果如下
cust_id | cust_email |
---|---|
100001 | abc@toys.com |
100003 | efg@fun.com |
100004 | hij@fun.com |
- 过滤得到cust_email为空的结果
select cust_id, cust_email from dx_customers
where cust_email is null;
cust_id | cust_email |
---|---|
100002 | |
100005 |