【HBU】数据库第四周 单表查询

第一次实验课用的机房电脑 本地的sql server没有我之前建立的表和数据,所以上来先借着之前博客里存的代码又新建了一遍。

Posted in SQL Server onApril 05, 2021

单表查询

选择表中的若干列

查询指定列

查询全体学生的学号和姓名
Select SNAME,SNO FROM STUDENT

【HBU】数据库第四周 单表查询
查询结果。

查询全部列

查询 全体学生的详细记录

Select * FROM STUDENT

等价于

Select Sno,Sname,ssex,sage,sdept FROM STUDENT

【HBU】数据库第四周 单表查询
但也有一定的区别,在第二种语句里,可以改变内容显示的顺序。
比如Select Sno,ssex,sage,sdept,sname FROM STUDENT
【HBU】数据库第四周 单表查询
此时名字就被放到了最后面。

查询经过计算的值

查询全体学生的姓名以及其出生年份
Select子句的目标表达式不仅可以是表中的属性列,也可以是表达式。
Select Sname,2021-SAGE FROM STUDENT

【HBU】数据库第四周 单表查询
查询全体学生的姓名,出生年份和所在院系,用小写字母表示系名

Select Sname,'出生年份',2021-sage,LOWER(Sdept) FROM STUDENT

【HBU】数据库第四周 单表查询
如果要求大写,则使用UPPER()函数
同时 列标题也可以进行编辑。

Select Sname '姓名','出生年份'Birth,2021-sage 年龄,LOWER(Sdept) 专业 FROM STUDENT

【HBU】数据库第四周 单表查询
这里可以注意到 在写列名时 有无引号影响都不大

选择表中的若干元组

消除取值重复的行

Select 2021-sage  FROM STUDENT

【HBU】数据库第四周 单表查询
若不加DISTINCT关键字 会出现一些重复的行

Select DISTINCT 2021-sage  FROM STUDENT

【HBU】数据库第四周 单表查询
当不指定DISTINCT关键字 就会默认为ALL
本质上

Select 2021-sage  FROM STUDENT

Select ALL 2021-sage  FROM STUDENT

是等价的。

查询满足条件的元组

通过where子句来实现
 1》 比较大小
  进行比较的运算符一般包括 = > < >= <= != <>(不等于) !> !<
 查询is系全体学生的名单
 
Select Sname from Student where Sdept ='is';

【HBU】数据库第四周 单表查询

查询所有年龄在20岁以下的学生姓名及其年龄

Select Sname,Sage from Student where sAGE<20;

【HBU】数据库第四周 单表查询
2>> 确定范围
谓词BETWEEN…AND 和NOT BETWEEN…AND可以用来查找属性值在(或不在)指定范围内的元组,其中BETWEEN 后是范围的下限 AND后是上限

查询年龄在18-20岁之间的学生的姓名 专业和年龄
Select Sname,SDEPT,SAGE from Student where Sage Between 18 And 20;

3》 确定集合
查询CS MA 还有IS 系学生的姓名和性别

Select Sname,Ssex from Student where Sdept IN ('CS','ma','is');

【HBU】数据库第四周 单表查询
4》 字符匹配
谓词LIKE 可以用来进行字符串的匹配,其一般语法格式如下:
[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘<转码字符>’]
其含义是查找指定的属性列值与<匹配串>相匹配的元组,<匹配出>可以是一个字符串,也可以含有通配符%和_。在其中:

  • % 代表任意长度(可以为0)的字符串,例如a%b表示以b结尾的任意长度的字符串 比如acb addb
  • _ 代表任意单个字符 例如a_b代表以a开头 以b结尾的长度为3的任意字符串 比如acb adb

当Like 后面的匹配串不包含通配符的时候,可以用= != <> 来取代LIKE或者是NOT LIKE

查询所有名字里有“坤”的学生的姓名 学号和性别

Select Sname,Ssex ,Sno from Student where Sname like '%坤';

【HBU】数据库第四周 单表查询
查询姓蔡 且全名是三个字的同学的姓名

Select Sname from Student where Sname like '蔡__';

【HBU】数据库第四周 单表查询
注意:当字符集为ASCLL的时候 一个汉字需两个_ 当字符集是GBK的时候只需要一个_;

查询所有不姓蔡的同学的姓名学号和性别

Select Sname,sno,ssex from Student where Sname NOT like '蔡%';

【HBU】数据库第四周 单表查询
但如果要查询的字符串里本身包含通配符%或者_ 就需要用ESCAPE ‘<换码字符>’ 短语对通配符进行转意
例如 查询DB_Design 课程的课程号

