【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
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SQL写法--行行比较
Aug 23 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
在SQL Server中使用 Try Catch 处理异常的示例详解
Jul 15 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 SQL Server
详解SQL报错盲注
Jul 23 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下escape解码函数的实现方法
2010/08/08 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
js中widow.open()方法使用详解
2013/07/30 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
Python解决鸡兔同笼问题的方法
2014/12/20 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
python图片验证码生成代码
2016/07/02 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
对pandas中to_dict的用法详解
2018/06/05 Python
python计算无向图节点度的实例代码
2019/11/22 Python
python_mask_array的用法
2020/02/18 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
班主任工作年限证明
2014/01/12 职场文书
总裁助理岗位职责
2014/02/17 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
文明之星事迹材料
2014/05/09 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
交通事故协议书范本
2016/03/19 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS