SQL Server实战四:查询数据库的数据
本文介绍基于Microsoft SQL Server软件,实现数据库表中多种数据查询方法的具体操作。
- 1 指定列或全部列查询——查询S表学生记录
- 2 指定列或全部列查询——查询学生姓名与出生年份
- 3 按条件查询及模糊查询——查询成绩不及格学生学号
- 4 按条件查询及模糊查询——查询20-23岁间学生姓名、系名、年龄
- 5 按条件查询及模糊查询——查询姓“李”学生姓名、学号、性别
- 6 按条件查询及模糊查询——查询名字第二字为“明”的男生姓名、系名
- 7 对查询结果排序——查询信息、计算机系学生姓名、系名,并系名升序、姓名降序
- 8 对查询结果排序——查询课程号C2的学生学号、课程号、成绩,按成绩降序
- 9 使用聚集函数的查询——查询计算机系学生人数
- 10 使用聚集函数的查询——查询选修微机原理学生人数、平均成绩、最高成绩
- 11 分组统计查询——查询各课程号及选课人数
- 12 分组统计查询——查询选修两门以上课程学生姓名和平均成绩
- 13 连接查询——查询选课学生学号、姓名、选课名称及成绩
- 14 连接查询——查询课程号、任课教师姓名及选课人数
- 15 自身连接——查询比“刘伟”工资高的教师姓名、工资和刘伟的工资
- 16 自身连接——查询同时选修“课程设计”和“微机原理”学生姓名、系名
- 17 外连接——查询学生学号、姓名、选课名称及成绩
- 18 返回一个值的子查询
- 19 返回一组值的子查询——使用ANY谓词查询讲授课号为C5的教师姓名
- 20 返回一组值的子查询——使用IN谓词查询讲授课号为C5的教师姓名
- 21 返回一组值的子查询——使用ALL谓词查询其他系中比计算机系所有教师工资高的教师姓名、工资和所在系
- 22 返回一组值的子查询——使用EXISTS谓词查询讲授课号为C5的教师姓名、系名
- 23 返回一组值的子查询——使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号
- 24 查询年龄不大于19岁或属于计算机系的学生
系列文章中示例数据来源于《SQL Server实验指导(2005版)》一书。大家用自己手头的数据,可以将相关操作与分析过程加以完整重现。
1 指定列或全部列查询——查询S表学生记录
(1) 启动Microsoft SQL Server 2008 R2软件;
(2) 在“对象资源管理器”窗格中,在“数据库”处右键,在弹出的菜单中选择“附加”选项;
(3) 选择需要加以附加的jxsk数据库物理文件,选择定位文件夹“G:\sql\chutianjia sql”并选择对应数据库jxsk的物理文件并选择“确定”按钮,再次选择“确定”即可;
(4) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT*FROM S
GO
(5) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

2 指定列或全部列查询——查询学生姓名与出生年份
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN,YEAR(GETDATE())-AGE AS 出生年份 FROM S
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

3 按条件查询及模糊查询——查询成绩不及格学生学号
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT DISTINCT SNO FROM SC
WHERE SCORE<60
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

4 按条件查询及模糊查询——查询20-23岁间学生姓名、系名、年龄
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN,DEPT,AGE FROM S
WHERE AGE BETWEEN 20 AND 23
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

5 按条件查询及模糊查询——查询姓“李”学生姓名、学号、性别
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN,SNO,SEX FROM S
WHERE SN LIKE'李%'
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

6 按条件查询及模糊查询——查询名字第二字为“明”的男生姓名、系名
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN AS 姓名,DEPT AS 系名 FROM S
WHERE SN LIKE '_明%' AND SEX='男'
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

7 对查询结果排序——查询信息、计算机系学生姓名、系名,并系名升序、姓名降序
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN AS 姓名,DEPT AS 系名 FROM S
WHERE DEPT IN('信息','计算机')
ORDER BY DEPT, SN DESC
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

8 对查询结果排序——查询课程号C2的学生学号、课程号、成绩,按成绩降序
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
SELECT SNO AS 学号, CNO AS 课号,SCORE AS 成绩 FROM SC
WHERE CNO='C2' AND SCORE IS NOT NULL
ORDER BY SCORE DESC
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

