【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 相关文章推荐
2021-4-3课程——SQL Server查询【2】
Apr 05 SQL Server
SQL Server基本使用和简单的CRUD操作
Apr 05 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
Mar 23 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL Server使用T-SQL语句批处理
May 20 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
js判断密码强度的方法
2020/03/18 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
Python正确重载运算符的方法示例详解
2017/08/27 Python
python实现八大排序算法(2)
2017/09/14 Python
python 产生token及token验证的方法
2018/12/26 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
STP的判定过程
2012/10/01 面试题
《美丽的小路》教学反思
2014/02/26 职场文书
解除合同协议书
2014/04/17 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
催款函范文
2015/06/24 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
python实战之用emoji表情生成文字
2021/05/08 Python
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript