一周MySQL入门:部门、班级与学生数据表设计与查询
需积分: 0 22 浏览量
更新于2024-08-05
收藏 5KB MD 举报
在这个MySQL教程中,【韩顺平讲MySQL】针对零基础学员设计了针对数据库系统的基础操作练习,具体围绕如何在一周内掌握MySQL。本次作业涉及到的内容是创建和管理关于学校系、班级和学生的数据表,以及执行基本的SQL语句操作。
首先,我们需要理解几个关键概念:
1. 主外键:用来维护两个表之间的关联,确保数据的一致性。在这些表中,`class`表的`classid`和`student`表的`studentid`将作为主键,而`deptname`在`department`表中可能是外键,用于关联不同表之间的数据。
2. 唯一约束(UNIQUE NOT NULL):在`department`表的`deptname`字段上应用,确保系名的唯一性且不允许为空。
3. 非空约束(NOT NULL):在`student`表的`name`字段上,保证学生姓名不能为NULL。
接下来是具体的SQL语句操作:
创建表
- `department`表用于存储系的信息,包括系号(`departmentid`)、系名(`deptname`),使用`UNIQUE NOT NULL`约束确保系名的独特性。
```sql
CREATE TABLE department(
departmentid VARCHAR(32) PRIMARY KEY,
deptname VARCHAR(32) UNIQUE NOT NULL
);
```
- `class`表用于存储班级信息,包含班号(`classid`)、专业名(`subject`)、系名(`deptname`)、入学年份(`enrolltime`)和人数(`num`)。其中,`subject`和`deptname`字段要求非空。
```sql
CREATE TABLE class(
classid INT PRIMARY KEY,
subject VARCHAR(32) NOT NULL DEFAULT '',
deptname VARCHAR(32) NOT NULL,
enrolltime YEAR,
num INT
);
```
- `student`表存储学生信息,包括学号(`studentid`)、姓名(`name`)、年龄(`age`)和班号(`classid`),姓名同样需要非空约束。
```sql
CREATE TABLE student(
studentid INT PRIMARY KEY,
name VARCHAR(32) NOT NULL,
age INT,
classid INT,
FOREIGN KEY (classid) REFERENCES class(classid)
);
```
插入数据
提供了系、班级和学生的基本数据,使用`INSERT INTO`语句插入到相应的表中。
查询功能
- 找出所有姓李的学生:使用`LIKE`关键字配合`%`通配符匹配以“李”开头的名字。
```sql
SELECT * FROM student WHERE name LIKE '李%';
```
- 列出所有开设超过1个专业的系的名字:通过联接多个表并计算专业数量来实现。
```sql
SELECT d.deptname
FROM department d
JOIN (
SELECT deptname, COUNT(*) as pro_count
FROM class
GROUP BY deptname
HAVING COUNT(*) > 1
) c ON d.deptname = c.deptname;
```
- 列出人数大于等于30的系的编号和名字:直接在`class`表中筛选。
```sql
SELECT departmentid, deptname
FROM class
WHERE num >= 30;
```
- 更新学生信息:当物理系增加时,可以使用`ALTER TABLE`语句添加新记录,同时处理张三退学的情况,可能涉及删除或更新学生表中的记录。
```sql
ALTER TABLE department ADD (departmentid VARCHAR(32) VALUES ('0065'));
-- 张三退学
DELETE FROM student WHERE studentid = 8101;
```
通过这个实践,学员不仅能够学习如何创建和管理数据库,还能掌握SQL语句的基本操作,包括数据插入、查询和表结构的调整。
2021-11-09 上传
2019-07-23 上传
2023-08-19 上传
2023-09-20 上传
2023-08-19 上传
2023-04-30 上传
2023-11-08 上传
2023-09-05 上传
一只可爱狗勾
- 粉丝: 365
- 资源: 2
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践