undefined-0's Blog

历添新岁月 春满旧山河

0%

树莓派更改当前用户密码

1
sudo raspi-config

打开树莓派配置。

image-20250628211158069

  • 操作方式:上下键 选择,回车确认,Tab键转到下方按键(上图中为<Select><finish>

选择1 System Options,回车确认,进入子菜单。

image-20250628211227592

选择S3 Password,回车确认,进入如下界面:

屏幕截图 2025-06-28 211251

按下回车,回到终端,如下图。在光标处直接输入新密码,输入完毕后回车。屏幕截图 2025-06-28 211752

再次输入新密码,输入完毕后回车。

屏幕截图 2025-06-28 212647

出现如下界面即表示密码更新成功。回车选择OK即可。

image-20250628213115050

树莓派启用root账户

1
sudo passwd root 

执行后提示设置密码,输入2遍确认。

1
sudo passwd --unlock root

解锁root账户。

如需再次锁定,将unlock改成lock即可。

1
su

输入刚设置的密码,进入root账户。

实验七 数据完整性与安全性实验

1)数据库安全性实验

在SQL Server Management Studio中,设置 SQL Server 的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。

(1)设置服务器安全认证模式

在 SQL Server Management Studio 中,为正在使用的SQL服务器设置 Windows安全认证模式。

(2)建立用户和角色

I)为正在使用的SQL服务建立新登录名(名为”login1”),使用SQL Server身份验证。

image-20240607083259464

image-20240607083440586

II)在学生课程库中,新建数据库用户名为”user1”(登名为”login1”),新建学生课程数据库角色名为”rose1”。

image-20240607083814148

image-20240607084213226

image-20240608203007823

iii)在图书读者数据库中,新建数据库用户名为”user2”(登录名为”login1”),新建数据库角色名为”rose2”。

image-20240607085017218

image-20240607085640830

image-20240608203118085

(3)设置权限

I)使新登录”login1”加入到System Administrators服务器角色中,可访问学生课程数据库和图书读者数据库。

image-20240608202522076

II)在学生课程数据库中,将”user1”加人”rose1”和db-owner,通过选择角色对”rose1”授权。

image-20240608203355668 image-20240608203858426

iii)在图书读者数据库中,将”user2”加人”rose2”和db-owner,通过对象(选择图书、读者和借阅表)对”rose2”授权。

image-20240608204915010 image-20240608205218109 image-20240608205316712 image-20240608205359980

iv)使”rose2”和”rose1”都有创建表、创建视图和备份数据库的权限。

image-20240608204706205

image-20240608204803511

2)数据库完整性实验

使用Transact-SQL设计触发器,通过SQL Server Management Studio定义它们。

建立学生选课库中选课表的插入数据型触发器,保证学生选课库中选课表的参照完整性,以维护其外码与参照表中的主码一致。该实验的T-SQL参考代码如下。

image-20240608211632363

image-20240608212352892

3)数据库应用程序设计

1、自行设计数据库;
2、设计相关窗体能对数据库进行查询、浏览等基本操作。

(1)医院信息查询系统主界面

image-20240609085056527

(2)医生信息查询

image-20240608221743915

(3)患者信息查询

image-20240608221812733

(4)病历查询

i.根据患者编号查询

image-20240608221912606

ii.根据医生工号查询

image-20240608221949165

iii.同时使用患者号、医生工号查询

image-20240608222114538

iv.模糊查询

image-20240608222143465

实验六 数据库的视图和关系图的定义及使用实验

一、基本操作实验

实验内容:

1)创建、查看、修改和删除视图。

2)创建、编辑和删除数据库关系图。

1) 创建视图实验

(1) 在 SQL Server Management Studio中,选中图书读者数据库下的视图对象,调出创建视图工具,在图书_读者库中按下列Transact-SQL描述创建读者视图。

image-20240608193740720

image-20240608181610560

(2) 在SQL Server Management Studio 中,选中图书读者数据库下的视图对象,调出创建视图工具,按下列Transact-SQL描述的视图定义,创建借阅_计算机图书视图

image-20240608194037539

image-20240608194226956

2) 创建数据库关系图实验

在SQL Server Management Studio中,选中图书_读者数据库下的数据库关系图对象,调出创建关系图工具,完成在图书_读者数据库中建立一个图书_借阅关系图操作。要求该关系图包括图书和借阅两个表,并符合表达式“图书.书号=借阅.书号”的外码约束。

image-20240608195426025

二、选做内容

利用C#的数据库组件设计一个小型数据库应用系统。

