全国计算机二级MySQL操作题 下载本文

1.

一个用于存放学生选课信息的数据库XK,由学生信息表student、课程信息表course和选课信息表ordering构成。其中,表student记录学生的学号、姓名、性别、年龄等信息;表course记录课程的课程号、课程名称、授课教室等信息;表ordering描述学生的选课信息,并记录学生所选课程的成绩。

在考生文件夹下已创建了数据库XK、表student、表course和表ordering,并初始化了相应数据,请考生查阅其结构与数据,完成下列操作。

注意:以下操作题必须编写相应的SQL语句,并至少执行一次该命令。

1) 使用UPDATE语句,将表student中字段stu_id为0002的学生年龄更新为\。

2) 使用SELECT语句查询学生信息表中所有男生的姓名,且按年龄的升序排序,最后把此SELECT语句存入考生文件夹下的sj12.txt文件中。

3) 使用SELECT语句查询课程成绩不及格的学生姓名,并此SELECT语句存入考生文件夹下的sj13.txt文件中。 4) 建立一个名为stu_user的用户,并为其授予关于表student的SELECT、INSERT权限。

5) 使用INSERT语句向表ordering中添加如下一条信息:学号为0001的学生选修了课程号为005的课程,因该课程尚未结束,故目前没有成绩。

1) 使用如下SQL语句可在数据库XK中创建一个触发器,其实现在表student中删除学生信息时,可自动删除该学生的选课信息。 注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

2) 使用如下SQL语句可在数据库XK中创建一个存储过程,用于实现给定表course中一个课程号course_id,即可为表course中该课程号所对应的课程指定一个新的授课教室。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

2使用如下SQL语句可在数据库XK中创建一个触发器,其实现在表student中删除学生信息时,可自动删除该学生的选课信息。 注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

2) 使用如下SQL语句可在数据库XK中创建一个存储过程,用于实现给定表course中一个课程号course_id,即可为表course中该课程号所对应的课程指定一个新的授课教室。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

3生文件夹下存有一个sj3.php文件简单的PHP程序,可实现通过该程序从数据库XK中查询出所有女同学的学号和姓名,并能以网页表格的形式列出这些学生的学号和姓名信息。

请考生在横线处填上适当的内容后并把横线删除,使其成为一段可执行的完整PHP程序,并按原文件名保存在考生文件夹下,否则没有成绩。

2

一个用于存放学生借阅图书信息的数据库JY,由学生信息表student、图书信息表book和借阅信息表reading构成。其中,表student记录学生的学号、姓名、性别和年龄等信息;表book记录图书的书号、书名、作者和价格等信息;表reading描述图书借阅信息,并记录为学生办理图书借阅的老师姓名。

在考生文件夹下已创建了数据库JY、表student、表book和表reading,并初始化了相应数据,请考生查阅其结构与数据,完成下列操作。

注意:以下操作题必须编写相应的SQL语句,并至少执行一次该命令。

1) 在数据库JY中,使用CREATE语句创建一个记录出版社社号、社名和地址等信息的表publisher,包括pub_id(社号)、pub_name(社名)、pub_address(地址)等三个字段,相应的字段类型分别为整型、字符串型(char(30))和字符串型(char(30)),要求pub_id字段作为该表的主键,pub_name和pub_address字 段不能为空。

2) 使用ALTER语句,修改表book的表结构,为其添加一个名为pub_post的列,用于关联图书的出版社信息,该列值允许为NULL,数据类型为整型。

3) 使用INSERT语句向表reading中添加如下一条借阅信息:名为\的老师为学号0008的学生办理了书号为006的图书借阅。 4) 使用DELETE语句删除表reading中学号为0003学生的借阅信息。 5) 使用SELECT语句查询书号为003的书名,并此SELECT语句存入考生文件夹

1) 创建一个名称为v_student的视图,能够查询借阅了书名为\高等数学\的学生全部信息。

注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

2) 创建一个存储过程,功能是将书名中含有\计算机\的所有图书价格增加10%。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

在考生文件夹下存有一个sj3.php文件简单的PHP程序,可实现通过该程序从数据库JY中检索所有图书的信息,并以网页表格形式列出图书的书号、书名、价格和作者。

请考生在横线处填上适当的内容后并把横线删除,使其成为一段可执行的完整PHP程序,并按原文件名保存在考生文件夹下,否则没有成绩。

3 在给定的学生选课数据库xsxk中有一个学生表,包含的属性有学号,姓名,出生日期,学院名称,请按要求完成以下操作。

1. 使用SQL命令在学生表中增加一个属性列QQ,以记录学生的QQ号,类型为varchar,长度为20,允许为空。 2. 使用SQL语句为选课表上的学号字段建立外码FK_XH。

3. 使用SQL命令查询每个学院的学生总人数,要求给学生总人数取别名:总人数,显示学院名称和总人数,并将此SELECT语句存入考生文件夹下的sj13.txt文件中。

4. 使用SQL命令查询没有选过任何课程的学生学号,姓名,出生日期,学院名称,并将此SELECT语句存入考生文件夹下的sj14.txt文件中。

5. 为\信息学院\的学生设计一个视图V_选课(姓名,课程名称,课程学分,成绩)。

给定xsxk(学生选课)数据库中包含学生、课程和选课三个数据表,请按要求 完成以下操作。

1. 设计一个名称为fn_学分的存储函数,根据给定的课程名称返回该课程对应的学分。

注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

2. 设计一个存储过程PR_学分,根据学号返回学生的总学分(注意:成绩>=60分才能获得相应的学分)。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

在考生文件夹下存有一个sj3.php文件简单的PHP程序,是对学生选课数据库设计一个查询学生成绩的页面,要求根据学号和课程名称查询学生的成绩。该程序是不完整的,请在注释\下一行填入正确的内容,然后删除下划线,但不要改动程序中的其他内容,也不能删除或移动\。修改后的程序存盘时不得改变文件名和文件夹。

4学生选课数据库xsxk中包含学生、课程和选课三个数据表,请按要求完成以下操作。

1. 使用SQL命令在选课表上根据学号和课程名称采用BTREE的索引类型创建一个复合索引index_选课。

2. 使用SQL命令查询\语言程序设计\这门课程成绩前三名学生的学号、课程名称和成绩,并将此SELECT语句存入考生文件夹下的sj12.txt文件中。

3. 使用SQL命令查询同时选修\语言程序设计\和\操作系统\两门课程的学生学号,并将此SELECT语句存入考生文件夹下的sj13.txt文件中。

4. 设计一个视图V_成绩(课程名称、平均成绩),要求显示课程名称和每门课程平均成绩(保留2位小数),并按平均成绩降序排列。(提示:使用函数ROUND(x float, y int)取小数位数) 5. 创建test用户,并将xsxk的所有权限赋予test用户。

给定学生选课数据库xsxk中包含学生、课程和选课三个数据表,请按要求完成以下操作。

1. 设计一个名称为tr_选课的触发器,完成的功能是:当在选课表上插入一条记录之前,若该记录中的学号和课程名称在学生表和课程表中不存在,则在相关表中插入相应记录。

注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。 2. 设计一个存储函数fn_平均成绩,根据学生姓名返回学生的平均成绩。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩

在考生文件夹下存有一个sj3.php文件的简单PHP程序,是对学生选课数据库xsxk设计一个查询学生选修课程的总学分页面,要求根据学号查询学生的总学分。该程序是不完整的,请在注释行\下一行填入正确的内容,然后删除下划线,但不要改动程序中的其他内容,也不能删除或移动\。修改后的程序存盘时不得改变文件名和文件夹。

5

在考生文件夹下有kwgl数据库,存放试题中所提及的数据表。

1. 现有学生模型:S(SNO,SName,Sex,Age)(说明:学号,姓名,性别,年龄),现要求创建该表,SNO列为主键自动增长整数列,SName(char(10)),性别使用char(1),值\分别表示\男/女\年龄字段为整型。请编写SQL语句创建该表,并按(姓名,年龄,性别)的形式完成一条记录(\,21,\)的插入操作。

2. 对于所创建的学生表S,要求按照性别进行分组统计学生的平均年龄,并按照下面的方式输出,并将此SELECT语句存入考生文件夹下的sj12.txt文件中。

+------+----------+ | 性别 | 平均年龄 | +------+----------+ | | | | | | +------+----------+

3. 现有公司表:company(id, company_name, location) (说明:编号,公司名称,公司所处城市)。请编写SQL语句查出所有位于同一个城市的公司名称对(两个不同公司的名称)、以及它们所处的城市名称,要求结果按照下面的格式输出,并将此SELECT语句存入考生文件夹下的sj13.txt文件中。(可包括所有不同顺序的公司名称对) +------------+-----------+----------+ | company1 | company2 | location | +------------+-----------+----------+ | | | | | | | | +------------+-----------+----------+

