mysql学习第7-9天查询子句

2019年12月18日 | 标签:

标题:mysql学习第7天查询子句详解where 和group详解

——————————————————————————————————————————-

时间:2012/4/22 18:03:57

内容:

select * from table where

where 后面是表达式
在这以后上表达式是不是诚意
select * from table where 1=1 就全部行
select * from table where id>100
select * from table where id>parentid
where 配合算术表达式
<,>,>=,<=,<>,!=,=,
在值的范围内大于100小于10
between 10 and 100,
具体值举例 值是a,b,c,d都算复合
包含in (a,b,c,d)
也可以用逻辑表达式
大于10小于100
where id<100 and id<10
where id between 10 and 100;
not !
and  &&
or  ||
模糊查询
like
%任意字符
_ 单个字符
比如查ab开头的
ab%
比如查3位字符a开头的
a__
group语法
max min sum count 总行数
avg
max(price)
把列名字当参数看

select * from table where

where 后面是表达式
在这以后上表达式是不是诚意
select * from table where 1=1 就全部行
select * from table where id>100
select * from table where id>parentid
where 配合算术表达式
<,>,>=,<=,<>,!=,=,
在值的范围内大于100小于10
between 10 and 100,
具体值举例 值是a,b,c,d都算复合
包含in (a,b,c,d)
也可以用逻辑表达式
大于10小于100
where id<100 and id<10
where id between 10 and 100;
not !
and  &&
or  ||
模糊查询
like
%任意字符
_ 单个字符
比如查ab开头的
ab%
比如查3位字符a开头的
a__
group语法
max min sum count 总行数
avg
max(price)
把列名字当参数看

标题:mysql学习第8天having用法以where区别

——————————————————————————————————————————-

时间:2012/4/24 18:41:05

——————————————————————————————————————————-

内容:

前面已经学会了利用select from where 表达式

例如我要选成绩不及格的学生名单
select name,score from class where sroce<60
我们还可以进行多条件查询
例如在上面的再加个限制条件只要男学生的不及格的名单 必经女生爱面子嘛
select name,score from class where sroce<60 and sex like ‘f%’
但是如果先进行了计算先生成了一列 再对这个新生成的列进行赛选 where就力不从心了
例如
select name,avg(math_score,yuwen_sroce,english_sorcre) as  avg_score from class where avg_score<60
这句话就是错的 报错是 avg_score是不知道的列,原因是 where的执行顺序优先与avg,所以当我们用where avg_score还没诞生  因为我们一旦使用了where 语句先会对每行进行判断 是不是符合
如果符合 在进行后面的运算,所以没法 就要用having ,这样我们直接对结果进行筛选 而不是先筛选 再计算
where和having的区别是
where是先从硬盘读取数据在赛选 再结算 列出
having是先计算 在再选
对一行数据进行计算 新生成一列 需要用列名加符号例如语文分数+数学分数+英语分数
对一列数据记性计算就可以用公式 sum(语文分数+数学分数+英语分数)甚至是
select socre<100,name,id 这样也可以的

前面已经学会了利用select from where 表达式

例如我要选成绩不及格的学生名单
select name,score from class where sroce<60
我们还可以进行多条件查询
例如在上面的再加个限制条件只要男学生的不及格的名单 必经女生爱面子嘛
select name,score from class where sroce<60 and sex like ‘f%’
但是如果先进行了计算先生成了一列 再对这个新生成的列进行赛选 where就力不从心了
例如
select name,avg(math_score,yuwen_sroce,english_sorcre) as  avg_score from class where avg_score<60
这句话就是错的 报错是 avg_score是不知道的列,原因是 where的执行顺序优先与avg,所以当我们用where avg_score还没诞生  因为我们一旦使用了where 语句先会对每行进行判断 是不是符合
如果符合 在进行后面的运算,所以没法 就要用having ,这样我们直接对结果进行筛选 而不是先筛选 再计算
where和having的区别是
where是先从硬盘读取数据在赛选 再结算 列出
having是先计算 在再选
对一行数据进行计算 新生成一列 需要用列名加符号例如语文分数+数学分数+英语分数
对一列数据记性计算就可以用公式 sum(语文分数+数学分数+英语分数)甚至是
select socre<100,name,id 这样也可以的标题:mysql学习第9天order by limit用法

——————————————————————————————————————————-

时间:2012/4/25 1:09:05

——————————————————————————————————————————-

内容:

排序就不用多说了

order by 字段名 asc降序 默认是升序desc
可以多字段排序 前面的优先
limit是限制结果数量 limit 2,4 是省略前面2个 开始限制4个
这个是分页用的比较多 直接省略前面n页*每行个数
order by可以进行计算 先select 再order by 和where不一样的
所以可以用order by colo A减clo b
不像前面用where不行要用having

排序就不用多说了

order by 字段名 asc降序 默认是升序desc
可以多字段排序 前面的优先
limit是限制结果数量 limit 2,4 是省略前面2个 开始限制4个
这个是分页用的比较多 直接省略前面n页*每行个数
order by可以进行计算 先select 再order by 和where不一样的
所以可以用order by colo A减clo b
不像前面用where不行要用having
目前还没有任何评论.