[例3.19] 查全体学生的姓名及其出生年份。
select Sname,2021-Sage
from student;

[例3.20] 查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名。
select Sname,'出生月份:',2021-Sage,LOWER(Sdept)
from student;

这里还可以使用列的别名。具体用法就是在查询的列名后面加上那个别名,空格隔开。
例如:


大写函数:UPPER

查询行

[例3.21] 查询选修了课程的学生学号。

关于all修饰和distinct修饰,之前提到过,distinct就是去掉重复的。
缺省为distinct。

[例3.22] 查询计算机科学系全体学生的名单。
select Sname
from student
where Sdept='CS';

[例3.23]查询所有年龄在20岁以下的学生姓名及其年龄。
select Sname
from student
where Sage<20;

[例3.24]查询考试成绩有不及格的学生的学号。
select Sno
from SC
where Grade<60;

[例3.25] 查询年龄在18~23岁(包括18岁和23岁)之间的学生的姓名、系别和年龄
select Sname , Sdept,Sage
from student
where Sage between 18 and 23;

[例3.26] 查询年龄不在20~23岁之间的学生姓名、系别和年龄
select Sname , Sdept,Sage
from student
where Sage not between 18 and 23;

IN NOT IN

谓词:IN <值表>, NOT IN <值表>
[例3.27]查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
select Sname,Ssex
from student
where Sdept in ('cs','ma','is');

[例3.28]查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别。
select Sname,Ssex
from student
where Sdept not in ('cs','ma','is');

模糊查询 LIKE

谓词: [NOT] LIKE ‘<匹配串>’ [ESCAPE ‘ <换
码字符>’]

注意两点:

  1. 通配符:% _,%表示的是长度为任意(包括0)的字符串,_表示的是一个字符。
  2. 关于转义字符,这里叫换码字符:比如我们要查询的字符串里真的有%号这个字符,那我们就使用下面这种形式处理:WHERE Cname LIKE 'DB\%Design' ESCAPE '\' ;表示的是\后面的那个字符是真正的字符而不是通配字符。
[例3.29] 查询学号为201215130的学生的详细情况。
select *
from student
where Sno like '201215130';


这样这样写其实没什么意义(doge),直接Sno=就可

[例3.30] 查询所有姓梁学生的姓名、学号和性别。
select Sname,Sno,Ssex
from student
where Sname like '梁%';

[例3.31] 查询姓"欧阳"且全名为三个汉字的学生的姓名。
select Sname '姓名'
from student
where Sname like '欧阳_';

注意:关于编码问题,我们在c语言的时候就遇到过,当时一个汉字占两个字符,因为c语言是asc编码,而我们在学Java的时候,Java用的Unicode编码,所以每个汉字也是一个char(但这时char是两个字节),所以这里应该是Unicode或者gbk的。

然后是关于SQL sever里的char他是固定的长度,所以实际的“欧阳修”,由于是nchar(10),他在里面存的是 “欧阳修 ”,所以按理说 like’欧阳_'应该查询不成功,但是想必sql server做了处理。

下图,当like’欧阳_'或者’欧阳修___________'都可以查到’欧阳修’。

[例3.32] 查询名字中第2个字为"阳"字的学生的姓名和学号。
select Sname '姓名'
from student
where Sname like '_阳%'

[例3.33] 查询所有不姓梁的学生姓名、学号和性别。
select Sname '姓名',Sno '学号',Ssex '性别'
from student
where Sname not like '梁%'

[例3.34] 查询DB_Design课程的课程号和学分。
select Cno , Ccredit
from course
where Cname like 'DB/_Design' escape '/';
[例3.35] 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
select Cno , Ccredit
from course
where Cname like 'DB/_%i__' escape '/';

NULL

[例3.36] 某些学生选修课程后没有参加考试,所以有选课记录,但没 有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
select Sno,Cno
from sc
where Grade is null;

“注意:IS” 不能用 “=” 代替

[例3.37] 查所有有成绩的学生学号和课程号。
select Sno,Cno
from sc
where Grade is not null;

多重条件查询

[例3.38] 查询计算机系年龄在20岁以下的学生姓名。
select Sname
from student
where Sdept='CS' AND Sage <20
[例3.27] 查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别
select Sname
from student
where Sdept ='cs' OR Sdept ='ma' OR Sdept ='is'

ORDER BY子句

注意:可以按照好几个属性排序,有优先级。(类似写的cmp,asc升序;desc降序,默认为asc);对于空值,由具体系统实现决定(也就是说没有规定)

[例3.39]查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
select Sno,Grade
from sc
where Cno='3'
order by grade desc

[例3.40]查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
select *
from student
order by Sdept ,Sage desc

聚集函数

常用函数