1)学生课程查询系统-主界面

image-20240608195533745

2)所有学生信息查询

image-20240608195603716

3)所有课程信息查询

image-20240608195639973

4)选课信息查询界面

image-20240608195721645

5)按学号查询

image-20240608195745357 image-20240608195808689

6)模糊查询

image-20240608195822689 image-20240608200105572

实验五 数据库的组合与统计查询实验

实验题目和要求:

检查并修改图书读者库的数据,使之与表10-8至表10-10的数据一致;
检查并修改学生课程库的数据,便之与表10-11至表10-13的数据一致;
将下列查询要求用T-SQL语句表示;
在SSMS的查询分析器中输人相应的T-SQL语旬,执行并在结果区中查看内容;
结果不正确时要对T-SQL语句修改,直到正确为止。

(1) 在图书读者数据库中,按下列要求查询

​ 1)查找图书类别,要求类别中最高图书定价不低于全部按类别分组的平均定价的2倍。

image-20240606230329833

​ 2)求机械工业出版社出版的各类图书的平均定价,用GROUP BY表示。

image-20240531082608255

​ 3)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。

​ 4)列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格。

​ 5)查询计算机类和机械工业出版社出版的图书。

image-20240531090152465

(2) 在学生课程数据库中,按下列要求查询

​ 1)求学生的总人数。

image-20240531090441230

​ 2)求选修了课程的学生人数。

image-20240531090657034

​ 3)求课程和选修该课程的人数。

image-20240531091111076

​ 4)求选修课超过3门课的学生学号。

image-20240531091326847

实验四 数据库的嵌套查询实验

一、基本操作实验

1)准备测试数据

检查并修改学生_课程库的数据:使学生表与表10-11数据一致,选课表与表10-13的数据一致;课程表数据与表10-18 数据一致(修改课程数据为只有C1、C2、C3 和 C7 课程)。

img

2)将下列查询要求用T-SQL语句表示

在SMSS的查询分析器中输人相应的T-SQL语句,执行并在结果区中查看内容;结果不正确时要对T-SQL语句修改,直到正确为止。

(1)求选修了高等数学的学生学号和姓名。

image-20240524081040642

(2)求 C1课程的成绩高于张三的学生学号和成绩。

image-20240524081243937

(3)求其他系中比计算机系某一学生年龄小的学生。

image-20240524082211466

(4)求其他系中比计算机系学生年龄都小的学生。

image-20240524082501195

(5)求选修了C2课程的学生姓名。

image-20240524082717850

(6)求没有选修C2课程的学生姓名。

image-20240524082945929

(7)查询选修了全部课程的学生的姓名。

image-20240524083734411

(8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。

image-20240524085634147

二、选择操作实验

(1) 向自设计的数据库应用系统的库中的各表,输入多条实际数据,并实现数据的增、删、改操作。

1)增
  1. 将数据记录插入医生表
    1
    2
    3
    4
    5
    6
    --插入医生表的数据记录
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D1','张一',40,'女','主任医师','内科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D2','张二',45,'男','副主任医师','病理科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D3','张三',47,'女','主治医师','放射科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D4','张四',48,'男','医师','康复科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D5','张五',42,'女','主任医师','眼科')
  • 命令执行结果
    image-20240527200107652
  1. 将数据记录插入患者表
    1
    2
    3
    4
    5
    6
    7
    --插入患者表的数据记录
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P1','李一','女','510681195901102885')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P2','李二','男','65312219670803739X')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P3','李三','女','530112199806295721')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P4','李四','男','520523201410124976')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P5','李五','女','210711198812258326')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P6','李六','男','130207196808088415')
  • 命令执行结果
    image-20240527200115997
  1. 将数据记录插入病历表
    1
    2
    3
    4
    5
    6
    --插入病历表的数据记录
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1001','P1','D5','20240508','轻度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1002','P2','D4','20240508','中度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1003','P3','D3','20240509','轻度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1004','P4','D2','20240510','重度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1005','P5','D1','20240510','轻度')
  • 命令执行结果
    image-20240527200123221
2)删
1
DELETE 病历 WHERE 患者号='P1'
  • 命令执行结果:
    image-20240527200131936
3)改
1
UPDATE 医生 SET 职称='主任医师' WHERE 工号='D2'
  • 命令执行结果:
    image-20240527200137890

(2)将书中第六章的例题P150-153页例6-15至例6-27内容一一在计算机上实现。

6-15 求数学系学生的学号和姓名。

image-20240527202732226

