• 安装环境

因为学校是navcat破解版,所以我也安装了navcat破解版,安装过程参考了一个陌生朋友的安装链接

因为我之前安装了mysql,就是没有navcat,所以我是结合文章的末尾部分和评论区成功使用上了

navcat破解版的。之前下了别人百度网盘的文件结果电脑中了病毒给我安装了一堆垃圾软件也没有装上nacat。。所幸最后一切搞定。

然后就是一些平时的实验题了,期末考试结束了,相比期中考试我感觉还不错。

  •  期末考试模拟题

1、导入数据库及数据表(Ex10.sql)

2、用SQL 语言在数据表Cure(治疗信息)表中添加主键及外键。将相应的SQL语句

保存到考试文件夹中的AlterTable.sql文件中

ALTER TABLE cure ADD PRIMARY KEY (DID,SID);
alter table  cure add constraint  d  foreign key(DID) references doctorinfo(DID);
alter table cure add constraint s foreign key(SID) references suffer(SID);

3、请按照以下要求完成相关操,并将结果保存到考试文件夹中,文件名为Insert.sql

⑴、在DoctorInfo表中插入考生信息,其中:”医生编号”填写考生学号的后6位,“所在科室”填写考生的班级,“性别”填写考生的性别,“医生姓名”填写考生的姓名;

Insert into doctorinfo values
(330103,'张三','女','2班')

⑵、在Cure表中插入如下数据;

治疗信息表

医生编号

患者编号

入院日期

出院日期

考生学号

300366

2017-11-10

null

考生学号

200601

2017-11-25

null

Insert Into Cure Values
   ('190401','200702','2017-11-10',null),
   ('190401','200601','2017-11-25',null);

⑶、在Cure表中插入如下数据

INSERT INTO Cure VALUES( '200101', '100010','2020-09-30',NULL)

能否用插入成功?请说明原因;

不能,违背了主键约束

⑷、写出事务启动、提交及回滚的命令;

Start transaction;

Commit;

Rollback;

⑸、写出事务防止脏读的隔离级别设置语句。

Set session transaction isolation level read committed;

3、请按照以下要求完成查询操作,并将结果保存到考试文件夹中,文件名为Select.sql)

⑴、查询所有医生的信息。

Select * from doctorinfo;

⑵、查询姓名含有“大”患者的患者编号、姓名及出生日期。

Select SID,Sname,birthday from suffer where sname like '%大%'

⑶、查询医生编号为“考生学号”的医生治疗的所有患者编号、患者姓名、入院日期及所在科室。

Select s.sid,sname,indate,dept from doctorinfo d

Join cure c on d.did=c.did

Join suffer s on s.sid=c.sid

Where d.did='330103';

⑷、查询所有未出院(出院日期为Null)的患者编号、患者姓名、医生姓名及入院日期。

Select s.sid, sname,dname,indate from doctorinfo d

Join cure c on c.did=d.did

Join suffer s on s.sid=c.sid

Where outdate=null;

4、请按照以下要求完成存储过程的定义,将创建存储过程的SQL语句保存到考试文件夹的CreateProc.Sql文件中。

⑴、在数据库中创建一个存储过程,用光标遍历医生信息表中的所有数据,将医生姓名生成以逗号分隔的字符串并返回。

Create procedure docname(out stri varchar(30))

Begin

Declare name varchar(30);

Declare doc_cursor cursor for

Select dname from doctorinfo;

Declare exit handler for not found close doc_cursor;

Open doc_cursor;

Loop

Fetch doc_cursor into name;

Set stri=concat(stri,name,’,’);

End loop;

End;

⑵、在数据库中创建一个存储过程,完成根据给定的医生编号求出医生所治疗的患者姓名。要求:返回的患者姓名是以逗号分隔的字符串。

Create procedure suffer_name(out suff varchar(30))

Begin

Declare v_name varchar(30);

Declare suf_cursor cursor for

Select sname from suffer;

Declare exit handler for not found close suf_cursor;

Open suf_cursor;

Loop

Fetch suf_cursor into v_name;

Set suff=concat(suff,v_name,’,’);

End loop;

End;

5、在数据库中创建如下视图,并将创建视图的SQL语句保存到考试文件夹的CreateView.Sql文件中

⑴、创建治疗信息视图,视图中包括如下数据项:医生编号、医生姓名、患者姓名及入院时间。

Create view doctor as select d.did,dname,sname,indate from doctorinfo d

Join cure c on d.did=c.did

Join suffer s on s.sid=c.sid;

⑵、创建治疗统计视图,视图包括如下数据项:医生编号及其主治住院患者人数。

Create View Count_View

as

Select d.DID,count(*) num

   From DoctorInfo d join Cure c on d.DID=c.DID

   group by d.DID;

6、使用MySQL的命令备份与还原数据库,并将命令保存到考试文件夹的CreateBack.Sql文件中。

  • 、使用Mysqldump命令备份数据库到C:\SQLDB\DoctorDb.SQL
Mysql -uroot -p doctordb> C:\SQLDB\DoctorDb.SQL
  • 、使用Mysql命令将DoctorDb数据库的备份数据还原
mysql -uroot -p doctordb<DoctorDb.sql

7、请按照以下要求完成用户的定义及授权,将SQL语句保存到考试文件夹的CreateUser.Sql文件中

  ⑴、使用Create User命令定义一个名为User01密码为123456的用户。

Create user ‘user01’ @’localhost’identified by ’123456’;
  • 、使用Grant命令定义一个名为User02密码为123456的用户,该用户具有USAGE权限。
Grant USAGE ON *.* TO 'User02'@'localhost' identified by '123456';
  • 、将用户User01的密码修改为user123。
SET PASSWORD FOR 'User02'@'localhost'=PASSWORD('user123');
  • 、将Reader表的Select权限授予User01用户。
GRANT SELECT ON DOCTORDB.DoctorInfo TO 'User01'@'localhost';

模拟题很简单,考试题更有着重点,比如存储过程,内外连接,给已有表添加主外键之类的。

总之平时努力到位,就算考试结果不会开花至少不会有遗憾。