9 使用聚集函数的查询——查询计算机系学生人数
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT COUNT(*) AS 计算机系人数 FROM S
WHERE DEPT='计算机'
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

10 使用聚集函数的查询——查询选修微机原理学生人数、平均成绩、最高成绩
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT COUNT(*) AS 人数, AVG(SCORE)AS 平均分数,
MAX (SCORE) AS 最高分数
FROM C,SC
WHERE CN='微机原理'AND C.CNO=SC.CNO
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

11 分组统计查询——查询各课程号及选课人数
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT CNO AS 课程号, COUNT (SNO) AS 人数
FROM SC
GROUP BY CNO
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图 。

12 分组统计查询——查询选修两门以上课程学生姓名和平均成绩
(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT SN AS 姓名,AVG(SCORE) AS 平均成绩
from S,SC
WHERE S.SNO=SC.SNO
GROUP BY S.SN HAVING COUNT(*)>2
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

13 连接查询——查询选课学生学号、姓名、选课名称及成绩
(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT S.SNO,SN,CN,SCORE FROM S,C,SC
WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

14 连接查询——查询课程号、任课教师姓名及选课人数
(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT C.CNO,TN,COUNT(SC.SNO) AS 学生人数
FROM T,TC,C,SC
WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO AND C.CNO=SC.CNO
GROUP BY C.CNO,T.TN
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

15 自身连接——查询比“刘伟”工资高的教师姓名、工资和刘伟的工资
(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT X.TN AS 姓名,X.SAL AS 教师工资,Y.SAL AS 刘伟工资
FROM T AS X,T AS Y
WHERE X.SAL>Y.SAL AND Y.TN='刘伟'
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

16 自身连接——查询同时选修“课程设计”和“微机原理”学生姓名、系名
(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT DISTINCT (SN) AS 姓名,DEPT AS 系名
FROM C AS C1,C AS C2,SC AS SC1, SC AS SC2,S
WHERE C1.CNO=SC1.CNO AND C2.CNO=SC2.CNO AND C1.CN='程序设计' AND C2.CN='微机原理' AND SC1.SNO=SC2.SNO AND SC1.SNO=S.SNO
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

17 外连接——查询学生学号、姓名、选课名称及成绩
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT S.SNO,SN,CN,SCORE FROM S
LEFT OUTER JOIN SC ON S.SNO=SC.SNO
LEFT OUTER JOIN C ON C.CNO=SC.CNO
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

18 返回一个值的子查询
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT TNO,TN,PROF FROM T
WHERE PROF=(SELECT PROF FROM T WHERE TN='刘伟')
GO
(3) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

19 返回一组值的子查询——使用ANY谓词查询讲授课号为C5的教师姓名
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT TN FROM T
WHERE TNO=ANY(SELECT TNO FROM TC WHERE CNO='C5')
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

20 返回一组值的子查询——使用IN谓词查询讲授课号为C5的教师姓名
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT TN FROM T
WHERE TNO IN (SELECT TNO FROM TC WHERE CNO='C5')
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

21 返回一组值的子查询——使用ALL谓词查询其他系中比计算机系所有教师工资高的教师姓名、工资和所在系
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT TN,SAL,DEPT FROM T
WHERE SAL>ALL(SELECT SAL FROM T WHERE DEPT='计算机')AND (DEPT <>'计算机')
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

22 返回一组值的子查询——使用EXISTS谓词查询讲授课号为C5的教师姓名、系名
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT TN,DEPT FROM T
WHERE NOT EXISTS(SELECT*FROM TC WHERE TNO=T.TNO AND CNO='C5')
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

23 返回一组值的子查询——使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT DISTINCT SNO FROM SC SCX
WHERE NOT EXISTS(SELECT*FROM SC SCY WHERE SCY.SNO='S2'AND NOT EXISTS (SELECT*FROM SC SCZ WHERE SCZ.SNO=SCX.SNO AND SCZ.CNO=SCY.CNO))
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

24 查询年龄不大于19岁或属于计算机系的学生
(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:
USE jxsk
GO
SELECT*FROM S WHERE DEPT='计算机'
UNION
SELECT*FROM S WHERE AGE<=19
GO
(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图。

至此,大功告成。
SQL Server实战四:查询数据库的数据的更多相关文章
- sql server操作2:查询数据库语句大全【转】
注:以下操作均建立在上篇文章sql Server操作1的数据基础之上 一.实验目的 熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询 二.实验内容和要求 使用SQL查询分析器查询数据,练 ...
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步
Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
其实本来只想找一个方法能查询一下 数据库 的大小,没想到这个方法还能查询数据库中 各个数据表 的大小,嗯,挺好玩的,记录一下. MSDN资料:https://msdn.microsoft.com/zh ...
- SQL server 使用触发器跨数据库备份数据
create database TriggerTest create table transInfo2 --交易信息表 ( cardID ) not null, --卡号 transType ) no ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- 基于Sql Server 2008的分布式数据库的实践(四)
原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create ...
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- 学习如何看懂SQL Server执行计划(一)——数据查询篇
一.数据查询部分 1. 看到执行计划有两种方式,对sql语句按Ctrl+L,或按Ctrl+M打开显示执行计划窗口每次执行sql都会显示出相应的执行计划 2. 执行计划的图表是从右向左看的 3. SQL ...
- SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)
SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...
- MySQL&SQL server&Oracle&Access&PostgreSQL数据库sql注入详解
判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大 ...
随机推荐
- 关于FTP文件传输协议说明,带你了解更详情的文件传输协议
Internet和其他网络上的人与设备之间的通信使用协议进行.您可以说协议定义了对话规则:谁必须在何时发送哪些信息?如果数据没有到达接收者,会发生什么?您如何保护转帐免受错误和犯规?每当我们使用Int ...
- KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信
一.适用于: 本文档使用于KingbaseES V008R006版本. 二.关于SYS_SECURECMDD: sys_securecmdd是KingbaseES集群自带的工具,集群监控.管理集群时通 ...
- KingbaseES V8R6 最老事务阻止vacuum freeze
前言 最近生产环境发生几次由于长事务导致表.库年龄没法回收的情况.我们要规避这种情况的发生,不要等发生了再去强制中断会话连接. 当数据库中存在最老事务版本xmin,那么早于他的快照可以被标记为froz ...
- .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法
前言: 经过前面几大部分的学习,已经掌握了 Emit 的前因后果,今天来详细讲解 Emit 中 IL 的部分内容. 如前文所讲,通过 DynamicMethod(或 MethodBuilder)可获得 ...
- python 处理国家标准行业编码(编码·门类·大类·中类·小类)
进度 今天完整地进行了行业维度的清洗分析,把行业代码根据国家标准清洗出格式为 "编码·门类·大类·中类·小类" 的数据格式 过程 1.先把国家标准编码转化为json数据 2.根 ...
- 关于JDK21控制台字符集编码问题
关于JDK21控制台字符集编码问题 前言: 某日尝试JDK21,idea控制台字符集编码一直乱码,后将idea所有能配置UTF-8的配置都配了一遍,无果,后搜索JDK21字符集编码相关后解决 1.配置 ...
- #对勾函数#洛谷 5695 [NOI2001]反正切函数的应用
题目 问给定的每一个\(a\),是否存在正整数\(b,c\), 使得在满足$$\arctan(\frac{1}{a})=\arctan(\frac{1}{b})+\arctan(\frac{1}{c} ...
- 深入探讨Java面试中内存泄漏:如何识别、预防和解决
引言 在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性.本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别.预防和解决内存泄漏 ...
- 做了5年开源项目,我总结了以下提PR经验!
如何优雅地参与开源贡献,向顶级开源项目提交 PR(Pull Request),如何更好地提交 PR? 针对这些问题和疑惑,我们邀请了 OpenAtom OpenHarmony(以下简称"Op ...
- Python 列表操作指南2
将元组的元素添加到列表中: thislist = ["apple", "banana", "cherry"] thistuple = (&q ...