6-16 求选修了课程的学生学号。

image-20240527210334778

6-17 求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。

image-20240527223215317

6-18 求选修课程 C 1且成绩在 80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。

image-20240527223353807

6-19 求数学系或计算机系姓张的学生的信息。

image-20240527223600616

6-20 求少了成绩的学生的学号和课程号。

image-20240527224012427

6-22 查询每个学生的情况及他 (她)所选修的课程。

image-20240527224143167

6-23 求学生的学号、姓名、选修的课程名及成绩。

image-20240527224329409

6-24 求选修 C1课程且成绩为90分以上的学生学号、姓名及成绩。

image-20240527224526383

6-25 求学生的学号、姓名、选修的课程名及成绩。

image-20240527224702218

6-26 求选修 C1课程且成绩为 90分以上的学生学号、姓名及成绩

image-20240527224818521

三、选做内容

熟悉Delphi或C#的开发环境,用Delphi或C#设计一个简易的计算器

1、练习Delphi或C#中Edit组件和Button组件的使用方法。

2、能实现计算器的基本功能。

3、要求界面的设计具有个性化。

4、提交的程序前面要有分析,中间应有注释。

image-20240527234613943

实验三 数据库简单查询和连接查询实验

1、基本操作实验

  • 本实验的主要内容如下:
    (1)简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。
    (2)连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

  • 实验题目和要求:
    ​ 检查并修改学生课程库的效据,使之与表10-11至表10-13的数据一致;将下列查询要求用T-SQL语句表示;在SSMS的查询分析器中输人相应的T-SQL语句,执行并在结果区中查看内容;结果不正确时要对T-SQL语句修改,直到正确为止。

(1)简单查询实验内容

在学生课程数据库中:

  1. 求数学系学生的学号和姓名。
    image-20240511085620338

  2. 求选修了课程的学生学号。
    image-20240511085940442

  1. 求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
    image-20240511090359145

  2. 求选修课程C1且成绩在80-90之间的学生学号和成续,将成绩乘以系数0.8输出。
    image-20240511090810858

  3. 求数学系或计算机系姓张的学生的信息。
    image-20240511091027963

  4. 求缺少了成绩的学生的学号和课程号
    image-20240511091214888

(2)连接查询实验内容

在学生课程数据库中:

  1. 查询每个学生的情况以及他(她)所选修的课程。
    image-20240511091918917

  2. 求学生的学号、姓名、选修的课程名及成绩。
    image-20240511092227294

  3. 求选修C1课程且成绩为90分以上的学生学号、姓名及成绩
    image-20240511092425146

  4. 查询每一门课的间接先行课(即先行课的先行课)
    image-20240511093432729

2、选择操作实验

建立学生社团数据库和基本表,向库中输入一定的记录,并实现其数据的内连接和各种外查询操作。

1. 建立学生社团数据库和基本表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE DATABASE 学生社团数据库
GO

USE 学生社团数据库

CREATE TABLE 学生 (
学号 INT PRIMARY KEY,
姓名 VARCHAR(50),
年龄 INT,
性别 CHAR(2),
所在系 VARCHAR(50)
);

CREATE TABLE 社团 (
社团编号 INT PRIMARY KEY,
社团名 VARCHAR(50),
);

CREATE TABLE 社团成员 (
学号 INT,
社团编号 INT,
PRIMARY KEY (学号, 社团编号),
FOREIGN KEY (学号) REFERENCES 学生(学号),
FOREIGN KEY (社团编号) REFERENCES 社团(社团编号)
);

  • 命令执行结果:
    image-20240517082435923

2. 输入数据记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S1','李明',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S2','张小红',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S3','李和明',22,'女','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S4','张三',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S5','刘宏',23,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S6','张共可',21,'男','物理')
GO

INSERT INTO 社团(社团编号,社团名) VALUES('C1','计算机协会')
INSERT INTO 社团(社团编号,社团名) VALUES('C2','英语俱乐部')
INSERT INTO 社团(社团编号,社团名) VALUES('C3','书画社')
INSERT INTO 社团(社团编号,社团名) VALUES('C4','话剧社')
GO

INSERT INTO 社团成员(学号,社团编号) VALUES('S1','C1')
INSERT INTO 社团成员(学号,社团编号) VALUES('S2','C2')
INSERT INTO 社团成员(学号,社团编号) VALUES('S3','C1')
INSERT INTO 社团成员(学号,社团编号) VALUES('S5','C3')
INSERT INTO 社团成员(学号,社团编号) VALUES('S6','C4')
GO
  • 命令执行结果:
    image-20240517082623049

