本篇记录数据库、表的创建与维护相关操作,有客户端界面操作方法也有命令操作方法
实验环境:MySQL 5.7 、DataGrip
目录
本篇记录数据库、表的创建与维护相关操作,有客户端界面操作方法也有命令操作方法
7.用语句修改把STC表中的score改为smallint型;
9.为STC表中的cno添加参照完整性约束,参照Courses表中的Cno属性。
一、实验目的
1.掌握数据库的创建与维护
2.熟练掌握数据表的创建和维护
3.熟悉数据的更新操作。
二、实验内容(请完成以下操作)
1.创建关系数据库S_T###,
要求数据库字符集为utf8,字符集校对规则默认。
说明:数据库名称中的###代表本人学号的后三位。如张华的学号为20160714121,其数据库名为“S_T121”
具体操作:
右键MySQL,选择新建-架构
2. 在S_T数据库中,创建学生表students
该表的存储引擎为InnoDB,采用数据库默认字符集。该表主要包括学号(sno)、姓名(sname)、出生日期(sbirth)和年级(grade)四个属性,每个属性的数据类型、长度及其约束要求如下:
Sno:char(10),主码;
Sname:char(4),不允许为空
sbirth:date,
Grade:smallint。
具体操作:
右键数据库,选择新建-表
第一步,自定义表名
第二步,添加新列
第三步,自定义列
最终显示
红框语法是该表的存储引擎为InnoDB,采用数据库默认字符集。不写也行,因为默认就是InnoDB储存引擎
注意:主键不能为空
所用语法:
CREATE TABLE `students` (
`Sno` char(10) NOT NULL,
`Sname` char(4) NOT NULL,
`sbirth` date DEFAULT NULL,
`Grade` smallint(6) DEFAULT NULL,
PRIMARY KEY (`Sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
3.在S_T数据库中,创建教师表Teachers
主要包括教师号(Tno)、教师姓名(Tname)、性别(sex)和工资(salary)四个属性,每个属性的数据类型、长度及其约束要求如下:
Tno:CHAR(8) ,主码;
Tname:char(4) 非空约束,
sex:复合型,取值为‘男’或‘女’,
Salary:float。
具体操作
同创建students表一样
注意,sex复合型的定义
所用语法
CREATE TABLE `teachers` (
`Tno` char(8) NOT NULL,
`Tname` char(4) NOT NULL,
`sex` enum('男','女') DEFAULT NULL,
`Salary` float DEFAULT NULL,
PRIMARY KEY (`Tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4. 在S_T数据库中,创建课程表Courses
主要包括课号(Cno)、课名(Cname)和学时(Chour)三个属性,每个属性的数据类型、长度及其约束要求如下:
Cno:char(8) 非空约束 ,
cname:varchar(10) 非空约束,
Chour:tinyint。
具体操作
所用语法
create table Courses
(
Cno char(8) not null,
cname varchar(10) not null,
Chour tinyint null
);
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
5. 在S_T数据库中,创建选课表STC
包括学号(Sno)、教师号(Tno)、课号(Cno)和成绩(score)四个属性,每个属性的数据类型、长度及其约束要求如下:
Sno:char(10),
Cno:CHAR(8),
Tno:CHAR(8),
Score:int。
设置(Sno,cno)为主码,STC表中的Sno属性为外码,参照students表中的学号sno。
具体操作
在设置两个属性组合成主键时,要进入键的操作里添加属性
设置外键时:进入外键操作
1.选择目标表
2.添加外键列
6.用语句修改Students表,
增加性别Ssex属性置于sname属性之后,该属性为enum类型,只能取“男”或“女”;
具体操作
右键students表,进入查询控制台
ALTER TABLE students
ADD Ssex enum('男','女') AFTER Sname;
执行完成后成功显示
7.用语句修改把STC表中的score改为smallint型;
看操作
ALTER TABLE stc
MODIFY Score smallint;
修改已有属性时,要用MODIFY关键字
8.将Course表中的Cno属性设置为主码。
看操作
ALTER TABLE courses
ADD PRIMARY KEY (Cno);
给已有属性添加主键,使用ADD关键字
9.为STC表中的cno添加参照完整性约束,参照Courses表中的Cno属性。
看操作
alter table stc
add foreign key (Cno)references courses(Cno);
语法解释:修改表stc,添加一个主键Cno,参照courses表中的Cno
10.将下表中的数据依次输入到已经创建的四个表中。
Students表:
sno |
sname |
Ssex |
sbirth |
grade |
201615121 |
李丽 |
女 |
1999-1-1 |
2016 |
201615122 |
汪洋 |
男 |
1998-12-21 |
2016 |
201615123 |
刘晨 |
女 |
1998-6-5 |
2016 |
201715121 |
王小晨 |
男 |
1999-4-16 |
2017 |
201715122 |
张放 |
男 |
1997-6-1 |
2017 |
201715123 |
乔云萍 |
女 |
1999-8-12 |
2017 |
Teachers表:
Tno |
Tname |
Sex |
salary |
101 |
李大伟 |
男 |
6200 |
102 |
刘云 |
女 |
4500 |
103 |
王军 |
男 |
3600 |
104 |
张红霞 |
女 |
4100 |
课程表Courses
Cno |
Cname |
Chour |
B001 |
高等数学 |
80 |
B002 |
计算机导论 |
48 |
B003 |
C程序设计 |
64 |
B004 |
数据结构 |
72 |
B005 |
数据库系统 |
56 |
B006 |
模糊数学 |
56 |
课程表STC
Sno |
Cno |
Tno |
score |
201615121 |
B001 |
101 |
78 |
201615121 |
B002 |
102 |
85 |
201615121 |
B003 |
103 |
69 |
201615121 |
B004 |
104 |
|
201615122 |
B002 |
102 |
98 |
201615122 |
B003 |
103 |
89 |
201615123 |
B001 |
101 |
65 |
201615123 |
B003 |
103 |
56 |
201615123 |
B004 |
104 |
|
201715121 |
B002 |
102 |
68 |
201715121 |
B004 |
104 |
78 |
201715123 |
B001 |
101 |
81 |
201715123 |
B002 |
102 |
60 |
具体操作
我选择的方法是,把数据复制到Excel表格
加号,添加行,选择第一个格
然后在复制Excel表格中的数据,粘贴到第一个格