SQL单表查询

目录

1.查询年龄在17~19(含边界)的学生姓名和年龄

2. 确定集合:使用谓词IN或NOT IN。

 3.或逻辑:in(常量1,常量2, ...常量n)

4.模糊查询

5. 查询名字的第2个字为”小”或“大”的学生姓名。

6.转义方法实现escape

7.空值:使用谓词IS NULL或IS NOT NULL。

8.多重条件:单一条件结合逻辑运算符(and  or  not)

9.top子句:top n:取查询结果的前n行数据

10.top n percent:取查询结果的前n%行数据

11.with ties:包括并列的结果

12. ORDER BY子句:对查询结果排序

13.查询学生中年龄最小的学生姓名和年龄。

14.聚集函数

15.GROUP BY子句:对数据进行分组统计

16.into子句:将查询结果保存到表中


1.查询年龄在17~19(含边界)的学生姓名和年龄

	select sname,sage
	from student
	where sage>=17 and sage<=19
--也可以这样,但不推荐
	select sname,sage
	from student
	where not sage<17 and not sage>19
--等价于
--between A and  B:[A,B]
    select sname,sage
	from student
	where sage between 17 and  19

2. 确定集合:使用谓词IN或NOT IN。

--查询信息管理系和计算机系的学生姓名和性别
   select sname,ssex
   from student
   where sdept='信息管理' or sdept='计算机'

 3.或逻辑:in(常量1,常量2, ...常量n)

--确定集合:使用谓词IN或NOT IN。
--查询信息管理系和计算机系的学生姓名和性别
   select sname,ssex
   from student
   where sdept='信息管理' or sdept='计算机'
   
--等价于
--in:或逻辑
--in(常量1,常量2, ...常量n)
   select sname,ssex
   from student
   where sdept  in('信息管理','计算机')

4.模糊查询

--精确查询:查询的条件是确定的,精确地
 --模糊查询:查询的条件是不够确定的,不够精确地
 --提示:对于模糊查询的条件表达不能用=
 --模糊查询条件表达的思路:使用like与通配符结合使用
 --通配符(注:代表任意的字符):%(表示任意的0或多个字符)、_(表示任意的1个字符)、[](表示或逻辑)、[^](表示对或逻辑的否定)

 --查询所有李姓学生的姓名
 --like :像
	select sname
	from student
	where sname like '李%'

5. 查询名字的第2个字为”小”或“大”的学生姓名。

select sname
	from student
	where sname like '_[小大]%'

6.转义方法实现escape

--查询以第3至5个字为‘_系统’的课程信息。
--提示:使用模糊查询时,需要将通配符作为一般字符看待(转义方法实现escape)
	select *
	from course
	where  cname like '__\_系统%'  escape '\'
 
 --等价于
	select *
	from course
	where  cname like '__#_系统%'  escape '#'

7.空值:使用谓词IS NULL或IS NOT NULL。

--查询缺少成绩的学生学号和相应课程号。
--空值:null(不确定或没有值)
--错误
	select sno,cno
	from sc
	where grade=0

--正确
	select sno,cno
	from sc
	where grade is null

8.多重条件:单一条件结合逻辑运算符(and  or  not)

--多重条件:查询异世界年龄在20岁以下的学生姓名
	select sname
	from student
	where sdept='异世界' and sage<20

9.top子句:top n:取查询结果的前n行数据

--查询course表中的前三条记录
   select top 3 *
   from course

10.top n percent:取查询结果的前n%行数据

--查询course表前20%的记录
   select top 20 percent *
   from course

11.with ties:包括并列的结果

--查询学生年龄最小的全部信息
	select top 1 with ties *
	from student
	order by sage

12. ORDER BY子句:对查询结果排序

--查询全体学生的信息,查询结果按系名升序排列、同一个系的学生按年龄降序排列。
select *
from student
order by sdept, sage desc

13.查询学生中年龄最小的学生姓名和年龄。

--思考:查询学生中年龄最小的学生姓名和年龄。 
select sname,sage
from student 
where sage = (select min(sage) from student)

14.聚集函数

--统计学生总数
select COUNT(*)
from student

--查询选课记录总数及选修了课程的学生人数
select COUNT(distinct sno) 学生人数, COUNT(distinct cno) 选课记录
from sc

--查询选修c001号课程考试成绩的平均分、最高分和最低分
select AVG(grade) 平均分,max(grade) 最高分,MIN(grade) 最低分
from sc
where cno='c001'

--查询每门课的平均分、最高分和最低分
select cno,AVG(grade) 平均分,max(grade) 最高分,MIN(grade) 最低分
from sc
group by cno

15.GROUP BY子句:对数据进行分组统计

--查询每门课程的选课人数。
select  cno ,count(sno) 选课人数
from sc
group by cno

--查询每个学生的选课门数和平均成绩。
select sno, count(sno) 选课门数, avg(grade)
from sc
group by sno

--查询每个系的女生人数。
select sdept, count(sno) 女生人数
from student
where ssex = '女'
group by sdept

--查询选课门数超过3门的学生学号和选课门数
select  sno ,count(sno) 选课门数
from sc
group by sno having count(sno) > 3

16.into子句:将查询结果保存到表中

--语法格式:
--select  查询列表序列  into <新表名>  from  数据源
--其他条件子句、分组子句等
--将student表中所有的记录信息复制到一张新表table1中
--需求;想将查询结果保留
	select * into table1
	from student

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值