【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
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
Mar 23 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
May 25 SQL Server
SQL Server中的逻辑函数介绍
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SQL中的连接查询详解
Jun 21 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
React Router基础使用
2017/01/17 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
vue-cli随机生成port源码的方法
2019/09/02 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
Python实现控制台进度条功能
2016/01/04 Python
解决Python requests 报错方法集锦
2017/03/19 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
python简单实现AES加密和解密
2019/03/28 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
python基于win32api实现键盘输入
2020/12/09 Python
Collection和Collections的区别
2016/05/02 面试题
党日活动总结
2014/05/07 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
光荣之路观后感
2015/06/12 职场文书
导游词之广西漓江
2019/11/02 职场文书