◼ 统计元组个数 COUNT(*)
◼ 统计一列中值的个数 COUNT([DISTINCT|ALL] <列名>)
◼ 计算一列值的总和 SUM([DISTINCT|ALL] <列名>)
◼ 计算一列值的平均值 AVG([DISTINCT|ALL] <列名>)
◼ 求一列中的最大值和最小值
MAX([DISTINCT|ALL] <列名>)
MIN([DISTINCT|ALL] <列名>)
[例3.41] 查询学生总人数。
select count(*)
from student ;

[例3.42] 查询选修了课程的学生人数。
select count(distinct sno) '学生的个数'
from sc ;


[例3.43] 计算1号课程的学生平均成绩。
select avg(grade)'平均分'
from sc
where cno=1;

[例3.44] 查询选修1号课程的学生最高分数。
select max(grade)'最高分'
from sc
where cno=1;

[例3.45 ] 查询学生201215129选修课程的总学分数。
select sum(Ccredit)
from sc,course
where sc.cno=course.cno


关于这里还不太懂,应该是俩表连接了

GROUP BY子句

细化聚集函数的作用对象
◼ 如果未对查询结果分组,聚集函数将作用于整个查询结果
◼ 对查询结果分组后,聚集函数将分别作用于每个组
◼ 按指定的一列或多列值分组,值相等的为一组
[例3.46] 求各个课程号及相应的选课人数。
select Cno,count(sno) '每个课程里的学生的数目'
from sc
group by Cno;

[例3.47] 查询选修了2门以上课程的学生学号。
select sno
from sc
group by Sno
having count (*) >2;


终于写完了,昨天写了一半。
关于许多细节,有很多不明白的地方。

【数据库实验】 单表查询相关推荐

  1. 数据库实验3 数据库的单表查询

    数据库的单表查询 3.1实验目的及要求 掌握简单表的数据查询.数据排序和表链接查询的操作方法 3.2实验内容 简单查询操作和连接查询方式. 3.3实验步骤 3.3.1单表查询: 1.查询全体学生的学号 ...

  2. mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...

  3. MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  4. mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  5. mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  6. SQL sever数据库的单表查询和连接查询

    数据库的单表查询和连接查询 一.目的: 掌握无条件查询的使用方法. 掌握条件查询的使用方法. 掌握库函数及汇总查询的使用方法. 掌握分组查询的使用方法. 掌握查询的排序方法. 掌握连接查询的使用方法. ...

  7. 7.数据库-查-单表查询

    7 .数据库-查-单表查询 因为查询有很多分支 所以分 单表查询 和 多表查询: 简单查询 1.1 SELECT语句 在MySQl中查询语句 最基本就是SELECT语句了,可以用不用的条件来查询表中的 ...

  8. mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  9. 人大金仓数据库的单表查询

    人大金仓数据库的单表查询 查看表的内容 # 查询数据库的创建语句 \d exam.course # 查询数据表中的数据 select * from exam.course ; # 查询部分列 sele ...

  10. MySQL(一)创建大学数据库以及单表查询

    /*创建大学数据库*/ CREATE DATABASE college default character set utf8 collate utf8_general_ci; /*使用大学数据库*/ ...

最新文章

  1. atlas单机模式代码_用代码玩太无聊,这样玩海盗游戏《ATLAS》单机模式才是正确玩法...
  2. 为什么大家都做不好社交这件事?
  3. c语言编程员工信息排序,员工工资管理系统(c语言编程)
  4. web_cache_server -- Varnish
  5. Chromium Embedded Framework中文文档 (如何链接不同的运行时)
  6. python字典有什么用_在Python中使用范围作为字典键,我有什么选...
  7. vue跳转页面增加等待_vue跳转页面方法
  8. se linux ll-z,Linux selinux 基础
  9. 程序员学习交流的网站论坛
  10. mybatis的缓存,看这一篇就够了!
  11. iOS开发系列--NextPrevious On-Demand Resource Basics
  12. 【用户角色权限设计】
  13. 269个JavaScript工具函数
  14. 解决“error: failed to push some refs to ‘git@gitee.com:username/repo.git‘“
  15. nRF 主机扫描过滤器
  16. vcode去除分号和双引号方法
  17. C4D和Maya哪个学起来更容易
  18. 如何将单页面转化成手机版_【Mac分享】全套Adobe for mac(pojie版)
  19. softer soft parse
  20. MATLAB和C语言混合编程示例

热门文章

  1. 全局监听空格键事件 踩坑
  2. 阿里云服务器定时在线运行python爬虫代码
  3. 厦门python高校培训
  4. Excel表格数据丢失如何快速恢复?
  5. 一招教你合并多个视频:详细图文教程
  6. Port already in use: 1099(1099端口被占用的问题)
  7. Go语言:RPC简介及原理介绍
  8. Windows应急响应(三 FTP暴力破解)
  9. LeetCode 409. 最长回文串
  10. C++ 中的.hpp文件