image-20240517082655218

image-20240517085347935

3. 查询操作

1
2
3
4
-- 查询1. 查询加入了编号为C1的社团的学生学号

SELECT 学号 FROM 社团成员
WHERE 社团编号 = 'C1'
  • 命令执行结果:
    image-20240517090458246
1
2
3
4
-- 查询2. 查询已加入社团的学生及其社团信息

SELECT 学生.姓名,社团.社团名 FROM 学生,社团,社团成员
WHERE 学生.学号 = 社团成员.学号 AND 社团.社团编号 = 社团成员.社团编号
  • 命令执行结果:

    image-20240517090408402

实验二 数据库的建立和维护实验

一、实验目的

​ 要求学生熟练掌握使用SQL命令和SQL Server Management Studio向数据库输入数据、修改数据和删除数据的操作。

二、实验内容:

1、基本操作实验

  • 按照书上10.4.2的要求完成基本操作实验和提高操作实验。要求:在每个基本表中各输入至少10条记录,能使用SQL命令进行数据输入、修改和删除操作。

(1)通过SQL Server Management Studio,向图书_读者库中的图书、读者和借阅3个表输入记录。数据记录内容如表10-8~表10-10所示(序号项是为了查看方便,实际数据不含序号项)。

img

img

要求:
a)先检查并表结构,使其符合表10-6图书读者库本表结构和约束。
b)数据输入后进行检查,并进行增删改操作,保证数据正确。

1. 将数据记录插入图书表
1
2
3
4
5
6
7
8
9
10
11
--插入图书表的数据记录
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000001','计算机','机械工业出版社','李明','计算机引论','18')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000002','计算机','机械工业出版社','王小红','数据结构','22')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000003','计算机','机械工业出版社','李和明','C语言编程','25.5')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000004','计算机','电子工业出版社','刘宏亮','操作系统','49.8')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000006','计算机','机械工业出版社','刘宏亮','数据结构','21.6')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('1000000005','计算机','电子工业出版社','王小红','计算机文化','20')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('2000000007','数学','机械工业出版社','吴非','高等数学','18')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('2000000008','数学','机械工业出版社','丁玉应','概率统计','22.3')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('2000000009','数学','电子工业出版社','赵明','线性代数','15')
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('3000000010','物理','电子工业出版社','张共可','力学','19.8')
  • 命令执行结果:
    image-20240510170754317
2. 将数据记录插入读者表
1
2
3
4
5
6
7
8
9
10
11
12
--插入读者表的数据记录
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000001','李小明','计算机系','男','13826388323')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000002','王红','计算机系','男','13826388378')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000003','李和平','计算机系','女','13826385523')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000004','刘宏亮','计算机系','男','13826387623')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000005','刘宏亮','计算机系','男','13826356323')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000006','王小红','数学系','女','13826381223')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000007','吴小','数学系','男','13826366323')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000008','丁玉应','数学系','男','13826898323')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000009','赵名','数学系','女','13826348323')
INSERT INTO 读者(编号,姓名,单位,性别,电话) VALUES('10000010','张共可','计算机系','男','13826384523')

  • 命令执行结果:
    image-20240510171006434
3. 将数据记录插入借阅表
1
2
3
4
5
6
7
8
9
10
11
--插入借阅表的数据记录
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000001','10000001','19981125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000002','10000002','19981220')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000003','10000003','19990605')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000004','10000004','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000006','10000001','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('1000000005','10000001','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('2000000007','10000001','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('2000000008','10000003','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('2000000009','10000004','20061125')
INSERT INTO 借阅(书号,读者编号,借阅日期) VALUES('3000000010','10000001','20061125')
  • 命令执行结果:
    image-20240510171201685

(2)通过SQL Server Management Studio,向学生_课程库中的学生、课程和选课3个表输入记录。数据记录内容如表10-11~表10-13所示(序号项是为了查看方便,实际数据不含序号项)。

img

img

要求:
a)先检查并表结构,使其符合表10-7学生课程库基本表结构和约束。
b)数据输入后进行检查,并进行增删改操作,保证数据正确。

1.将数据记录插入学生表
1
2
3
4
5
6
7
8
9
10
11
--插入学生表的数据记录
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S1','李明',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S2','张小红',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S3','李和明',22,'女','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S4','张三',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S5','刘宏',23,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S6','王红应',20,'女','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S7','吴非',19,'男','数学')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S8','丁玉',21,'男','数学')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S9','赵名',21,'女','数学')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S10','张共可',21,'男','物理')
  • 命令执行结果:
    image-20240510171921278
