drop database if exists StudentManage;
create database StudentManage;
use StudentManage;
create table Student
(Sno int primary key,
Sname nchar(10) ,
Ssex nchar(2),
Sage int,
Sdept nvarchar(30)
)charset=utf8;
create table Course
(Cno int primary key,
Cname nvarchar(30),
Cpno int,
Ccredit int
)charset=utf8;
create table SC
(Sno int,
Cno int,
Grade int,
primary key(Sno,Cno));
insert into Student
values(201215121,'李勇','男',20,'CS'),
(201215122,'刘晨','女',19,'CS'),
(201215123,'王敏','女',18,'MA'),
(201215124,'张立','男',19,'IS');
insert into Course
values(1,'数据库',5,4),(2,'数学',NULL,2),
(3,'信息系统',1,4),(4,'操作系统',6,3),
(5,'数据结构',7,4),(6,'数据处理',NULL,2),
(7,'PASCAL',6,4);
insert into SC
values(201215121,1,92),(201215121,2,85),
(201215121,3,88),(201215122,2,90),(201215122,3,80);
2.创建sc1表用来测试本次实验的内容。表的内容为原SC表中学号201215121学生的学号、课程号、成绩信息。①依据sc表结构创建表 sc1;②在sc1中插入原SC表学号 201215121 学生的学号、课程号、成绩信息。
第一空:
create table sc1 like sc;
第二空:
insert into sc1 select *
from sc where
sno=‘201215121’;
3.查看当前会话是否开启了事务的自动提交。如果事务的自动提交开启,请使用语句关闭事务的自动提交。①查看事务自动提交是否开启;②关闭事务的自动提交。
正确答案:
第一空:
SELECT @@autocommit; SHOW VARIABLES LIKE ‘autocommit’;
第二空:
SET @@autocommit = OFF; SET @@autocommit = 0; SET autocommit = OFF; SET autocommit = 0;
4.给sc1表插入一条数据(201215121,5,77),建立一个保存点s1。①插入数据(201215121,5,77);②建立保存点s1。
第一空:
insert into sc1 values
(201215121,5,77);
第二空:
savepoint s1;
5.给sc1表插入第二条数据(201215121,6,82),建立一个保存点s2。①插入数据(201215121,6,82);②建立保存点s2。
第一空:
insert into sc1 values
(201215121,6,82);
第二空:
savepoint s2;
6.查看sc1表的内容,回答有几条记录。
5
7.回滚到保存点s1。再次查看sc1表内容,回答有几条记录。①回滚到保存点s1; ②有几条记录。
正确答案:
第一空:
ROLLBACK TO SAVEPOINT s1; ROLLBACK TO s1;
第二空:
4
8.回滚到起始点;再次查看sc1表内容,回答有几条记录。①回滚到起始点; ②有几条记录。
第一空:
ROLLBACK;
第二空:
3
9.设置事务为自动提交模式。
set autocommit=1;
10.给sc1表插入一条数据(201215121,5,77),建立一个保存点s1(操作同第3步第4题)。①插入数据(201215121,5,77);②建立保存点s1。
第一空:
insert into sc1 values
(201215121,5,77);
第二空:
savepoint s1;
11.给sc1表插入第二条数据(201215121,6,82),建立一个保存点s2(操作同第4步第5题)。①插入数据(201215121,6,82);②建立保存点s2。
第一空:
insert into sc1 values
(201215121,6,82);
第二空:
savepoint s2;
12.回滚到保存点s1。是否可以执行成功?思考为什么。①回滚到保存点s1;②能否成功(回答yes或no)。
正确答案:
第一空:
ROLLBACK TO SAVEPOINT s1; ROLLBACK TO s1;
第二空:
no
13.查看当前会话隔离级别。
SELECT @@SESSION.TRANSACTION_ISOLATION;
14.查看当前系统隔离级别。
SELECT @@GLOBAL.TRANSACTION_ISOLATION;
15.设置当前会话隔离级别为读取未提交。
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
16.设置当前系统隔离级别为读取提交。
set global transaction isolation level read committed;
17.设置当前会话事务的访问模式为只读模式。 并给sc1表插入一条数据(201215121,7,88)验证只读模式是否有效。 ①设置会话事务访问模式为只读模式; ②如果插入出错,粘贴完整错误信息。
正确答案:
第一空:
SET SESSION TRANSACTION READ ONLY;
第二空:
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.