SQL高级查询.pdf
根据给定的信息,我们可以将知识点概括为以下几个方面: ### 一、数据库的创建与管理 #### 1. 创建数据库 - **数据库名称**: `studydb` - **要求**: - 必须包含主要文件(Primary File)、日志文件(Log File)以及次要文件(Secondary File)。 #### 2. 表的创建 - **学生表** (`student`) - 字段定义: - `stuid`: 学生编号,`varchar(32)`,主键,不允许为空 - `stuname`: 学生姓名,`varchar(20)`,不允许为空 - `age`: 年龄,`int`,允许为空 - `sex`: 性别,`char(2)`,不允许为空,需通过检查约束确保输入正确 - `address`: 地址,`varchar(200)`,允许为空 - **课程表** (`course`) - 字段定义: - `cid`: 课程编号,`int`,主键且自动增长 - `cname`: 课程名称,`varchar(20)`,不允许为空且唯一 - `teacherid`: 教师编号,`int`,不允许为空且作为外键 - **成绩表** (`score`) - 字段定义: - `sid`: 成绩编号,`int`,主键且自动增长 - `cid`: 课程编号,`int`,不允许为空且作为外键 - `mark`: 分数,`float`,不允许为空,需通过检查约束确保分数范围合理 - **教师表** (`teacher`) - 字段定义: - `tid`: 教师编号,`int`,主键且自动增长 - `tname`: 教师姓名,`varchar(20)`,不允许为空 ### 二、数据操作 #### 1. 插入测试数据 - 虽然具体数据未给出,但可以想象这一步骤涉及使用`INSERT INTO`语句来填充上述表格中的信息。 #### 2. 实现高级查询 以下是一些高级查询示例的详细解释: - **查询java课程比C#分数高的学生** - 此查询涉及到对成绩表进行复杂筛选,比较特定课程之间的分数差异。 - **查询平均分成绩大于70分的同学的姓名和平均成绩** - 使用`AVG()`函数计算每位学生的平均成绩,并结合`GROUP BY`子句进行分组处理。 - **查询所有同学的学号、姓名、选课数、总成绩** - 结合使用`COUNT()`和`SUM()`函数来统计每位学生的选课数量及总成绩。 - **查询姓“王”的老师的个数** - 这里需要利用`LIKE`关键字来匹配教师姓名中的特定前缀。 - **查询没有学过java课的学生的学号、姓名** - 可以使用`LEFT JOIN`或`NOT EXISTS`来找出那些没有Java课程成绩的学生。 - **查询学过“C#”课程并且也学过“sql”课程的学生的学号、姓名** - 通过多次`JOIN`操作将多个表关联起来,以获取符合条件的学生信息。 - **查询所有课程的平均分、及格率** - 综合运用`AVG()`函数和条件计数(`COUNT(CASE ... END)`)来计算及格率。 - **查询所有课程成绩小于60分的同学的学号、姓名、性别** - 使用`WHERE`子句筛选出成绩低于60分的学生,并展示相关信息。 - **查询没有学全所有课的同学的学号、姓名、性别** - 可以通过`EXCEPT`操作符来找出那些缺少某些课程成绩的学生。 - **查询至少有一门课与学号为“002”的同学所学相同的同学的学号和姓名** - 这通常涉及到使用`IN`或`EXISTS`来进行条件匹配。 - **查询至少学过学号为“002”同学所有一门课的其他同学学号和姓名** - 需要通过子查询来筛选出特定学生的课程列表,并与其他学生对比。 - **把成绩表中“李庆”老师教的课的成绩都更改为此课程的平均成绩** - 先计算出平均成绩,然后使用`UPDATE`语句更新成绩表。 - **查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名** - 通过比较两个学生所选课程的集合来确定是否完全相同。 - **删除学习“李庆”老师课的成绩表记录** - 使用`DELETE`语句删除指定教师教授课程的成绩记录。 ### 三、规范化 - **代码缩进**和**注释**: 保持代码整洁,增加可读性。 - **建表和建库判断**: 在执行建表和建库操作之前,应先检查这些对象是否已经存在。 - **分离数据库**: 为了提高性能和安全性,数据库应该按照不同的业务需求进行分离。 - **文件提交**: 按照要求提交包含SQL脚本和数据库文件在内的所有必要文件。 以上内容涵盖了SQL高级查询中的关键知识点,包括数据库设计、数据操作语言(DML)的使用以及数据查询技巧等方面。这些技能对于从事数据库管理和开发工作的专业人士来说至关重要。
- wtp10042012-08-21对于初学者很有用。
- 粉丝: 0
- 资源: 75
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Esercizi di informatica!执行计划,metti alla prova!.zip
- Eloquent JavaScript 翻译 - 2ª edição .zip
- Eclipse Paho Java MQTT 客户端库 Paho 是一个 Eclipse IoT 项目 .zip
- disconf 的 Java 应用程序.zip
- cloud.google.com 上使用的 Java 和 Kotlin 代码示例.zip
- 未命名3(3).cpp
- fluent 流体动力学CFD
- Azure Pipelines 文档引用的示例 Java 应用程序.zip
- Apereo Java CAS 客户端.zip
- RAW文件的打开方法与专业处理工具推荐