本实验采用SQLite数据库完成。由于sqlite不完全支持sql标准,因此我采用python3来模拟一部分函数定义和存储过程。
cd 到桌面,然后运行(按要求学号后三位+db即可)代码如下:
复制下面的代码然后粘贴到cmd中
插入
复制下面的代码然后粘贴到cmd中
插入数据:
插入数据:
查看更改结果
因为Sqllite不能修改字段或者删除字段,这里我直接删表重建。如果是mysql就使用alter table news modify column Hours smallint;
和上面一个道理
其中字段有:SNO CHAR(10) 、 SNAME CHAR(8) 、 AGE NUMERIC(3,0)、 SEX CHAR(2)、 BPLACE CHAR(20)、Polity CHAR(20)。要求SNO和SNAME不为空,SNO为主键。
字段名为ADDR,类型为 CHAR,长度50。
建立一个只包含学号、姓名、年龄的女学生表,表名为GRIL。
表名为score,其中字段有:SNO CHAR(10),CNO CHAR(10),scoreNUMERIC(6,0),并输入部分记录,内容自定
名为js1,结构与js表相同。为js1表创建一个唯一聚集索引,索引字段为Sid,索引名为I_js_sid。
创建一个复合索引,索引名为I_cource_xf,使用Cno和Credit字段
完成后输入.exit退出
1.创建“图书借阅数据库”。2.修改“图书借阅数据库”,相关参数自行确定。3.在“图书借阅数据库”中创建以下四个表,并分别为这四个表写入部分数据,内容自定(提醒:各表数据之间的相关性)
在cmd中运行如下sql语句
随便建建
删表重建吧。懒得写了。草
建过了
一个一个删吧。如果用外键的话,直接
FOREIGN KEY 学生信息IDREFERENCES 学生信息 (学生信息ID)ON DELETE CASCADE
T-SQL的流程控制语句、游标的使用编写程序完成以下功能,在查询分析器中执行程序,并记录结果。
在score表中求某班学生某门课程的最高分和最低分的学生信息,包括学号、姓名、课程名、成绩四个字段。
最高分:
最低分:
查询某班的学生信息,要求列出的字段为:班级、本班内的学号、姓名、性别、出生日期、政治面貌
增加一个班级表 banji 和一个班级学生关系表:
向表内添加数据:
查询一班的学生信息:
在student表中先插入三条新记录,其中的Pollity字段的值为NULL,要求对记录进行查询时,对应的NULL值在显示时显示为“群众”
根据score表中考试成绩,查询某班学生某门课程的平均成绩,并根据平均成绩输出相应的提示信息向score表中添加数据
根据score表中考试成绩,查询某班学生的考试情况,并使用CASE将课程号替换为课程名称
根据score表中考试成绩,查询某班学生的考试情况,并根据考试分数输出考试等级。
因为sqlite功能有限。这里选择python来模拟逻辑。
创建一个存储过程stuscoreinfo,完成的功能是在表student、表course和表score中查询以下字段:班级、学号、姓名、性别、课程名称、考试分数。
先修改一下张三的性别
编写sql语句
使用python进行封装调用。python 代码如下:
创建一个带有参数的存储过程stu_info,该存储过程根据传入的学生编号,在student中查询此学生的信息。
编写sql如下所示
python封装如下
创建一个带有参数的存储过程stu_age,该存储过程根据传入的学生编号,在student中计算此学生的年龄,并根据程序执行结果返回不同的值,程序执行成功,返回整数0,如果执行错误,则返回错误号。
上面均已经python模拟了存储过程的逻辑。
python封装如下
编写一个用户自定义函数fun_sumscores。要求根据输入的班级号和课程号,求得此班此门课程的总分。主程序调用该函数,查询指定班级的某课程的总分。编写sql如下
python封装如下
编写一自定义函数,用于查询给定姓名的学生,如果没找到,返回0,否则返回满足条件的学生人数。主程序调用该函数,查询“李浩”的学生,并根据函数的返回值进行输出。
编写sql如下
python模拟如下
对“图书借阅数据库”中的JS、TS、CBS、JY表进行操作:查询各借书人的借阅量(若重复借阅一本书,则以一本书计),要求得到:借书证号、姓名、借书量。