经过昨天的一次面试,发觉自己SQL水平相当之差。故今天我自己操练了一套SQL题,得到一些提高。以下是练习内容,希望对大家也有所帮助:
问题描述:
为管理岗位业务培训信息,建立3个表:
S (SID,SNAME,SDEPT,SEX,AGE) SID,SNAME,SDEPT,SEX,AGE 分别代表学号、学员姓名、所属部门、学员性别、学员年龄
C (CID,CNAME ) CID,CNAME 分别代表课程编号、课程名称
SC ( SID,CID,GRADE ) SID,CID,GRADE 分别代表学号、所选修的课程编号、学习成绩
表结构与数据见Data4SqlTest1.sql
要求实现如下5个处理:
1. 使用标准SQL嵌套语句查询选修课程名称为“英语”的学员学号和姓名
2. 使用标准SQL Join语句查询选修课程名称为“英语”的学员学号和姓名
3. 使用标准SQL语句查询不选修“数学”课程的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过3门的学员学号和所属单位
1. 使用标准SQL嵌套语句查询选修课程名称为“英语”的学员学号和姓名
SELECT SNAME,SDEPT FROM S
WHERE SID IN(
SELECT SID FROM C,SC
WHERE C.CID=SC.CID
AND CNAME='英语')
2. 使用标准SQL Join语句查询选修课程名称为“英语”的学员学号和姓名
SELECT SNAME,SDEPT FROM S
JOIN SC ON S.SID=SC.SID JOIN C ON C.CID=SC.CID
WHERE CNAME='英语'
3. 使用标准SQL语句查询不选修“数学”课程的学员姓名和所属单位
select SNAME,SDEPT
from S
where SID not in(
select SC.SID
from SC
right join (select S.SID,C.CID from S join C ) as T on SC.SID=T.SID and SC.CID=T.CID join C on T.CID=C.CID
where C.CNAME='数学' and SC.SID is not null
)
或者是:
SELECT SNAME,SDEPT FROM S
WHERE SID NOT IN(
SELECT SID FROM SC
WHERE CID IN (SELECT CID FROM C WHERE CNAME='数学'))
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
select SNAME,SDEPT
from S
where SID in
(select S.SID
from S
inner join SC on S.SID=SC.SID
group by S.SID
having count(CID)=(select count(1) from C)
)
5. 查询选修了课程的学员人数
SELECT 学员人数=COUNT(DISTINCT (SID)) FROM SC
6. 查询选修课程超过3门的学员学号和所属单位
SELECT SNAME,SDEPT FROM S
WHERE SID IN(
SELECT SID FROM SC
GROUP BY SID
HAVING COUNT(DISTINCT (CID))>3)
第一次发博客请多关照 期待大家能对上述题目做更好的解答
分享到:
相关推荐
SQL server 2008
### SQL 查询语言学习笔记 #### 一、基本概念与语法概览 SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准计算机语言。本篇笔记旨在为初学者提供一个全面的基础查询语言指南,涵盖从创建表...
SQL语句通常由一系列关键字组成,比如`SELECT`、`FROM`、`WHERE`、`ORDER BY`等。基本查询语法通常为: ```sql SELECT column1, column2, ... FROM table_name WHERE condition; ``` 其中,`SELECT`用来指定要查询的...
1. **基础语法**:SQL查询语句(SELECT、INSERT、UPDATE、DELETE)、表的创建与管理。 2. **索引与优化**:如何创建和使用索引来提高查询速度,以及查询优化策略。 3. **事务处理**:理解ACID属性,掌握事务的开始、...
### SQL语句个人学习笔记 #### 一、创建表、插入数据、查询数据与表连接 **1. 创建表** 在SQL中,我们通常通过`CREATE TABLE`命令来定义一个新的表,并设定表中的各个字段(列)及其属性。在本笔记中,作者创建了...
比如,你可以使用SQL语句(如CREATE TABLE, ALTER TABLE, DROP TABLE, SELECT等)来实现这些操作。此外,了解索引的使用,特别是在主键上的唯一索引,对于提升查询性能至关重要。主键是标识表中每条记录的唯一标识,...
子查询是一种嵌入在其他SQL语句中的SELECT语句,也被称为嵌套查询。根据返回结果的不同,可以分为单行子查询和多行子查询。在FROM子句中使用子查询时,查询结果会被当作一个临时表来处理,并需要为子查询指定别名。 ...
### Sqlserver2008 学习笔记精要 #### 第一章 SQL Server 基础 ##### 1. T-SQL 语句基础 - **创建数据库**: 使用 `CREATE DATABASE` 语句来创建一个新的数据库。例如: ```sql CREATE DATABASE 新数据库名; ``...
SQL语言基础学习笔记 SQL,全称为“结构化查询语言”(Structured Query Language),是数据库管理系统的核心语言,用于管理和操作关系型数据库。SQL的特点包括: 1. **大小写不敏感**:SQL语句在实际执行时,对大...
sql语句中的精华,简单明了,易于学习,对于自学者非常有好处,值得去下载看看
### SQLServer个人学习笔记知识点概览 #### 一、日期格式转换:`SELECT REPLACE(CONVERT(CHAR(8),GETDATE(),120),'-','')` - **知识点**:使用`CONVERT`函数将当前系统时间`GETDATE()`转换为指定格式的字符串,并...
### SQL语句整理笔记知识点详解 #### 数据库操作 1. **创建数据库**: `CREATE DATABASE Country ON ...以上SQL语句涵盖了数据库的基本操作,包括创建、修改、查询、备份等关键功能,对于学习和掌握SQL语句至关重要。
### SQL语句帮助手册笔记 #### 一、SQL基础概念与用法 ##### 1. 数据统计函数 在SQL查询中,经常会用到各种数据统计函数来处理数据集中的数值,例如: - `AVG()`:计算平均值。 - `COUNT()`:计算行数。 - `MAX()`...
自己学习的笔记--查询计算机系CS男学生学号、姓名和考试成绩 SELECT A.Sno,A.Sname,B.degree FROM student A,sc B WHERE A.Sdept = 'CS' AND A.Ssex = '男' AND A.Sno = B.sno SELECT A.Sno,A.Sname,B.degree FROM ...
这份"SQL学习笔记"涵盖了SQL的基础概念、语法以及高级特性,是学习数据库管理和数据分析的宝贵资料。 1. **SQL基础** - 数据库概念:了解什么是数据库,它的作用以及数据库管理系统(DBMS)如何工作。 - SQL简介...
这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够从基础概念到复杂操作都能熟练掌握。 首先,我们从基础开始。SQL,全称Structured Query Language(结构化...
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
本篇“SQL数据库语言学习笔记”将深入探讨SQL的基本概念、语法和常用操作,帮助你掌握这个强大的工具。 一、SQL简介 SQL起源于1970年代,由IBM的研究员开发,其设计目标是为了解决日益复杂的数据查询和管理问题。...
10. **SQL语句**:SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。它包括数据查询、数据插入、数据更新和数据删除等操作。在Java中,可以通过JDBC(Java Database Connectivity)API来连接...