目录

实验要求

代码如下

 数据表模型关系

实验总结


实验要求

1、创建数据库Teach,并指定其字符集为UTF-8

2、创建Teach数据库中的S(学生信息表)、C(课程表)、T(教师信息表) 、SC(学生选课表)、TC(教师授课表),数据表创建过程中注意主键、非空等约束。

S表:

列名

含义

数据类型

是否可空

主外键

SNo

学生学号

char(10)

N

PK

SN 

学生姓名

varchar(20)

N

Sex

性别

char(2)

Y

Age

年龄

int

Y

Dept

所在系别

varchar(20)

Y

C表:

列名

含义

数据类型

是否可空

主外键

CNo

课程代码

char(10)

N

PK

CN

课程名称

varchar(10)

N

CT

课时

int

Y

T表:

列名

含义

数据类型

是否可空

主外键

TNo

教师号

char(10)

N

PK

TN

教师姓名

varchar(20)

N

Sex

性别

char(2)

Y

Age

年龄

int

Y

Prof

职称

char(10)

Y

Sal

工资

int

Y

Comm

岗位津贴

int

Y

Dept

系别

varchar(20)

Y

SC表:

列名

含义

数据类型

是否可空

主外键

SNo

学号

char(10)

N

PK,FK

CNo

课程代码

char(10)

N

PK,FK

Score

成绩

decimal(5,2)

Y

   

TC表:

列名

含义

数据类型

是否可空

主外键

TNo

教师号

char(10)

N

Pk,FK

CNo

课程代码

char(10)

N

PK,FK

3、使用命令完成数据表的管理和维护

  1. 使用命令在学生表S中添加 “Birthdary”字段,其数据类型为Year,并放在“Age”字段的后面。
  2. 将学生表S的姓名字段Sn设置为唯一索引
  3. 将学生表S的所在系别字段Dept设置默认约束为“人工智能学院”

4、使用命令完成数据表的数据插入、更新和删除

S (学生关系)

Sno

学号

Sn

姓名

Sex

性别

Age

年龄

Birthdary

出生年份

Dept

系别

S1

赵亦

17

2005

计算机

S2

钱尔

18

2004

信息

S3

孙珊

20

2002

信息

S4

李思

21

2001

自动化

S5

周武

19

2003

计算机

S6

吴丽

20

2002

自动化

C (课程关系)

Cno

课程号

Cn

课程名

Ct

课时

C1

程序设计

60

C2

微机原理

80

C3

数字逻辑

60

C4

数据结构

80

C5

数据库原理

60

C6

编译原理

54

C7

操作系统

60

T (教师关系)

Tno

教师号

Tn

姓名

Sex

性别

Age

年龄

Prof

职称

Sal

工资

Comm

岗津

Dept

系别

T1

李力

47

教授

1500

3000

计算机

T2

王平

28

讲师

800

1200

信息

T3

刘伟

30

讲师

900

1200

计算机

T4

张雪

51

教授

1600

3000

自动化

T5

张兰

39

副教授

1300

2000

信息

SC(选课关系)

Sno

学号

Cno

课程号

Score

成绩

S1

C1

90

S1

C2

85

S2

C4

70

S2

C5

57

S2

C6

80

S2

C7

S3

C1

75

S3

C2

70

S3

C4

85

S4

C1

93

S4

C2

85

S4

C3

83

S5

C2

89

TC(授课关系)

Tno

教师号

Cno

课程号

T1

C1

T1

C4

T2

C5

T3

C1

T3

C5

T4

C2

T4

C3

T5

C5

T5

C7

  1. 向学生表S中添加学生信息:“S7,O’Nei,女,19,2003”。
  2. 向学生表S中添加学生信息:“S7,张三,男,17,2005”(若发生主键冲突,则利用替换方式解决)。
  3. 将课程表C中的C5的课程名修改为“数据库系统原理”。
  4. 删除学生表S中的S7的学生信息。
  5. 复制学生表S的结构与内容,新表命名为STUDENT。
  6. 无痕删除STUDENT表。

代码如下

#1、创建数据库Teach,并指定其字符集为UTF-8。
CREATE DATABASE Teach CHARACTER SET utf8;

#S(学生信息表)
CREATE TABLE S (
  SNo char(10) NOT NULL PRIMARY KEY COMMENT '学生学号',
  SN varchar(20) NOT NULL COMMENT '学生姓名',
  Sex char(2) COMMENT '性别',
  Age int COMMENT '年龄',
  Dept varchar(20) COMMENT '所在系别'
);
#C(课程表)
CREATE TABLE C (
  CNo char(10) NOT NULL PRIMARY KEY COMMENT '课程代码',
  CN varchar(10) NOT NULL COMMENT '课程名称',
  CT int COMMENT '课时'
);
#T(教师信息表)
CREATE TABLE T (
  TNo char(10) NOT NULL PRIMARY KEY COMMENT '教师号',
  TN varchar(20) NOT NULL COMMENT '教师姓名',
  Sex char(2) COMMENT '性别',
  Age int COMMENT '年龄',
  Prof char(10) COMMENT '职称',
  Sal int COMMENT '工资',
  Comm int COMMENT '岗位津贴',
  Dept varchar(20) COMMENT '系别'
);
#SC(学生选课表)
CREATE TABLE SC (
  SNo char(10) NOT NULL COMMENT '学号',
  CNo char(10) NOT NULL COMMENT '课程代码',
  Score decimal(5,2) COMMENT '成绩',
  PRIMARY KEY (SNo, CNo),
  FOREIGN KEY (SNo) REFERENCES S(SNo),
  FOREIGN KEY (CNo) REFERENCES C(CNo)
);
#TC(教师授课表)
CREATE TABLE TC (
  TNo char(10) NOT NULL COMMENT '教师号',
  CNo char(10) NOT NULL COMMENT '课程代码',
  PRIMARY KEY (TNo, CNo),
  FOREIGN KEY (TNo) REFERENCES T(TNo),
  FOREIGN KEY (CNo) REFERENCES C(CNo)
);


#(1)使用命令在学生表S中添加 “Birthdary”字段,其数据类型为Year,并放在“Age”字段的后面。
ALTER TABLE S ADD Birthdary YEAR AFTER Age;
#(2)将学生表S的姓名字段Sn设置为唯一索引。
ALTER TABLE S ADD UNIQUE INDEX idx_sn (SN);
#(3)将学生表S的所在系别字段Dept设置默认约束为“人工智能学院”。
ALTER TABLE S ALTER COLUMN Dept SET DEFAULT '人工智能学院';


DESC S;
INSERT INTO S (Sno, Sn, Sex, Age, Birthdary, Dept)
VALUES
('S1', '赵亦', '女', 17, 2005, '计算机'),
('S2', '钱尔', '男', 18, 2004, '信息'),
('S3', '孙珊', '女', 20, 2002, '信息'),
('S4', '李思', '男', 21, 2001, '自动化'),
('S5', '周武', '男', 19, 2003, '计算机'),
('S6', '吴丽', '女', 20, 2002, '自动化');

INSERT INTO C (Cno, Cn, Ct)
VALUES
('C1', '程序设计', 60),
('C2', '微机原理', 80),
('C3', '数字逻辑', 60),
('C4', '数据结构', 80),
('C5', '数据库原理', 60),
('C6', '编译原理', 54),
('C7', '操作系统', 60);

INSERT INTO T (Tno, Tn, Sex, Age, Prof, Sal, Comm, Dept)
VALUES
('T1', '李力', '男', 47, '教授', 1500, 3000, '计算机'),
('T2', '王平', '女', 28, '讲师', 800, 1200, '信息'),
('T3', '刘伟', '男', 30, '讲师', 900, 1200, '计算机'),
('T4', '张雪', '女', 51, '教授', 1600, 3000, '自动化'),
('T5', '张兰', '女', 39, '副教授', 1300, 2000, '信息');

INSERT INTO SC (Sno, Cno, Score)
VALUES
('S1', 'C1', 90),
('S1', 'C2', 85),
('S2', 'C4', 70),
('S2', 'C5', 57),
('S2', 'C6', 80),
('S2', 'C7', NULL),
('S3', 'C1', 75),
('S3', 'C2', 70),
('S3', 'C4', 85),
('S4', 'C1', 93),
('S4', 'C2', 85),
('S4', 'C3', 83),
('S5', 'C2', 89);

INSERT INTO TC (Tno, Cno)
VALUES
('T1', 'C1'),
('T1', 'C4'),
('T2', 'C5'),
('T3', 'C1'),
('T3', 'C5'),
('T4', 'C2'),
('T4', 'C3'),
('T5', 'C5'),
('T5', 'C7');

#(1)向学生表S中添加学生信息:“S7,O’Nei,女,19,2003”。
INSERT INTO s (Sno, Sn, Sex, Age, Birthdary) VALUES ('S7','O’Nei','女',19,2003);
#(2)向学生表S中添加学生信息:“S7,张三,男,17,2005”(若发生主键冲突,则利用替换方式解决)。
INSERT INTO S (Sno, Sn, Sex, Age, Birthdary)
VALUES ('S7', '张三', '男', 17, 2005)
ON DUPLICATE KEY UPDATE Sn = VALUES(Sn), Sex = VALUES(Sex), Age = VALUES(Age), Birthdary = VALUES(Birthdary);
#(3)将课程表C中的C5的课程名修改为“数据库系统原理”。
UPDATE C SET CN = '数据库系统原理' WHERE CNo = 'C5';
#(4)删除学生表S中的S7的学生信息。
DELETE FROM S WHERE SNo = 'S7';
#(5)复制学生表S的结构与内容,新表命名为STUDENT。
CREATE TABLE STUDENT LIKE s;
#(6)无痕删除STUDENT表。
DROP TABLE STUDENT;


 数据表模型关系

实验总结

我也深刻认识到了 SQL 语言在数据处理中的重要性,它是关系型数据库的核心操作语言,能够完成各种复杂的数据处理操作,对于数据分析师、开发者等人群来说都是必备的技能。通过和用户的互动,我对 SQL 语言的应用和理解也得到了进一步的提高。

在使用SQL语句混合的方式时,需要对SQL语句有一定的熟练程度,能够编写出正确的SQL语句。同时,还需要了解各种SQL语句的用法和关键字,以便能够灵活地组合和调整SQL语句。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