select cno from Course where cname like 'DB\_Design' Escape '\';

试着查询一下 王_开头的人的名字

select Sno,Sname from Student where Sname like '王\_%' Escape '\';

【HBU】数据库第四周 单表查询
5》 涉及空值的查询
查询年龄信息为空的学生的所有信息:

select * from Student Where Sage is NULL;

【HBU】数据库第四周 单表查询
查询所有有年龄的学生的信息

select * from Student Where Sage is NOT NULL;

【HBU】数据库第四周 单表查询
6》多重条件查询
逻辑运算符AND 和 OR 可以连接多个查询条件,AND优先级高于OR 括号可以改变优先级
查询计算机科学系年龄20岁下的学生姓名

select Sname from Student Where Sdept='cs' And sage < 20;

【HBU】数据库第四周 单表查询
事实上 之前的语句

Select Sname,Ssex from Student where Sdept IN ('CS','ma','is');

也可以用 来替代(注 数据不一样的原因是因为后半部分是我离开教室后写的)

Select Sname,Ssex from Student where Sdept ='CS'or Sdept ='ma'or Sdept ='is';

【HBU】数据库第四周 单表查询

ORDER BY

在order by 子句对查询结果按照一个或者多个属性列的升序ASC或降序DESC排列 默认为升序
查询专业是性别是男的学生的姓名和专业,查询结果按照年龄降序

Select Sname,Sdept from Student where Ssex='男' 
Order by Sage DESC;

【HBU】数据库第四周 单表查询
查询全体学生情况,查询结果按所在系的小升序排列,同一系中的学生按年龄降序排列

Select * from Student 
Order by Sdept,Sage DESC;

【HBU】数据库第四周 单表查询

聚集函数:

  • 统计元组个数 COUNT(*) 统计一列中值的个数
  • COUNT([DISTINCT|ALL] <列名>) 计算一列值的总和SUM([DISTINCT|ALL] <列名>) 计算一列值的平均值 AVG([DISTINCT|ALL] <列名>) 求一列中的最大值和最小值 MAX([DISTINCT|ALL] <列名>) MIN([DISTINCT|ALL] <列名>)
    查询学生总人数:
Select Count(*) From Student;

【HBU】数据库第四周 单表查询
查询计算机科学专业的学生的平均年龄

Select AVG(SAGE) From Student where Sdept='cs';

【HBU】数据库第四周 单表查询
查询信息安全专业学生的最大年龄

Select MAX(SAGE) From Student where Sdept='IS';

【HBU】数据库第四周 单表查询
查询计算机科学专业学生的年龄总和

Select SUM(SAGE) From Student where Sdept='CS';

【HBU】数据库第四周 单表查询

GROUP BY 子句

GROUP BY 子句查询结果按某一列或者多列的值分组,值相等的为一组
求各个课程号及相应的选课人数

Select CNO,COUNT(SNO)
FROM SC
GROUP BY CNO;

【HBU】数据库第四周 单表查询
如果分组后还要按一定的要求对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING短语进行筛选

Select CNO,COUNT(SNO)
FROM SC
GROUP BY CNO
HAVING COUNT(*) >=2;

【HBU】数据库第四周 单表查询
查询平均分大于90的学生的学号和平时成绩:

Select CNO,AVG(GRADE)
FROM SC
GROUP BY CNO
HAVING AVG(GRADE)>=90;

【HBU】数据库第四周 单表查询
不可以用
Where 来进行筛选
因为二者作用对象不同
Where 作用于基本表或视图,从中筛选满足元素的组,
而having短语作用于组 从中筛选满足条件的组

这学期第一次上课就坐到前面,听的尤其认真比起往年上课 希望以后也可以继续保持下去吧。

SQL Server 相关文章推荐
SQLServer2019 数据库环境搭建与使用的实现
Apr 08 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
sql字段解析器的实现示例
Jun 23 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL Server中使用表变量和临时表
May 20 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
Sql-Server数据库单表查询 4.3实验课
SQL Server 数据库实验课第五周——常用查询条件
SQL Server基本使用和简单的CRUD操作
SQL Server数据定义——模式与基本表操作
2021-4-5课程——SQL Server查询【3】
2021-4-3课程——SQL Server查询【2】
SQL Server——索引+基于单表的数据插入与简单查询【1】
You might like
德生PL330测评
2021/03/02 无线电
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
js实现无缝轮播图
2020/03/09 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
优秀党员获奖感言
2014/02/18 职场文书