SQL-带条件的查询

----------------------------带条件的查询---------------------------
select * from TblClass
select * from TblStudent
select * from TblScore
--------------------------查询没及格的学生的学号-------------
select tSId from TblScore where tEnglish<60 or tMath<60
-------------------------查询年龄在20-30之间的男学生---------------
select * from TblStudent where tsgender='男' and (tsage>=20 and tsage<=30)
select * from TblStudent where tSGender='男'
and tSAge between 20 and 30
------------------------查询数学成家在80到90之间的所有学生---------------
select * from TblScore where tMath between 80 and 90

select * from TblStudent where tsclassid=1 or tsclassid=5 or tsclassid=3
select * from TblStudent where tSClassId in(1,3,5)
select * from TblStudent where tSClassId between 1 and 2
select * from TblStudent where tsclassid>3 and tsclassid<5



----------------------------模糊查询------------------------------------------
-----—/  _  /  %  /  []  /  ^  ------------------------------
---------------_表示任意单个的字符-----------------------------
select * from TblStudent where tSName like '张_'
select * from TblStudent where tSName like '张__'
---------------%表示任意的字符-------------------------------
select * from TblStudent where tSName like '张%'
---------------[]表示从一个范围中筛选------------------------
select * from tblstudent where tsname like '张[a-z]妹'
select * from TblStudent where tSName like '张[0-9]妹'
select * from TblStudent where tSName like '张[_]妹'--把字符放到【】中表示一个字符没有意义
select * from TblStudent where tSName like '张[xc]妹'
select * from TblStudent where tSName like '张[^xc]妹' --加^表示非
select * from TblStudent where tSName not like '张[xc]妹'


--------------------------------空值的处理--------------------------------------
select * from TblStudent where tSAge is null  ------------表示年龄的是不知道的
select * from TblStudent where tSAge is not null------------表示年龄不是空值的
update TblStudent set tSAge=tSAge+1 where tSId=1 or tSId=2--null和任何值计算结果还是null
select * from TblStudent


-------------------------------order by排序------------------------------
--order by永远在查询语句的最后面执行,所有的子句都在order by 之前执行
--order by asc 表示升序
--order by desc 表示降序、不写表示默认升序
-----------------按照多列来排序----------------------
select * from TblScore order by tEnglish desc,tMath desc
----------------order by不仅来根据列来排序,还可以根据表达式来排序-----
select *, 平均分=(tenglish+tmath)*1.0/2
from tblscore
order by 平均分 desc

--------------------分组group by-----------------------------------
select * from TblStudent
---------------------查询出每个班的班级id和班级人数----------------
select
 tsclassid as 班级,
 count(*) as 班级人数
from  tblstudent group by tsclassid
------------聚合函数必须配合分组使用---------------
select tsclassid as 班级id,
 COUNT(*) as 班级男同学的人数
from TblStudent where tSGender='男' group by tSClassId
----------------------------------------------------
select tsclassid as 班级id,
 COUNT(*) as 班级男同学的人数
from TblStudent where tSGender='男' group by tSClassId
having count(*)>3


select tsclassid as 班级id,
 COUNT(*) as 班级男同学的人数
from TblStudent where tSGender='男' group by tSClassId
order by 班级男同学的人数 desc
---------------------分组后再进行筛选就要用having来配合使用了-------------------
--where是对每条记录进行筛选,having是对分组后的集合再进行筛选的-----
---------------------sql语句的执行顺序-------------------

--先执行from->where中不能用聚合函数->group by->having->select->选择列->distinct->order by->top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值