数据库标准语言SQL(六)——单表查询(二)
数据库标准语言SQL(五)——查询(二)
一、前言
这一次内容继续是单表查询的部分,然后单表查询就结束了。
二、示例
1.用值表确定集合查询
引入谓词IN 查找属性值属于指定集合的元组,可以让我们在查询时候更加的随心所欲,查询结果更加符合需求
--查询IS、MA、CS三个系学生信息
select sname,ssex,sdept from student
where sdept in ('IS','MA','CS');
--查询非以上三系
select sname,ssex from student
where sdept not in ('IS','MA','CS');
因为之前插入数据的时候,数据题目就只有这三个系,所以,另一个结果就是空的。
2.字符匹配以及字符通配符的简单使用
字符匹配用 LIKE 和NOT LIKE两个谓词,当然还涉及到了一些简单的字符通配符
字符通配符 | 含义 |
---|---|
% | 代表任意字长 |
_(下划线) | 只占一个任意单个字符,其代表汉字时候和数据库字符集有关,ASCII用一个,GBK两个 |
--匹配串为固定字符串
--查询学号为201215122的学生信息
select * from student
where sno like '201215122';
--等价于
select * from student
where sno = '201215122';--匹配串为含通配符的字符串
--查询所有李姓同学的信息
select sname,sno,ssex from student
where sname like '李%';
--查询姓王,且全名为2个字--
SELECT * FROM Student WHERE Sname LIKE '王_';
--转义字符换码
--查询DB_Design课程的信息
--这里面有字符通配符‘_’所以要转义
select Cno,Credit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE'\';
3.空值查询
这里引入 IS 。要注意的是,虽然之前像LIKE这样的可以和“=”相互替换,但是这个绝对不可以。
--查询缺少成绩的学生学号和课程号
select sno,cno from sc
where grade is null;
--查询有成绩
select sno,cno from sc
where grade is not null;
建表的时候,都是良好的数据题目,没有空值,所以查询结果为空
4.多重条件查询
这里就用到了两个关键词AND 和OR就是逻辑上的且和或
/*多重条件查询*/
--查询计算机系年龄在20岁以下的学生姓名
select sname from student
where sdept = 'CS' and sage<20;
--查询IS、MA、CS的学生姓名和 性别
--方法一、IN集合查询
select sname,ssex from student
where sdept in ('IS','MA','CS');
--方法二、OR条件查询
select sname,ssex from student
where sdept='IS' or sdept='MA' or sdept='CS';
5.ORDER BY子句
这个子句主要是把查询结果按照一定的顺序排序输出,有两个排序的标志词ASC(升序)和DESC(降序)。
/*ORDER BY子句*/
--查询选修3号课程,降序排列
select sno,grade from sc
where cno='3'
order by grade desc;
--系号升序,同一个系降序
--asc可以省略
select * from student
order by sdept asc,sage desc;
select * from student
order by sdept ,sage desc;
我们可以看到,不仅仅有对于数字的排序,还有对于英文字符串的排序
6.聚集函数
当然,我们也可以在数据库里面实现excel的统计学功能。这里就用到了一些聚集函数
聚集函数的语法 | 意义 |
---|---|
COUNT(*) | 统计所有元组个数 |
COUNT(DISTINCT 列名) | 统计该列中值个数,且不重复计入 |
COUNT(ALL(默认) 列名) | 统计该列中值个数,全部计入 |
SUM(DISTINCT 列名) | 统计该列中值总和,且不重复计入 |
SUM(ALL(默认) 列名) | 统计该列中值总和,全部计入 |
AVG(DISTINCT 列名) | 统计该列中值平均数,且不重复计入 |
AVG(ALL(默认) 列名) | 统计该列中值平均数,全部计入 |
MAX(DISTINCT 列名) | 统计该列中值最大值,且不重复计入 |
MAX(ALL(默认) 列名) | 统计该列中值最大值,全部计入 |
MIN(DISTINCT 列名) | 统计该列中值最小值,且不重复计入 |
MIN(ALL(默认) 列名) | 统计该列中值最小值,全部计入 |
/*聚集函数*/
--查询学生总人数
select count(*) from student;
--查询选修了课程的学生人数
select count(distinct sno) from sc;
--查询且计算1号课程的平均成绩
select avg (grade) from sc
where cno='1';
--查询1号课程的学生最高分数
select max(grade) from sc
where cno = '1';
--查询1号课程的学生最低分数
select min(grade) from sc
where cno = '1';
--查询学生201215122选修课程的总学分
select sum(ccredit) from sc,course
where sno='201215122' and sc.cno=course.cno;
7.GROUP BY子句
该子句为了将查询结果按照某一列或者多列的值分组,其目的在于细化聚集函数的查询。
/*GROUP BY子句*/
--求各个课程号及相应的选课人数
select cno,count(sno) from sc
group by cno ;
--查询选修了3门课以上的学生学号
select sno from sc
group by sno
having count(*)>3;
数据库标准语言SQL(六)——单表查询(二)相关推荐
- 关系数据库设计及数据库标准语言SQL(多表查询)
实验原理.内容及实验步骤: 实验原理 一.SQL查询的基本语法 select 语句是SQL语言从数据库中获取信息的一个基本语句.该语句可以实现从一个或多个数据库中的一个或多个表中查询信息,并将结果显示 ...
- 数据库技术与应用(SQL Server)——【SQL Server单表查询(二)】
单表查询(二) SQL函数: SQL 拥有很多可用于计数和计算的内建函数 SQL函数分类: SQL Aggregate函数和SQL Scalar函数 SQL Aggregate函数(聚合函数或合计函数 ...
- 【2020-2021春学期】数据库作业5:单表查询例题练习
文章目录 单表查询 1.选择表中若干列 [例3.19]查询全体学生姓名和出生年份 [例3.20]查询全体学生姓名.出生年份.院系(用小写) 2.选择表中的若干元组 [例3.21]查询选修了课程的学生学 ...
- 动态SQL,单表查询
mybatis动态SQL语句 简单的单表增删改查配上动态SQL mapper接口(通过OrderId查询订单,返回集合) List selectByOrderId(Integer orderId); ...
- Navicat对数据库进行简单的单表查询语句
目标需求: 我作为一个前端开发人员,简单查看数据库中满足我查询条件的数据有哪些 SQL语句: SELECT * FROM tb_configuration_info WHERE prj_id=1198 ...
- 数据库(十)-单表查询(1)条件查询
在对数据库进行查询时使用WHERE关键字,指明WHERE后面的查询子句,被称为条件查询我们可以使用一系列运算以及关键字完成操作: 算术运算符+.-.*./.%:比较运算符包括=.!=.<> ...
- mysql实验三单表和多表查询_数据库实验三(单表查询)
实验三: select sno,sname from student;//(1)查询全体学生的学号和姓名 select * from student;//(2)查询全体学生的详细记录 select s ...
- SQL Server单表查询语句
完整表格见博文:https://blog.csdn.net/weixin_44410704/article/details/118252624 一.语句 Example 1: --1查询全体学生的学号 ...
- mysql 连表查询 好处,MySQL 多次单表查询和多表联合查询的优缺点分析-Fun言
前言 阿里巴巴的代码规范中有一条就是不建议执行三张表以上的多表联合查询,因为对数据量不大的应用来说, 多表联合查询开发高效, 但是多表联合查询在表数据量大, 并且没有索引的时候, 如果进行笛卡儿积, ...
最新文章
- ios appIcon配置
- 编程中检查IIS7组件的安装情况
- oracle设计自增列,oracle中实现自增列
- 应用化学:从二氯甲烷到四氯化碳
- mysql bind param_为什么bindParam必须要指定类型?
- [NOIP 2010普及组 No.3] 导弹拦截
- GraphSAGE节点分类
- TimeUnit.SECONDS.sleep()和sleep区别
- 基于智能家居场景的POALRDB性能体验
- MongoDB 教程五: MongoDB固定集合和性能优化 (索引Indexes, 优化器, 慢查询profile)
- java文件指针,Java 测试文件指针,java测试指针,两种方法打开文件并进行内
- tomcat编码配置gbk_tomcat编码乱码问题
- Manjaro找不到默认键盘布局
- Idea复制文件一直updating indices
- onenote 实现不同端 秒同步
- 这段代码不讲武德,劝你耗子尾汁
- iOS开发--音频播放、录音、视频播放、拍照、视频录制
- 算法python实现_Relief算法python实现
- weiphp2.0:关于OneThink后台添加密码重置的功能
- grep、cut常见用法
热门文章
- 刨根问底:linux中bash shell中SIGHUP和SIGTERM信号的处理
- 自研机器人协调控制系统(2)——六足舞蹈篇
- 避坑外连腾讯云服务器redis 6379
- 各代iphone ipad iPod各种信息 获取设备型号等等整理
- antd vue实现日历功能——添加放假时间功能——基础积累
- 计算机主机显卡吗,没有显卡的电脑能用吗_电脑主机没显卡能用吗-系统城
- WIN10无限蓝屏重启解决办法
- 自建服务器打印机,打印机服务器搭建 -cups
- 微信h5缓存清理技巧
- xxx-1.0-SNAPSHOT.jar中没有主清单属性的解决方法