在考生文件夹下给出的企业数据库db_emp中包含职工表tb_employee和部门表tb_dept。
1. 设计一个名称为tr_emp的触发器,完成的功能是:当删除部门表中的记录时,将职工表中的部门信息置空。并使用命令触发该触发器,并查看结果。
注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。
2.设计一个名称为fn_emp的存储函数,要求能根据给定的部门名称返回该部 门的工资总和。
注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。
在考生文件夹下存有一个sj3.php文件的简单PHP程序,功能是对给定的企业数据库db_emp设计一个职工表tb_employee的操作页面,如下图所示。要求根据输入的职工号查询该职工的基本信息,点击\修改\按钮可以修改职工的基本信息
但程序是不完整的,请在注释行\下一行填入正确的内容,然后删除下划线,但不要改动程序中的其他内容,也不能删除或移动\。修改后的程序存盘时不得改变文件名和文件夹。
7
在考生文件夹存有一商场信息管理系统的数据库db_mall,其包含一个记录商品有关信息的商品表tb_commodity,该表包含的字
段有商品号(cno)、商品名(cname)、商品类型(ctype)、产地(origin)、生产日期(birth)、价格(price)和产品说明(desc1)。 1. 使用SQL语句,计算商品表中北京产的电视机的价格总和(字段名为:total),并将此SELECT语句存入考生文件夹下的sj11.txt文件中。
2. 使用SQL语句,将商品表中的产品说明(desc1)字段删除,以简化该表。
3. 使用SQL语句,在商品表中添加如下一行信息,商品名:钢笔;商品类型:文具;产地:上海;生产日期:2012-12-25;价格:25。
4. 使用SQL语句,在数据库db_mall中创建一个视图v_bjcommodity,要求该视图包含商品表中产地为北京的全部商品信息。 5. 使用SQL语句,在当前系统中新建一个用户,用户名为client,主机名为localhost,并为其授予对商品表中商品号(cno)字段和商品名(cname)字段的select权限。
在考生文件夹下存有一商场信息管理系统的数据库db_mall,其包含一个记录商品有关信息的商品表tb_commodity,该表包含的字段有商品号(cno)、商品名(cname)、商品类型(ctype)、产地(origin)、生产日期(birth)、价格(price)。
1. 请创建一个名为tri_price的触发器,在插入新的商品记录时,能够根据商品的品名和产地自动设置商品的价格,其具体规则如下:若商品为上海产的电视机,则价格设置为2800,其它商品价格的设置可为缺省。
注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
2. 请创建一个名为sp_counter的存储过程,用于计算商品表tb_commodity的商品记录数。
注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
在考生文件夹下存有一个名为sj3.php的简单PHP程序文件,其成功运行后可将数据库db_mall的商品表tb_commodity中产地为武汉的电冰箱价格调整为3888。
但程序是不完整的,请在注释行\下一行填入正确的内容,然后删除下划线,但不要改动程序中的其他内容,也不能删除或移动\。修改后的程序存盘时不得改变文件 名和文件夹。
8在考生文件夹给出的学生数据库db_student中有学生表tb_student和课程成绩表tb_score,tb_student包含的字段有sno(学号)、
sname(姓名)、sage(年龄)和smajor(专业),tb_score包含的字段有sno(学号)、cname(课程名称)和grade(成绩)。 1. 使用SQL语句,在tb_student表中添加一个字段ssex,数据类型为char,长度为1,缺省值为\。 2. 用SQL语句将学号为100的学生的专业改为\计算机\。
3. 用SQL语句在tb_score表上建立一个视图v_avg(cname,caverage),视图的内容包含课程名称及课程的平均成绩。 4. 用SQL语句在tb_student表上建立关于学号的唯一性索引idx_stu。
5. 新建一个名称为newuser的用户,主机名为localhost,并为其授予对tb_student表的select权限。
1. 设计一个名称为fn_cmax的存储函数,根据给定的课程名返回选修该课程的最高分,并写出调用函数的语句。
注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
, 2.设计一个名称为ev_bak的事件,每日零时零分将学生数据库db_student中学生表tb_student的数据备份到考生文件夹下的文件bakfile.txt中。
注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
在考生文件夹下存有一个sj3.php文件的简单PHP程序,是对给定的学生数据库db_student设计一个学生表tb_student的操作页面,如下图所示。要求实现课程成绩录入的功能,输入学号后点击查询按钮可显示相应的姓名、专业,输入课程名称和成绩后,点击\添加\按钮可以添加学生的课程成绩。
但程序是不完整的,请在注释行\下一行填入正确的内容,然后删除下划线,但不要改动程序中的其他内容,也不能删除或移动\。修改后的程序存盘时不得改变文件名和文件夹。
9
现有数据库mysqltest:
1. 在数据库mysqltest中,创建Dept1表:Dept1(deptno,dname,higherdeptno) ,说明:部门编号(整型),部门名称(定长字符串、长度20),上级部门编号(整型,缺省值为NULL),并建立名为 fk_higher的主外键关联。
2. 现有部门表:Dept2(deptno,dname,higherdeptno) (说明:部门编号,部门名称,上级部门编号),请编写SQL语句,查找出所有第二级部门的名称(没有上级部门的部门为第一级部门),并此SQL语句存入考生文件夹下的sj12.txt文件中,不存则不得分。 3. 学生S(sno, sname, sex, age)、课程C(cno, cname)、选课SC(sno,cno,grade) , 请编写SQL语句,为选修课程\的学生学号、姓名、课程成绩,建立视图SJAVA。
4. 学生S(sno, sname, sex, age)、课程C(cno, cname)、选课SC(sno,cno,grade),请编写SQL语句,将学生李红选修的课程DB的成绩改为90。
5. 创建一个名为backupdb的用户,指定其仅在localhost上登录,密码为\。
【参考答案】
1.
CREATE TABLE Dept1 (
deptno INT,
dname CHAR(20),
higherdeptno INT DEFAULT NULL REFERENCES Dept1(deptno), PRIMARY KEY(deptno) );
2.SELECTdname FROM dept2 WHERE higherdeptno!='';
3.CREATE VIEW SJAVA AS SELECT s.sno,s.sname,SC.grade FROM s,c,sc WHERE s.sno=sc.sno AND sc.cno=c.cno AND c.cname='JAVA';
4.UPDATE sc SET grade=90 WHERE sno=(SELECT sno FROM s WHERE sname='李红') AND cno=(SELECT cno FROM c WHERE cname='DB');
5.CREATE USER 'backupdb'@'localhost' IDENTIFIED BY 'backup';
现有数据库mysqltest下:
1. 现有Customer表:(customerNumber int primary key, creditlimit int NOT NULL, customerLevel CHAR(20) DEFAULT '' ),其中customerNumber为客户编号,creditlimit记录了某个用户当前的信贷限额。请创建一个触发器,在插入新的客户记录时,能够根据用户的的信贷限额设置其customerLevel;具体规如下:若当前信贷限额大于50000,则用户评级为 \;若当前信贷限额大于等于10000且小于等于50000,则用户评级为\;若当前信贷限额小于10000,则用户评级为 \。
注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
2. 假设有商品表(product)和商品类别表(category):product:{pid,pname,cid,price}(字段说明:商品编号,商品名,类别编号,价格)category:{cid,cname }(字段说明:类别编号,类别名称)
请创建一个存储过程priceIncrementByCat,根据指定的类别名称(长度20的字符型)、以及价格浮动比例(Double型),对该类别中所有的商品进行价格调整(要求在存储过程中,只能使用一条UPDATE语句,不能使用其他对product和category表进行操作的SQL语句)。如果成功进行了相关修改,使用ROW_COUNT()
函数打印出经价格修改的商品数目;否则,打印出错误信息。可参考如下所示方式打印出执行结果: +---------------------------------------------------------------+ | Result |
+--------------------------------------------------------------+ | 类别:\食品\中,有3件商品价格已被更新! |
+--------------------------------------------------------------+ 或者:
+--------------------------------------------------------+ | Result |
+-------------------------------------------------------+ | 类别名称不存在、或者该类别中无商品! |
+-------------------------------------------------------+
注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
1)【参考答案】 DELIMITER $$
CREATE TRIGGER custLevel BEFORE INSERT ON customer FOR EACH ROW BEGIN
DECLARE creditlim INT; SET creditlim=new.creditlimit; IF creditlim> 50000 THEN SET NEW.customerLevel = '1st Level ';
ELSEIF(creditlim<= 50000 &&creditlim>= 10000) THEN SET NEW.customerLevel = '2nd Level '; ELSEIF creditlim< 10000 THEN
SET NEW.customerLevel = '3rd Level'; END IF ; END $$
2)【参考答案】 DELIMITER $$
CREATE PROCEDURE priceIncrementByCat(IN p_catname CHAR(20), IN p_increment DECIMAL(10,2)) BEGIN
UPDATE product p,category c SET p.price=p.price*(1+p_increment) WHERE p.cid=c.cid AND c.cname=p_catname; IF(ROW_COUNT()=0) THEN
SELECT '类别名称不存在、或者该类别中无商品!' AS Result; ELSE
SELECT ('类别:\中,有', ROW_COUNT(),'件商品价格已被更新!') AS Result; END IF; END $$
DELIMITER ;
mysqltest数据库中有学生表(student)、系别表(dept):
student:{sid,sname,score,deptno}(字段说明:学号,姓名,成绩,系别编号) dept:{deptno,deptname }(字段说明:系别编号,系名称)编写一个sj3.php页面,如下图所示: