【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 相关文章推荐
SQL Server数据定义——模式与基本表操作
Apr 05 SQL Server
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer2019 数据库环境搭建与使用的实现
Apr 08 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
SQL Server中使用表变量和临时表
May 20 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
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
php采集速度探究总结(原创)
2008/04/18 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php实现读取超大文件的方法
2014/07/28 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
JS中作用域以及变量范围分析
2020/07/18 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
10款最好的Web开发的 Python 框架
2015/03/18 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
Django框架实现的分页demo示例
2019/05/25 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
应届毕业生求职信
2013/11/30 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
企业晚会策划方案
2014/05/29 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
法院执行局工作总结
2015/08/11 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书