数据库的查询
--1.查询pxscj中表XSB的所有数据(同视图的查询,⼀个意思)
SELECT *
FROM XSB
GO
--2.查询XSB表中的各个同学的姓名,专业和总学分
SELECT 姓名,专业,总学分
FROM XSB
--3.查询XSB表中计算机专业同学的学号,姓名和总学分,查询表中XSB中所有的列
SELECT 学号,姓名,总学分
FROM XSB
WHERE 专业='计算机'
GO
SELECT *
FROM XSB
定义列别名
--4.查询表XSB中计算机系同学的学号,姓名和总学分,结果中个列的标题分别指定为number,name和,mark。USE PXSCJ
GO
SELECT 学号 AS number,姓名 AS name ,总学分 AS mark
FROM XSB
WHERE 专业='计算机'
--将上述AS 换成= 或者(空格)都可以。⽐如:
SELECT number=学号,name=姓名,mark=总学分
FROM XSB
WHERE 专业='计算机'
--当⾃定义的列标题中含有空格的时候,必须使⽤''(引号)括起来,⽐如:
SELECT 'student number '=学号,姓名 AS 'student name','mark'=总学分
FROM XSB
WHERE 专业='计算机'
USE PXSCJ
GO
--5.替换查询结果中的数据,要⽤CASE表达式
--查询XSB表中计算机系个同学的学号,姓名和总学分,对其总学分按以下规则进⾏替换:
-
-若总学分为空值,则替换为“尚未选课”;若总学分⼩于,则替换为不及格;
--若总学分在和之间,则替换为合格;若总学分⼤于,则为优秀。列标题改为等级。
SELECT 学号,姓名,等级=
WHEN 总学分 IS NULL THEN '尚未选课'
WHEN 总学分 <50 THEN '不及格'
WHEN 总学分>=50 and 总学分<=52 THEN '合格'
ELSE '优秀'
END
FROM XSB
WHERE 专业='计算机'
--6.计算列值,按分计算并显⽰学号为的学⽣的成绩情况。
SELECT 学号,课程号,成绩=成绩*1.20
FROM CJB
WHERE 学号='081101'
--7.消除结果重复⾏,对PXSCJ数据库的表XSB只选择专业和总学分,消除结果集中的重复⾏。SELECT DISTINCT 专业,总学分
FROM XSB
--8.限制结果集返回⾏数。对PXSCJ数据库的表的XSB选择姓名,专业,和总学分,返回结果的前六⾏。SELECT TOP 6 姓名,专业,总学分
FROM XSB
聚合函数
--若⼀个SELECT⾥只有⼀个GROUP BY则这个聚合函数对所有列起作⽤,若⽆,则只产⽣⼀⾏作为结果。USE PXSCJ
GOdistinct查询
--9.求选修课程的学⽣的平时成绩
SELECT AVG(成绩) AS '课程平均成绩'
FROM CJB
WHERE 课程号='101'
--10.求学号为的同学所学课程的总成绩
SELECT SUM(成绩) AS '课程总成绩'
FROM CJB
WHERE 学号='081101'
--11.求选修课程的学⽣的最⾼分和最低分。
SELECT MAX(成绩) AS '课程的最⾼分',MIN(成绩) AS '课程的最低分'
FROM CJB
WHERE 课程号='101'
--12.求学⽣总数
SELECT COUNT(*) AS '学⽣总数'
--13.统计备注不为空的学⽣数
SELECT COUNT(备注) AS '备注不为空的学⽣数'
FROM XSB
--14.和.统计在哪个学分在分以上的⼈数
SELECT COUNT(总学分) AS '50分以上的⼈数'
FROM XSB
WHERE 总学分>50
-
-*15.求选修了课程的学⽣总数
SELECT COUNT(DISTINCT 学号)
FROM CJB
--16.查询同学的情况
SELECT 姓名,学号,总学分
FROM XSB
WHERE 学号='081101'
--18.XSB中通信专业总学分⼤于等于的同学的情况
SELECT *
FROM XSB
WHERE 专业='通信⼯程' AND 总学分>=42
-
-19.查询XSB⾥姓王且单名的学⽣情况
SELECT *
FROM XSB
WHERE 姓名 LIKE '王_'
--20.查询XSB中学号到户第三个数字为,且倒数第⼀个数字在~5的学⽣的学号,姓名,专业。SELECT 学号,姓名,专业
FROM XSB
WHERE 学号 LIKE '%1_[12345]'
--21.查询XSB中名字包含下划线的学⽣学号和姓名
SELECT 学号,姓名
FROM XSB
WHERE 学号 LIKE '%#_%' ESCAPE '#'
--22.查询XSB中不在年出⽣的学⽣的情况
SELECT 学号,姓名,专业,出⽣⽇期
FROM XSB
WHERE 出⽣⽇期 NOT BETWEEN '1989-1-1' and '1989-12-31'
--23.查询XSB中专业为计算机,通信,或⽆线电的学⽣情况
SELECT *
WHERE 专业 IN ('计算机','通信⼯程','⽆线电')
--等价
SELECT *
FROM XSB
WHERE 专业 = '计算机' or '通信⼯程' or '⽆线电'
USE PXSCJ
GO
--24.空值⽐较。查询总学分尚不确定的学⽣
SELECT *
FROM XSB
WHERE 总学分 IS NULL
⼦查询--25.查选修了课程号为的课程的学⽣的情况
SELECT *
FROM XSB
WHERE 学号 IN
( SELECT 学号
FROM CJB
WHERE 课程号='206')
--26.查为选修离散数学的学⽣的情况
SELECT*
FROM XSB
WHERE 学号 NOT IN
(SELECT 学号
FROM CJB
WHERE 课程号 IN
(SELECT 课程号
FROM KCB
WHERE 课程名='离散数学'
)
)
--27.查选修了离散数学的学⽣的学号
SELECT 学号
FROM CJB
WHERE 课程号=
(SELECT 课程号
FROM KCB
--28.查⽐所有计算机系学⽣年龄都⼤的学⽣
SELECT *
FROM XSB
WHERE 出⽣⽇期<ALL
(SELECT 出⽣⽇期
FROM XSB
WHERE 专业='计算机'
)
--29.查选修课程的学⽣的姓名
SELECT 姓名
FROM XSB
WHERE EXISTS
(SELECT *
FROM CJB
WHERE 学号=XSB.学号 AND 课程号='206')
--30.查选修了全部课程的同学的姓名
SELECT 姓名
FROM XSB
WHERE NOT EXISTS
(SELECT *
FROM KCB
WHERE NOT EXISTS
(SELECT *
FROM CJB
WHERE 学号=XSB.学号 AND 课程号=KCB.课程号))
--31.从表XSB中查所有⼥学⽣的姓名学号及其号学⽣的年龄差距SELECT 学号,姓名,YEAR(出⽣⽇期)-YEAR(
(SELECT 出⽣⽇期
FROM XSB
WHERE 学号='081101')
) AS 年龄差距
FROM XSB
WHERE 性别=0
USE PXSCJ

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。