**
题目:
**
(1)任务描述
《课程管理》模块的数据表字段名定义见表 2.13.1。请按以下设计完成数据库创建、数据表创建和数据操作任务:
表 2.13.1 字段名定义表
字段名 类型 备注 约束
course_id varchar(20) 课程 ID 主键
course_name varchar(20) 课程名称 非空
speciality_id varchar(20) 专业 ID 非空
time int 课程学时 非空
mark int 课程学分 只能是1到6分之间
任务一:创建数据库(10 分)
创建数据库 SelfStudy。
任务二:创建数据表(25 分)
创建数据表 T_course。
任务三:创建数据表间的关系及约束(15 分)
为表设置主键,主键命名为“pk_<表名>_<主键标识>”;
为课程学分列(mark)设置只能为1到6的数。
任务四:数据操作(40 分)
在表中插入以下数据,用作测试。
用 SQL 语句完成如下操作:
①在表中插入 5 条测试数据(样本数据包含下面题目中使用的数据)。
②查询 “电子政务”专业开设的课程;
③将课程名称为SQLServer数据库的课程学分改为6分;
④删除课程学分为1的记录。
答案:
1.创建数据库,设置编码格式,并设置排序方式
create database SelfStudy
character set ‘utf8’ collate ‘utf8_general_ci’;
2.进入数据库
use SelfStudy;
3.创建表
create table T_course
(
course_id varchar(20) not null comment ‘课程ID’,
course_name varchar(20) not null comment ‘课程名称’,
speciality_id varchar(20) not null comment ‘专业ID’,
time int not null comment ‘课程学时’,
mark int not null comment ‘课程学分’
);
4.设置主键
alter table T_course
-add constraint pk_T_course_course_id primary key(course_id);
5.修改结束标示,改为#
delimiter#
6.创建触发器,进行学分只能是1-6之间的操作
create trigger t1 before insert on T_course for each row
begin
declare msg varchar(100);
if new.mark<1 or new.mark>6
then set msg=‘课程学分只能是1到6分之间’;
signal sqlstate ‘HY000’ set message_text=msg;
end if;
end#
7.插入数据
例如:
insert into T_course values(‘c004’,‘高数’,‘大数据’,32,1);
8.查询数据
select * from T_course where speciality_id=‘电子政务’;
9.更新数据
update T_course set mark = 6 where course_name =‘SQLServer数据库’;
10.删除数据
delete from T_course where mark=1;