4. kwgl数据库中有学生表(student)、系别表(dept):student:{sid,sname,score,deptno}(字段说明:学号,姓名,成绩,系别编号)dept:{deptno,deptname }(字段说明:系别编号,系名称)

请编写SQL语句查出各个系中,成绩高于该系平均成绩的学生人数,要求查询出系名称和具体人数,并将此SELECT语句存入考生文件夹下的sj14.txt文件中。 +----------+----------+ | deptname | count(*) | +----------+----------+ | | | +----------+----------+

5. 为了让市场部的新用户wang能够访问MySQL服务器, ①管理员用CREATE语句

为其创建了一个名为wang的用户,并处于安全考虑,将其登录位置指定为市场部IP:192.168.2.12,密码为\;当该用户尝试访问市场部数据库market时,发现管理员并未授予其权限。

②管理员使用授权语句,对用户wang授予market数据库上的所有权限,并允许其进行权限转移。 请编写出这里提到的语句①②,分别完成用户创建、用户密码修改和用户 权限授予。

在考生文件夹下有kwgl数据库,存放试题中所提及的数据表。

1. 现有Customers表,其中列customerNumber为客户编号(整数列)、列creditlimit信贷限额(整数列)记录了某个用户当前的透支上限,请修改一个存储过程,要求根据输入的客户编号,通过一个输出参数得出用户的评级情况(字符串)。若当前信贷限额大于50000,则用户评级为 \;若当

前信贷限额大于等于10000且小于等于50000,则用户评级为\;若当前信贷限额小于10000,则用户评级为 \。 注意:在考生文件夹中的sj21.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。 2. kwgl数据库中有学生表(student)、系别表(dept):

student:{sid,sname,score,deptno}(字段说明:学号,姓名,成绩,系别编号) dept:{deptno,deptname }(字段说明:系别编号,系名称)

请修改函数GetAvgScoreByDeptName计算指定系的学生平均成绩,输入系名字符串,返回DOUBLE类型的平均成绩。

注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请考生在横线处填上适当的内容后并把横线删除,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩。

在考生文件夹下有kwgl数据库,存放试题中所提及的数据表。

kwgl数据库中有学生表(student)、系别表(dept):student:{sid,sname,score,deptno}(字段说明:学号,姓名,成绩,系别编号)dept:{deptno,deptname }(字段说明:系别编号,系名称) 在考生文件夹下有一个sj.php页面,如下图所示:

初始情况下(即直接访问sj3.php时),显示出deptno=10001的院系。然后,在下拉框中列出所有院系的名称(deptname),在点击提交按钮时,根据用户的选择,使用Get方式,再次将请求发送到本页面进行服务器端处理,根据Get中参数deptno指定的院系编号,检索student表,列出指定院系所有学生的学号和成绩;在此响应中,需保持下拉框中院系的选择情况与用户提交时的选择情况一致。如下图所示:

请考生在横线处填上适当的内容后并把横线删除,使其成为一段可执行的完整PHP程序,并按原文件名保存在考生文件夹下,否则没有成绩。

6

在考生文件夹给出的企业数据库db_emp中有职工表tb_employee和部门表tb_dept,tb_employee包含的字段有eno(职工号)、ename(姓名)、age(年龄)、title(职务)、salary(工资)和deptno(部门号),tb_dept包含的字段有deptno(部门号)、dname(部门名称)、manager(部门负责人)、 telephone(电话)。

1. 用SQL语句完成以下操作:给企业新增加一个\公关部\,部门号为\,电话为\,并任命\担任部门负责人。

2. 用SQL语句将tb_employee表中salary字段的默认值修改为3500。

3. 用SQL语句查询\销售部\的员工总人数,要求查询结果显示为\总人数\,并将此SELECT语句存入考生文件夹下的sj13.txt文件中。

4. 用SQL语句为\采购部\建立一个员工视图v_emp,包括职工号(eno)、姓名(ename)、年龄(age)和工资(salary)。 5. 使用SQL语句,在当前系统中新建一个用户,用户名为Yaoming,主机名为localhost,密码为\,授予其对db_emp数据库中tb_employee表的更新权限,并允许其可以将此权限授予其他人。

在考生文件夹下给出的企业数据库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.SELECT dname 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页面,如下图所示: