数据库随笔

本文详细介绍了SQL语言中常用的查询技巧,包括带条件查询、模糊查询、数据排序及分组等高级特性。通过实例展示了如何使用between、in、like等关键字进行高效的数据检索,并解析了group by与having语句的区别及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--☆★--带条件查询--★☆--
 select 字段 as 别名,字段 as 别名 from 表名 where 条件

 between and---区间查找
 sleect 字段 from 表名 where 字段 between 20 and 30 ---查询20-30之间的数据
 等同
 sleect 字段 from 表名 where 字段>条件 and 字段<条件

 in--离散查询
 select 字段 from 表名 where 字段 in(条件)
 等同
 select 字段 from 表名 where 条件1 or 条件2 or ....

 ☆==模糊查询--(针对字符串)
 --“%”代表0个或多个 “_”一个任意字符
 select * from 表名 字段 like '王%'
 select * from 表名 字段 like '王_'
 
 select * 表名 where 字段 like '王%' and LEN(FName)=3查询兴亡并且名字长度为3的人
 
 通配符[]--里面任意多的字符只取一个
 查询包含磊,伟的人
 select * 表名 字段 where FName like '%[磊,伟]%'
 
 查询不包含磊,伟的人
 select * 表名 字段 where FName like '%[^磊,伟]%'

 ☆==isnull函数
 select FName,FAge,数学成绩=isnull(cast(FMath as varchar(50)),'缺考') from 表名 where FMath is null
 --同一列上的数据类型必须一致用:cast转换
 
 --☆★--数据排序--★☆--
 (集合中的数据是无序的,如果排序之后当有序了之后“游标”,集合可以作为一个查询数据源,但是有序了的“游标”是不能作为数据源的)
 select * from (select * from MyStudents where FAge>40) as tbl  可以正确运行
 select * from (select * from MyStudents where FAge>40 order by FAge desc) as tbl  被排序之后,子查询变为游标不能作为查询

 select * from (select top 5 * from MyStudents where FAge>40 order by FAge desc) as tbl 取前5为有成为集合,可以作为数据源当做查询

 --先按英语排序再按数学成绩排序
 select * from 表名 order by FEnglish desc,FMath desc
 
 查询学生表中的英语成绩信息显示,姓名,性别,英语成绩,数学成绩。平均分
 select FName as 姓名,FGender as 性别,FEnglish as 英语成绩,
FMath as 数学成绩,平均分=(FEnglish+FMath)/2 from MyStudents order by (FEnglish+FMath)/2 desc

 --☆★--数据分组--★☆--(数据挖掘)
 ☆==group by
 --统计MyStudents中男女的个数
 select count(*) as 人数,性别=FGender from MyStudents group by FGender

 ☆==having语句对组进行筛选的。where也是进行筛选的。区别是where是在分组前进行筛选。having是在分组后进行筛选。
 --例如查询男性人数大于3的部门
 select  部门号=EmpDepId,部门男性人数=Count(*)
 from Employees where EmpGender='男' group by EmpDepId having count(*)>3
 spl语句执行顺序(优先级从高到低)
 {
 from - wher - group by - having - select - order by
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值