数据库上机实验-创建数据库和数据表
1、创建数据库;2、创建和维护数据表;3、插入、修改和删除数据。
目录
实验要求
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、使用命令完成数据表的管理和维护。
- 使用命令在学生表S中添加 “Birthdary”字段,其数据类型为Year,并放在“Age”字段的后面。
- 将学生表S的姓名字段Sn设置为唯一索引。
- 将学生表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 |
- 向学生表S中添加学生信息:“S7,O’Nei,女,19,2003”。
- 向学生表S中添加学生信息:“S7,张三,男,17,2005”(若发生主键冲突,则利用替换方式解决)。
- 将课程表C中的C5的课程名修改为“数据库系统原理”。
- 删除学生表S中的S7的学生信息。
- 复制学生表S的结构与内容,新表命名为STUDENT。
- 无痕删除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语句。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)