SQL Server 数据查询

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: SQL Server 数据查询

前言

首先在SQL Server 2008 中新建一个数据库chaxun.在库中建三个表,结构如下表所示,并且录入数据.

1.

CREATE DATABASE  chaxun
ON PRIMARY                     
(NAME=chaxun_data,              
 FILENAME='D:\software\chaxun.mdf',
 SIZE=10MB,
 MAXSIZE=UNLIMITED,           
 FILEGROWTH=10% 
)
 LOG ON 
 (NAME=chaxun_log,
  FILENAME='D:\software\chaxun.ldf',
  SIZE=1MB,
  MAXSIZE=5MB,
  FILEGROWTH=1MB
 )
 use chaxun 
  create table KC
(
c_ID char(3) primary key,
c_Name char(10) not null,
c_Credit int
)
create table XS
(
s_ID char(4) primary key,
s_Name char(6) not null,
s_department char(20) not null,
s_telephoe char(11)
)
create table XS_KC
(
s_ID char(4) foreign key references XS(s_ID),
c_ID char(3) foreign key references KC(c_ID),
score int,
primary key(s_ID,c_ID)
)

KC表数据:

insert into KC values('101','语文',4)
insert into KC values('102','数学',2)
insert into KC values('103','英语',3)
insert into KC values('104','体育',1)

XS表数据:

insert into XS values('1001','杨颖','信息技术系','2346666')
insert into XS values('1002','王丽','信息技术系','2346666')
insert into XS values('1003','张亮','经管系','2315555')
insert into XS values('1004','刘强','会计系','2361111')

XS_KC表数据:

insert into XS_KC values('1001','101',89)
insert into XS_KC values('1001','102',97)
insert into XS_KC values('1001','103', 86)
insert into XS_KC values('1002', '101',56)
insert into XS_KC values('1003', '102',55)

2.

(1)在KC表中查询学分低于三分的课程信息,并按课程号升序排列

select * from KC
where C_Credit<3 order by c_ID ASC

(2)在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列

select s_ID,AVG(score) 平均分 from XS_KC 
group by s_ID
order by AVG(score) DESC

(3)在XS_KC表中查询至少选修了2门课程的学生学号和姓名

select  s_Name,XS.s_ID from XS_KC,XS  where XS.s_ID=XS_KC.s_ID
group by XS.s_ID,s_Name having COUNT(XS_KC.c_ID)>=2

(4)查询成绩不及格的学生的基本信息

方法1

select XS.* from XS,XS_KC
where XS.s_ID=XS_KC.s_ID and score<60

方法2(子查询)

select * from XS where s_ID in (select s_ID from XS_KC where score<60)

(5)分别用子查询和连接查询,查询101号课程不及格的基本信息

子查询

select * from XS where s_ID in(select distinct s_ID from XS_KC
where XS_KC.c_ID='101' and score <60)

连接查询

select XS.* from XS join XS_KC on XS.s_ID=XS_KC.s_ID  
where XS_KC.c_ID='101' and score <60

(6)在XS表中查询住在同一宿舍的学生信息,即其所住宿舍电话相同

select * from XS where s_telephoe in 
(select  s_telephoe from XS group by s_telephoe having COUNT(s_telephoe)>=2)

(7)查询XS表中的所有系名

select distinct s_department from XS

(8)查询有多少名同学选修了课程

select COUNT(distinct s_ID ) 已选课人数 from XS_KC

(9)查询与杨颖同在一个系的同学姓名

方法1

select x.s_Name from XS as x,XS as y
where x.s_department=y.s_department and y.s_Name='杨颖' and x.s_Name<>'杨颖'

方法2

select s_Name from XS where s_department=
(select s_department from XS where s_Name='杨颖') and s_Name <>'杨颖'

(10)查询选修了课程的学生的姓名、课程名与成绩

方法1

select s_Name,c_Name,score from XS,KC,XS_KC
where XS.s_ID=XS_KC.s_ID and KC.c_ID=XS_KC.c_ID

方法2

select s_Name,c_Name,score from XS join XS_KC on XS.s_ID=XS_KC.s_ID
join KC on KC.c_ID=XS_KC.c_ID

(11)修改经管系电话号码为3615555

update XS set s_telephoe='3615555' where s_department='经管系'

(12)统计每门课程的选课人数和最高分

select c_ID,COUNT(s_ID) 选课人数,MAX(score) 最高分 from XS_KC group by c_ID

(13)统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列

select s_ID,COUNT(c_ID) 选课门数,SUM(score) 总成绩 from XS_KC
group by s_ID order by COUNT(c_ID) DESC

(14)查询有多少名学生没有选课

select COUNT(s_ID) 未选课人数 from XS where s_ID not in 
(select s_ID from XS_KC)


总结

今天的数据库学习内容就到这里啦,如果对友友们有帮助的话,记得点赞收藏博客,关注后续的数据库学习内容哦~👻👻👻

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
SQL 数据管理 数据库
SQL语句实例教程:掌握数据查询、更新与管理的关键技巧
SQL(Structured Query Language,结构化查询语言)是数据库管理和操作的核心工具
|
3月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
68 0
|
5月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
7月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
183 13
|
7月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
109 9
|
7月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
93 6
|
6月前
|
SQL 关系型数据库 数据库
|
6月前
|
SQL 关系型数据库 数据挖掘
SQL 基础入门简直太重要啦!从零开始,带你轻松掌握数据查询与操作,开启数据世界大门!
【8月更文挑战第31天】在数字化时代,数据无处不在,而 SQL(Structured Query Language)则是开启数据宝藏的关键钥匙。无论你是编程新手还是数据处理爱好者,掌握 SQL 都能帮助你轻松提取和分析信息。SQL 简洁而强大,像一位魔法师,能从庞大数据库中迅速找到所需数据。从查询、条件筛选到排序、分组,SQL 功能多样,还能插入、更新和删除数据,助你在数据海洋中畅游无阻。
62 0
|
7月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
588 1
|
6月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
604 0