数据库实践:SQL创建与查询
需积分: 0 90 浏览量
更新于2024-09-19
收藏 75KB DOC 举报
"数据库练习,包括创建数据库、创建表、数据录入、SQL查询等实践操作。"
在这份数据库练习中,我们关注的核心知识点是数据库管理和SQL语言的应用。首先,我们需要了解如何使用SQL语句来创建数据库和表。例如,创建名为“数据库练习”的数据库可以使用以下语句:
```sql
CREATE DATABASE 数据库练习;
```
然后,我们需要在该数据库中创建“学生”、“课程”和“成绩”三张表。每张表应包含相应的字段,并根据描述设定数据类型和完整性约束。例如,“学生”表的创建语句可能如下:
```sql
CREATE TABLE 学生 (
学号 INT PRIMARY KEY,
姓名 VARCHAR(10),
性别 CHAR(1),
年龄 INT,
所在系 VARCHAR(20)
);
```
“课程”表和“成绩”表的创建方式类似,需要确保主键和外键的设置正确,以便维护数据的一致性。例如,“成绩”表中的“学号”和“课号”字段应作为外键,引用“学生”和“课程”表的主键。
接下来是数据录入。我们可以使用`INSERT INTO`语句将给定的数据插入到相应的表中。例如,插入“学生”表的首条记录:
```sql
INSERT INTO 学生 (学号, 姓名, 性别, 年龄, 所在系)
VALUES ('9512101', '李勇', '男', 19, '计算机系');
```
对于查询部分,我们需要利用SQL的聚合函数(如COUNT()、MAX())和连接操作来完成各种复杂的查询。以下是一些示例查询的SQL实现:
4.1 统计每门课程的修课人数和考试最高分:
```sql
SELECT 课号, COUNT(*) AS 修课人数, MAX(成绩) AS 最高分
FROM 成绩
GROUP BY 课号;
```
4.2 查询修课门数超过2门的学生的平均成绩和选课门数:
```sql
SELECT 学号, AVG(成绩) AS 平均成绩, COUNT(DISTINCT 课号) AS 选课门数
FROM 成绩
GROUP BY 学号
HAVING COUNT(DISTINCT 课号) > 2;
```
4.3 查询计算机系修了“数据库基础”课程的学生的姓名、性别和成绩:
```sql
SELECT s.姓名, s.性别, g.成绩
FROM 学生 s
JOIN 成绩 g ON s.学号 = g.学号
WHERE s.所在系 = '计算机系' AND g.课号 = 'c04';
```
4.4 查询哪些学生合选了一门课程,列出所选课程的学生学号和课程号:
```sql
SELECT g1.学号, g1.课号
FROM 成绩 g1
JOIN 成绩 g2 ON g1.课号 = g2.课号 AND g1.学号 <> g2.学号;
```
4.5 查询选修了C01号课程的学生的姓名和所在系:
```sql
SELECT s.姓名, s.所在系
FROM 学生 s
JOIN 成绩 g ON s.学号 = g.学号
WHERE g.课号 = 'c01';
```
4.6 查询'VB'课程考试成绩前三名的学生的学号、姓名、所在系:
```sql
SELECT s.学号, s.姓名, s.所在系
FROM 学生 s
JOIN 成绩 g ON s.学号 = g.学号
WHERE g.课号 = 'c02'
ORDER BY g.成绩 DESC
LIMIT 3;
```
4.7 删除信息系修课成绩小于60的学生记录,可以使用`DELETE`语句配合子查询:
```sql
DELETE FROM 成绩
WHERE 学号 IN (
SELECT g.学号
FROM 学生 s
JOIN 成绩 g ON s.学号 = g.学号
WHERE s.所在系 = '信息系' AND g.成绩 < 60
);
```
这个练习涵盖了数据库设计、数据录入和SQL查询的各个方面,是学习和检验数据库操作技能的好素材。通过这些练习,不仅可以熟悉SQL的基本语法,还能掌握如何处理实际数据和进行复杂查询。
2023-04-25 上传
2013-05-01 上传
208 浏览量
2024-08-20 上传
2023-06-08 上传
2023-09-13 上传
2023-08-27 上传
2024-06-06 上传
2023-04-14 上传
xinxinnatixp
- 粉丝: 0
- 资源: 13
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析