SQL Server实战四:查询数据库的数据

本文介绍基于Microsoft SQL Server 软件,实现数据库表 中多种数据查询方法的具体操作。

目录

  • [1 指定列或全部列查询------查询S表学生记录](#1 指定列或全部列查询——查询S表学生记录)
  • [2 指定列或全部列查询------查询学生姓名与出生年份](#2 指定列或全部列查询——查询学生姓名与出生年份)
  • [3 按条件查询及模糊查询------查询成绩不及格学生学号](#3 按条件查询及模糊查询——查询成绩不及格学生学号)
  • [4 按条件查询及模糊查询------查询20-23岁间学生姓名、系名、年龄](#4 按条件查询及模糊查询——查询20-23岁间学生姓名、系名、年龄)
  • [5 按条件查询及模糊查询------查询姓"李"学生姓名、学号、性别](#5 按条件查询及模糊查询——查询姓“李”学生姓名、学号、性别)
  • [6 按条件查询及模糊查询------查询名字第二字为"明"的男生姓名、系名](#6 按条件查询及模糊查询——查询名字第二字为“明”的男生姓名、系名)
  • [7 对查询结果排序------查询信息、计算机系学生姓名、系名,并系名升序、姓名降序](#7 对查询结果排序——查询信息、计算机系学生姓名、系名,并系名升序、姓名降序)
  • [8 对查询结果排序------查询课程号C2的学生学号、课程号、成绩,按成绩降序](#8 对查询结果排序——查询课程号C2的学生学号、课程号、成绩,按成绩降序)
  • [9 使用聚集函数的查询------查询计算机系学生人数](#9 使用聚集函数的查询——查询计算机系学生人数)
  • [10 使用聚集函数的查询------查询选修微机原理学生人数、平均成绩、最高成绩](#10 使用聚集函数的查询——查询选修微机原理学生人数、平均成绩、最高成绩)
  • [11 分组统计查询------查询各课程号及选课人数](#11 分组统计查询——查询各课程号及选课人数)
  • [12 分组统计查询------查询选修两门以上课程学生姓名和平均成绩](#12 分组统计查询——查询选修两门以上课程学生姓名和平均成绩)
  • [13 连接查询------查询选课学生学号、姓名、选课名称及成绩](#13 连接查询——查询选课学生学号、姓名、选课名称及成绩)
  • [14 连接查询------查询课程号、任课教师姓名及选课人数](#14 连接查询——查询课程号、任课教师姓名及选课人数)
  • [15 自身连接------查询比"刘伟"工资高的教师姓名、工资和刘伟的工资](#15 自身连接——查询比“刘伟”工资高的教师姓名、工资和刘伟的工资)
  • [16 自身连接------查询同时选修"课程设计"和"微机原理"学生姓名、系名](#16 自身连接——查询同时选修“课程设计”和“微机原理”学生姓名、系名)
  • [17 外连接------查询学生学号、姓名、选课名称及成绩](#17 外连接——查询学生学号、姓名、选课名称及成绩)
  • [18 返回一个值的子查询](#18 返回一个值的子查询)
  • [19 返回一组值的子查询------使用ANY谓词查询讲授课号为C5的教师姓名](#19 返回一组值的子查询——使用ANY谓词查询讲授课号为C5的教师姓名)
  • [20 返回一组值的子查询------使用IN谓词查询讲授课号为C5的教师姓名](#20 返回一组值的子查询——使用IN谓词查询讲授课号为C5的教师姓名)
  • [21 返回一组值的子查询------使用ALL谓词查询其他系中比计算机系所有教师工资高的教师姓名、工资和所在系](#21 返回一组值的子查询——使用ALL谓词查询其他系中比计算机系所有教师工资高的教师姓名、工资和所在系)
  • [22 返回一组值的子查询------使用EXISTS谓词查询讲授课号为C5的教师姓名、系名](#22 返回一组值的子查询——使用EXISTS谓词查询讲授课号为C5的教师姓名、系名)
  • [23 返回一组值的子查询------使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号](#23 返回一组值的子查询——使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号)
  • [24 查询年龄不大于19岁或属于计算机系的学生](#24 查询年龄不大于19岁或属于计算机系的学生)

系列文章中示例数据来源于《SQL Server实验指导(2005版)》一书。大家用自己手头的数据,可以将相关操作与分析过程加以完整重现。

1 指定列或全部列查询------查询S表学生记录

(1) 启动Microsoft SQL Server 2008 R2软件;

(2) 在"对象资源管理器"窗格中,在"数据库"处右键,在弹出的菜单中选择"附加"选项;

(3) 选择需要加以附加的jxsk数据库物理文件,选择定位文件夹"G:\sql\chutianjia sql"并选择对应数据库jxsk的物理文件并选择"确定"按钮,再次选择"确定"即可;

(4) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

sql 复制代码
USE jxsk
GO
SELECT*FROM S
GO

(5) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图;

2 指定列或全部列查询------查询学生姓名与出生年份

(1) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

sql 复制代码
USE jxsk
GO
SELECT SN,YEAR(GETDATE())-AGE AS 出生年份 FROM S
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图;

3 按条件查询及模糊查询------查询成绩不及格学生学号

(1) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

sql 复制代码
USE jxsk
GO
SELECT DISTINCT  SNO FROM SC
WHERE SCORE<60
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图;

4 按条件查询及模糊查询------查询20-23岁间学生姓名、系名、年龄

(1) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

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语句:

sql 复制代码
USE jxsk
GO
SELECT SN,SNO,SEX FROM S
WHERE SN LIKE'李%'
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图;

6 按条件查询及模糊查询------查询名字第二字为"明"的男生姓名、系名

(1) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

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语句:

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语句:

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语句:

sql 复制代码
USE jxsk
GO
SELECT COUNT(*) AS 计算机系人数 FROM S
WHERE DEPT='计算机'
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图;

10 使用聚集函数的查询------查询选修微机原理学生人数、平均成绩、最高成绩

(1) 单击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

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语句:

sql 复制代码
USE jxsk
GO
SELECT CNO AS 课程号, COUNT (SNO) AS 人数
FROM SC
GROUP BY CNO
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图 。

12 分组统计查询------查询选修两门以上课程学生姓名和平均成绩

(1) 点击屏幕上方 "工具栏"菜单中的"新建查询"按钮,打开"查询编辑器"窗口,并在"查询编辑器"窗口中输入以下T-SQL语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

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语句:

sql 复制代码
USE jxsk
GO
SELECT*FROM S WHERE DEPT='计算机'
UNION
SELECT*FROM S WHERE AGE<=19
GO

(2) 单击 "工具栏"中的"执行(x)"按钮,即可执行上述T-SQL语句,如下图。

至此,大功告成。

相关推荐
PGCCC15 分钟前
【PGCCC】postgresql 缓存池并发设计
数据库·缓存·postgresql
小爬虫程序猿22 分钟前
如何利用Python解析API返回的数据结构?
数据结构·数据库·python
wowocpp1 小时前
查看 磁盘文件系统格式 linux ubuntu blkid ext4
linux·数据库·ubuntu
Ai 编码助手7 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员7 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle7 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻7 小时前
MySQL排序查询
数据库·mysql
萧鼎7 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^7 小时前
数据库连接池的创建
java·开发语言·数据库
荒川之神7 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle