本篇博客是对《SQL必知必会》第五版书籍的总结
对于文章的出现的表名称,列名请参考书籍《SQL必知必会》及上一篇博客
sql必知必会(第五版)学习总结(一)--mysql预备知识汇总
目录
1:检索数据
1.1检索某个列
select prod_name from Products;
使用select语句进行检索,使用from关键字指定数据库。
1.2检索多个列
select prod_name , prod_id , prod_price from Products;
各表名之间使用逗号分开
1.3检索所有列
select * from Products;
使用通配符返回表中的所有列
1.4 distinct关键字
select distinct vend_id
from Products;
使用distinct关键字指示数据库只返回不同的值。注意,使用distinct关键字,它必须直接放在列的前面。
另外distinct关键字作用于所有的列,不仅仅是跟在其后的列。(自己理解:先得到select的结果,再从结果中除去重复的)
注意:distinct关键字只能放在所有字段前面,不能在某个字段之后。
1.5 limit关键字
select语句返回指定表中所有匹配的行,如果只想返回第一行或者一定数量的行,就需要使用limit子句。
select prod_name
from Products
limit 5;
如果为了得到后面5行数据,需要指定检索的行数和从哪个位置开始检索。
limit 5 offset 3
其中5指的是检索的行数,3指的是从哪儿开始。
1.6 order by子句(desc)
为了明确地排序用select检索出来的数据,可以使用order by子句,order by子句取一个或者多个列的名字,据此对输出进行排序。
select prod_name
from Products
order by prod_name;
【注意1】:order by 子句的位置,指定一条order by 子句时,应该保证它是select语句的最后一条子句,如果不是最后的子句,将会出错
【注意2】:经常需要按不止一个列进行数据排序,要按多个列排序,只需指定这些列名。列名之间使用逗号隔开,也就是说只需要写一个order by。
select prod_id, prod_price, prod_name
from Products
order by prod_price , prod_name;
【注意3】:order by除了按照列名排序,还支持按相对位置排序
order by 2,3
【注意4:】数据排序不限于升序排序,这只是默认的排序顺序,还可以指定desc关键字进行降序排序
desc:desc关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序,必须对每一个列指定desc关键字
order by prod_price desc , prod_name;
2:高级数据过滤
2.1where 子句
(1)数据根据where子句中指定的搜索条件进行过滤,where子句在表名(from子句)之后给出
(2)在同时使用order by 和where子句时,应该让order by 位于where之后。
(3)where子句的操作符有:between,is null , > , < 等
select vend_id , prod_name
from Products
where vend_id <> 'DLL01';
【注意】:单引号来限定字符串,如果将数值与字符串类型的列进行比较,就需要限定引号,
用来与数值列进行比较就不需要引号。
2.2 between
使用between时,必须指定两个值,所需范围的低端值和高端值,这两个值必须使用and关键字分隔。
between匹配范围中的所有值,包括指定的开始值和结束值。
select prod_name , prod_price
from Products
where prod_price between 5 and 10;
2.3 is null
检查是否具有null的列
select prod_name
from Products
where prod_price is null;
2.4 or / and
(1)为了进行更强的过滤控制,sql允许给出多个where子句,这些where子句有两种使用方式,即以and子句或者or子句方式使用
(2)像大多数语言一样,在处理or操作符前,会优先处理and操作符,若想改变优先级,则可使用圆括号对操作符进行明确分组。
select prod_id , prod_price , prod_name
from Products
where vend_id = 'DLL01' or vend_id = 'BRS01';
2.5 in / not
1) in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in取一组由逗号分隔,括在圆括号中的合法值。
<