当前位置: 首页 > article >正文

学生课程数据库综合操作(SQL)

1.学生,课程,选课关系表

Student
列名说明数据类型约束
Sno学号字符(8)主键
Sname姓名字符(12)非空,唯一
Ssex性别字符(2)取“男”或“女”,默认“男”
Sage年龄整型取值15~36,默认22
Sdept院系字符(20)默认“计算机系”
Course
列名说明数据类型约束
Cno课程号字符(8)主键
Cname课程名字符(8)非空
Teacher教师名字符(8)唯一
SC
列名说明数据类型约束
Sno学号字符(8)主键,参照Student表,级联更新与删除
Cno课程号字符(8)主键,参照Course表,级联更新,拒绝删除
Grade教师名短整型取值0~100

2.SQL语句实现表

//数据库试题练习sct
CREATE TABLE Student//创建学生表
(
	Sno CHAR(8) PRIMARY KEY,
	Sname CHAR(12) UNIQUE NOT NULL,
	Ssex CHAR(2) CHECK(Ssex in('男', '女')) DEFAULT '男',//在男和女中选一个
	Sage INT CHECK(Sage >= 15 AND Sage <= 36) DEFAULT 22,
	Sdept CHAR(20) DEFAULT "CS"
);


//数据库试题sct
CREATE TABLE Course//创建课程表
(
	Cno CHAR(8) PRIMARY KEY,
	Cname CHAR(8) NOT NULL,
	Teacher CHAR(10) UNIQUE
);



//创建学生选课表
CREATE TABLE SC(
	Sno CHAR(8),
	Cno CHAR(8),
	PRIMARY KEY(Sno, Cno),//学生号与课程号一起作为主码
	Grade SMALLINT CHECK(Grade >= 0 AND Grade <= 100),
	FOREIGN KEY(Sno) REFERENCES Student(Sno) ON UPDATE CASCADE ON DELETE RESTRICT,//级联更新与删除
	FOREIGN KEY(Cno) REFERENCES Course(Cno) ON UPDATE CASCADE ON DELETE NO ACTION//级联更新,拒绝删除
);

3.插入学生,课程,选课信息


//插入学生表信息
INSERT INTO Student(Sno, Sname, Ssex, Sage, Sdept)
VALUES
("20241101", "李勇", "男", 20, "CS"),
("20241102", "刘晨", "女", 19, "CS"),
("20241103", "王敏", "女", 18, "MA"),
("20241104", "张立", "男", 19, "IS");




INSERT INTO Course(Cno, Cname, Teacher)//插入课程表的信息
VALUES
("1", "数据库", "张一"),//注意老师姓名唯一,不可重复
("2", "数学", "张九"),
("3", "信息系统", "张三"),
("4", "操作系统", "张八"),
("5", "数据结构", "张四"),
("6", "数据处理", "张二"),
("7", "PASCAL语言", "张六"),
("8","DB_MATH","李一");


//插入学生选课信息
INSERT INTO Sc(Sno, Cno, Grade)
VALUES
("20241101", "1", 92),//注意学生号相同不可选多门课程
("20241103", "2", 85),
("20241104", "3", 88),
("20241103", "4", 90),
("20241102", "3", 80);

4.检索课程名以"DB_"开头,且倒数第3个字符为 k的课程的详细情况


//课程名以"DB_"开头,且倒数第3个字符为 k的课程的详细情况
SELECT *
FROM Course
WHERE Cname LIKE "DB_%A__" ESCAPE "/";

 

5.删除选课成绩在90分以下的学生记录

DELETE FROM Student
WHERE SNO IN
(
	SELECT SNO
	FROM SC
	WHERE GRADE < 90
);

显示不可删除 

6.把“数学”课程成绩提高8%

UPDATE SC
SET Grade = Grade * 1.08
WHERE Cno IN
(
	SELECT Cno
	FROM Course
	WHERE Cname = "数学"
);

课程号2为数学,85*1.08=91.8~~92 

 

后续会补充,希望大家点赞关注我! 

 

 

 

 

 

 

 

 

 


http://www.kler.cn/a/274463.html

相关文章:

  • PC寄存器(Program Counter Register) jvm
  • Dhatim FastExcel 读写 Excel 文件
  • AlipayHK支付宝HK接入-商户收款(PHP)
  • 详细解读TISAX认证的意义
  • upload-labs靶场保姆级攻略
  • 深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
  • android 怎么自定义view
  • 【博士每天一篇文献-综述】Brain network communication_ concepts, models and applications
  • vue3实现输入框短信验证码功能---全网始祖
  • 【华为OD机试】绘图机器【C卷|100分】
  • 虚拟游戏理财 - 华为OD统一考试(C卷)
  • CVE-2019-5782:kArgumentsLengthType 设置偏小导致优化阶段可以错误的去除 CheckBound 节点
  • 【ESP32 IDF】ESPTIMER定时器
  • Java八股文(RabbitMQ)
  • mysql事务和行锁
  • 串口123
  • 《算法王晓东》最小重量机器设计问题
  • JavaSE(上)-Day6
  • 基于openresty构建运维工具链实践
  • Elasticsearch常用语句
  • 系统架构设计师笔记第37期:数据访问层设计
  • 保姆级docker 容器安装部署 MySQL:5.7主从复制
  • 从零开始写 Docker(六)---实现 mydocker run -v 支持数据卷挂载
  • 搭建项目后台系统基础架构
  • 【MySQL】MySQL视图
  • c++ 递增的5位数