2.将数据记录插入课程表
1
2
3
4
5
6
7
8
9
10
11
--插入课程表的数据记录
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C1','计算机引论',NULL)
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C3','C语言编程','C1')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C2','数据结构','C3')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C5','数据库','C2')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C6','计算机文化',NULL)
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C4','软件工程','C6')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C7','高等数学',NULL)
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C9','线性代数','C7')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C8','概率统计','C9')
INSERT INTO 课程(课程号,课程名,先行课) VALUES('C10','力学',NULL)
  • 命令执行结果:
    image-20240510172203520
3.将数据记录插入选课表
1
2
3
4
5
6
7
8
9
10
11
12
13
--插入选课表的数据记录
INSERT INTO 选课(学号,课程号,成绩) VALUES('S1','C1',60)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S2','C1',93)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S3','C1',NULL)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S4','C1',89)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S1','C2',79)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S2','C2',NULL)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S3','C2',80)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S4','C3',90)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S1','C3',92)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S2','C3',81)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S3','C7',85)
INSERT INTO 选课(学号,课程号,成绩) VALUES('S4','C7',75)
  • 命令执行结果:
    image-20240510172706546

2、 提高操作实验

向自设计的数据库应用系统的数据库中的各表,输入多条实际数据,并实现数据的增、删、改操作。

1)增
  1. 将数据记录插入医生表
    1
    2
    3
    4
    5
    6
    --插入医生表的数据记录
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D1','张一',40,'女','主任医师','内科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D2','张二',45,'男','副主任医师','病理科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D3','张三',47,'女','主治医师','放射科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D4','张四',48,'男','医师','康复科')
    INSERT INTO 医生(工号,姓名,年龄,性别,职称,科室) VALUES('D5','张五',42,'女','主任医师','眼科')
  • 命令执行结果
    image-20240510202811745
  1. 将数据记录插入患者表
    1
    2
    3
    4
    5
    6
    7
    --插入患者表的数据记录
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P1','李一','女','510681195901102885')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P2','李二','男','65312219670803739X')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P3','李三','女','530112199806295721')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P4','李四','男','520523201410124976')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P5','李五','女','210711198812258326')
    INSERT INTO 患者(患者号,姓名,性别,身份证号码) VALUES('P6','李六','男','130207196808088415')
  • 命令执行结果
    image-20240510203421550
  1. 将数据记录插入病历表
    1
    2
    3
    4
    5
    6
    --插入病历表的数据记录
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1001','P1','D5','20240508','轻度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1002','P2','D4','20240508','中度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1003','P3','D3','20240509','轻度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1004','P4','D2','20240510','重度')
    INSERT INTO 病历(病历号,患者号,医生工号,就诊日期,病情描述) VALUES('1005','P5','D1','20240510','轻度')
  • 命令执行结果
    image-20240510224018410
2)删
1
DELETE 病历 WHERE 患者号='P1'
  • 命令执行结果:
    image-20240511081038704
3)改
1
UPDATE 医生 SET 职称='主任医师' WHERE 工号='D2'
  • 命令执行结果:
    image-20240511081228911

3、选择操作实验

  • 读懂以下T-SQL的数据插入、删除和修改语句,在SSMS的查询分析器中正确输入每条语句,执行后检查结果。

(1) 数据插入操作

1
2
3
USE 图书读者数据库
INSERT INTO 图书
VALUES('10000000001', '计算机', '机械工业出版社', '李明', '计算机引论', '25.00')
  • 命令执行结果:
    image-20240511082305128

  • 原因分析:图书表限制书号应为10位,命令中输入的书号为11位。

  • 修改图书表限制后的命令执行结果:
    image-20240511083039530

(2) 数据删除操作

1
DELETE 图书 WHERE 书号='10000000001'
  • 命令执行结果:
    image-20240511083454649

(3) 数据修改操作

1
UPDATE 图书 SET 定价=26.5 WHERE 书号='10000000001'
  • (重新执行插入操作后的)命令执行结果:
    image-20240511083657847

实验八 综合实验 十字路口交通灯

南北红灯(D1、D7)亮维持15秒,在南北红灯亮的同时东西绿灯(D5、D11)也亮,并维持10s。
到10s时,东西绿灯(D5、D11)闪亮,闪亮3s后熄灭。
在东西绿灯(D5、D11)熄灭时,东西黄灯(D6、D12)亮,并维持2秒。
到2秒时,东西黄灯(D6、D12)熄灭,东西红灯(D4、D10)亮,同时南北红灯(D1、D7)熄灭,绿灯(D2、D8)亮。

