1.《SQL必知必会》--(更新中...)
Posted mario-mj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.《SQL必知必会》--(更新中...)相关的知识,希望对你有一定的参考价值。
目录
第二课:检索数据
1.检索单个列
select prod_name from Products;
2.检索多个列
select prod_id,prod_name,prod_price from Products;
3.检索所有列
select * from Products;
4.检索不同的值(distinct:去重)
select distinct prod_name from Products;
- 注意:distinct关键字作用于所有列
5.限制结果(mysql:limit)
select prod_name from Products
limit 5 offset 4;
- 或者
select prod_name from Products
limit 4,5;
- 从第4+1行开始,检索不超过5行(起始位置为0,所以4为第五行)
6.使用注释
select prod_id,prod_name,prod_price from Products; -- 这是一条注释
- 注释类型
- 单行注释
- “-- ”
- “ # ”
- 多行注释
- “/* ----------这是注释内容,可以多行 ---------- */” 引号中的为注释两端,内容在里面,可以多行
- 单行注释
第三课 排序检索数据(order by语句)
1.排序数据(单个列)
- 采用 order by子句(应出现在select语句中的最后一句,不然会报错)
select prod_name from Products
order by prod_name;
2.按多个列排序
- 要按多个列排序,简单指定列明,列明之间用逗号分开即可(就像选择多个列一样)
select prod_id,prod_name,prod_price from Products
order by prod_price,prod_name;
- 检索三个列,其中按价格先排序,随后按名称排序
3.按列位置排序
- 效果同2.指定select的列位置
select prod_id,prod_name,prod_price from Products
order by 2,3;
- 优点:简单,高效
- 缺点:1.不指定列明容易篡改,或选择错误;2.如果需要排序的列不在select中,不能使用
- 可以混用2和3
4.指定排序方向
- 升序(默认)降序(DESC)
- 例如:升序
select prod_id,prod_name,prod_price from Products
order by prod_price,prod_name;
- 降序,升序
select prod_id,prod_name,prod_price from Products
order by prod_price desc,prod_name;
- 降序,降序
select prod_id,prod_name,prod_price from Products
order by prod_price desc,prod_name desc;
- desc 关键字直接应用于其前面的列名,想在多个列上降序,必须对每一个列名进行指定desc (descending的缩写,两个都可以使用)
- asc 升序(ascending 的缩写,但一般不用,直接默认就是升序)
第四课 过滤数据(where语句)
1.使用where子句
select prod_id,prod_name,prod_price from Products
where prod_price = 3.49;
- 注意:order by 在where之后
2.where子句操作符
= (等于)
<> (不等于)
!= (不等于)
< (小于)
<= (小于等于)
!< (不小于)
> (大于)
>= (大于等于)
!> (不大于)
BETWEEN (在指定两个值之间)
IS NULL (为null值)
2.1 检查单个值
select prod_id,prod_name,prod_price from Products
where prod_price < 10;
2.2 不匹配检查
select prod_id,prod_name,prod_price from Products
where vend_id <> 'DLL01';
- 当值为字符串的时候,应该用引号将其括起来
- 注意<>和!=通常可以互换,但是有的不可以 比如access
2.3 范围值检查
select prod_id,prod_name,prod_price from Products
where prod_price between 5 and 10;
- 给定两个值
2.4空值检查
select prod_id,prod_name,prod_price from Products
where prod_price IS NULL;
第五课 高级数据过滤(where 高阶操作)
1.组合where子句(and / or)
1.1 AND操作符(且,条件都要具备)
select prod_id,prod_name,prod_price from Products
where prod_price < 10 and prod_price > 5;
- 每个条件中都要加and
1.2 OR 操作符(或,条件其中某一个符合都可以)
select prod_id,prod_name,prod_price from Products
where prod_price = 10 or prod_price = 5;
1.3 求值顺序
- where子句可以包含任意数目的AND和OR操作符,允许两者进行复杂高级的过滤
- where 先执行and语句,后执行or语句,如果怕有歧义,需用小括号进行指定顺序
select prod_id,prod_name,prod_price from Products
where prod_price > 10 or prod_price < 5 and vend_id = 'DDL01';
- 应该为
select prod_id,prod_name,prod_price from Products
where (prod_price > 10 or prod_price < 5)
and vend_id = ' DDL01 ';
2.IN操作符(指定条件范围)
select prod_id,prod_name,prod_price from Products
where prod_price in (5,10,20);
- IN操作符完成了与OR操作符相同的功能,但有更多的优点:
- 在有很多合法选项时,IN操作符的语法更清楚,更直观
- 在与其他and 和 or 操作符组合使用IN时,求值顺序更容易管理
- IN操作符一般比OR执行得更快
- IN的最大的优点是可以包含其他SELECT语句,能够更动态地建立where子句
3.NOT操作符
- NOT只有一个功能,就是否定其后所跟的任何条件!
- NOT从不单独使用,与其他操作符一起使用
- NOT where子句中用来否定其后条件的关键字
select prod_id,prod_name,prod_price from Products
where NOT vend_id = 'DLL01';
- 同下面代码
select prod_id,prod_name,prod_price from Products
where vend_id <> 'DLL01';
- 为什么使用NOT?
-简单的子句没什么优势,但是更复杂的子句,NOT是非常有用的,例如在与IN操作符联合使用时,NOT可以非常简单的找出与条件列表不匹配的行.
以上是关于1.《SQL必知必会》--(更新中...)的主要内容,如果未能解决你的问题,请参考以下文章