mysql必知必会(二)

排序检索数据

​ 数据一般查询时是以它在底层中出现的顺序显示,这可以是最初添加到表中的数据的顺序,但如果数据后来进行过更新或删除,则这个顺序将会受到MYSQL重用回收存储空间的影响

#####子句

SQL语句由字句构成,有些字句是必需的,而有的是可选的,一个字句通常由一个关键字和所提供的的数据组成。例如select语句的from字句;

为了明确地排序用select语句检索出的数据,可使用order by 字句,order by 字句取一个或多个列的名字,据此输出进行排序,

按单列排序

select * from goods order by shop_price

mysql必知必会(二)_第1张图片
按多列排序

select * from goods order by cat_id,shop_price

mysql必知必会(二)_第2张图片

order by默认排序顺序是升序排序,使用desc 关键字可以做降序排序

select * from goods order by shop_price desc

对多列排序,其中一列做降序排序(desc关键字只应用到直接位于其前面的列名)

select * from goods order by cat_id,shop_price desc

mysql必知必会(二)_第3张图片

使用order by和limit的组合,能够找出一个列中最高或最低值(limit关键字必须位于order by 关键字后 面)

如:找到商品价格最高值

select * from goods order by shop_price desc limit 1

mysql必知必会(二)_第4张图片

过滤数据

​ 数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要制定搜索条件,搜索条件也称为过滤条件。

在select语句中,数据根据where子句中指定的搜索条件过滤(where子句在order by子句前面)

select * from goods  where goods_id=3

mysql必知必会(二)_第5张图片

where子句操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between and 在指定的两个值之间

检索商品价格大于3000的

select * from goods  where shop_price >3000

mysql必知必会(二)_第6张图片
检索商品价格在1000到3000之间的值

select * from goods  where shop_price between 1000 and 3000

mysql必知必会(二)_第7张图片
在创建表时,表设计人员可以指定其中的列是否可以布不包含值。在一个列不包含值时,称其为包含空值NULL,select语句由一个特殊的where字句,可用来检索具有NULL值得列。这个字句就是is null

如:返回商品名字为null的值

select * from goods where goods_name is null

mysql必知必会(二)_第8张图片

##高级数据过滤

#####组合where字句:以and字句的方式或or字句的方式

and 关键字用来指示检索满足所有给定条件的行

or 关键字用来检测匹配任一条件的行

查询cat_id等于3并且shop_price价格大于2000的值

select * from goods where cat_id=3 and shop_price>2000

mysql必知必会(二)_第9张图片

select * from goods where cat_id=3 or cat_id=2

mysql必知必会(二)_第10张图片

mysql运行and和or结合进行复杂的过滤,但计算的顺序是有限处理and操作符,所以做两者之间的组合时一般用()作分组

select * from goods where cat_id=3 or cat_id=2 and shop_price>3000

mysql必知必会(二)_第11张图片

select * from goods where cat_id=3 or cat_id=2 and shop_price>3000

mysql必知必会(二)_第12张图片

建议:任何时候使用具有and和or操作符的where字句,都应该使用圆括号明确地分组操作符

####IN操作符

in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in的合法取值范围由逗号分隔,并且全部在圆括号中

select * from goods where cat_id in (1,2);

mysql必知必会(二)_第13张图片

#####in操作符优点

1.in操作符一般比or操作符执行更快

2.in操作符可以包含其他select语句,使得能够更动态地建立where子句

NOT操作符

where子句中的not操作符只有一个功能,哪就是否定它之后所跟的任何条件

select * from goods where cat_id not in (1,2);

mysql必知必会(二)_第14张图片

mysql中的not,一般使用对in/between和exists子句的取反

你可能感兴趣的:(书本学习)