接线方法:
P1.0—P3.5 T1输入
P1.1—D1 D7 南北红
P1.2—D2 D8 南北绿
P1.3—D3 D9 南北黄
P1.4—D4 D10 东西红
P1.5—D5 D11 东西绿
P1.6—D6 D12 东西黄
注:交通灯模块的LED为置低点亮

T0定时50ms,使P1.0口输出周期为100ms的方波,作为计数器T1的输入
T1重装载值:
0FB—0.5s
0F6—1s
0EC—2s
0E2—3s
9C—10s
6A—15s

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
; EW -> East & West,东西
; SN -> South & North,南北

ORG 0000H
SJMP MAIN

ORG 000BH ;T0(定时器)中断服务程序入口
LJMP T0_ISR

ORG 0030H
MAIN:
MOV A,#0FFH
MOV P1,A ;所有灯熄灭
MOV TMOD,#61H ;0110 0001:设置T1为计数器,方式2;设置T0为定时器,方式1
MOV TH0,#4CH
MOV TL0,#01H
SETB ET0 ;允许T0中断
SETB TR0 ;启动T0
SETB EA ;开中断总控

LOOP:
MOV TH1,#9CH ;10s
MOV TL1,#9CH
;T1采用查询方式,不允许中断
SETB TR1 ;启动T1

CLR P1.5 ;点亮东西绿
CLR P1.1 ;点亮南北红
JNB TF1,$ ;若10s未到,等待
MOV R0,#06H ;10s到了,装载R0(为控制绿灯闪烁次数而设的计数变量)
CALL_EW_GREEN_FLASH:
ACALL GREEN_EW_FLASH ;绿灯闪烁(闪烁三秒--->调用六次)
DJNZ R0,CALL_EW_GREEN_FLASH
SETB P1.5;东西绿闪烁结束,熄灭东西绿
CLR TR1 ;停止T1
CLR P1.6;点亮东西黄
MOV TH1,#0ECH ;2s
MOV TL1,#0ECH
SETB TR1 ;启动T1
JNB TF1,$ ;若2s未到,等待
CLR TR1 ;2s到了,停止T1
CLR TF1 ;清中断标志位
SETB P1.6;熄灭东西黄
SETB P1.1;熄灭南北红
CLR P1.4;点亮东西红
CLR P1.2;点亮南北绿
MOV TH1,#9CH ;10s
MOV TL1,#9CH
SETB TR1;启动T1
JNB TF1,$ ;若10s未到,等待
MOV R0,#06H ;10s到了,装载R0(为控制绿灯闪烁次数而设的计数变量)
CALL_SN_GREEN_FLASH:
ACALL GREEN_SN_FLASH ;绿灯闪烁(闪烁三秒--->调用六次)
DJNZ R0,CALL_SN_GREEN_FLASH
SETB P1.2;南北绿闪烁结束,熄灭南北绿
CLR TR1 ;停止T1
CLR P1.3;点亮南北黄
MOV TH1,#0ECH ;2s
MOV TL1,#0ECH
SETB TR1 ;启动T1
JNB TF1,$ ;若2s未到,等待
CLR TR1 ;2s到了,停止T1
CLR TF1 ;清中断标志位
SETB P1.3;熄灭南北黄
SETB P1.4;熄灭东西红
SJMP LOOP

T0_ISR: ;50ms到了
MOV TH0,#4CH ;重装载
MOV TL0,#01H
CPL P1.0
RETI

GREEN_EW_FLASH:
JNB TF1,$ ;若0.5s未到,等待(第一次进入GREEN_EW_FLASH时,标志位TF1未清零,不会等待)
CLR TR1 ;0.5s到了,停止T1
CLR TF1 ;清中断标志位
CPL P1.5 ;东西绿开始闪烁
MOV TH1,#0FBH ;0.5s
MOV TL1,#0FBH
SETB TR1 ;启动T1
RET

GREEN_SN_FLASH:
JNB TF1,$ ;若0.5s未到,等待(第一次进入GREEN_SN_FLASH时,标志位TF1未清零,不会等待)
CLR TR1 ;0.5s到了,停止T1
CLR TF1 ;清中断标志位
CPL P1.2 ;南北绿开始闪烁
MOV TH1,#0FBH ;0.5s
MOV TL1,#0FBH
SETB TR1 ;启动T1
RET

END