MySQL《事务操作》

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.

猜你喜欢

转载自blog.csdn.net/ziyue13/article/details/112074636
今日推荐