实验二 创建数据库和表
【实验目的与要求】
实验目的:DBMS中通过数据完整性约束设计并创建出合理的数据表。
实验要求:
1.了解常见的数据库对象。
2.理解数据表中各种数据类型的应用范畴。
3.了解数据完整性约束的定义。
4.理解完整性约束的类型。
5.掌握非空约束的使用。
6.掌握唯一约束的使用。
7.掌握主键约束的使用。
【实验原理】
利用完整性约束来建立数据表。
【实验主要步骤】
参考教材《数据库系统概论》P82-87,P158-165的例题,以及《MySQL数据库入门》第2章P30-51的内容。
- 利用MySQL客户端窗口创建数据库及表
1.使用命令行方式创建数据库SM(姓名汉语拼音缩写_SM,如CK_SM)
以管理身份登录MySQL客户端,使用CREATE语句创建SM数据库。
命令:create database hjl;
2.建表结构并设计完整性
SM数据库中包含3个数据表:学生表(student)、课程表(course)、学生选课表(SC)。各表的结构分别如下:
student表结构:
字段名称 | 数据类型 | 是否允许空值 | 约束 | 说明 |
SNo | char(8) | × | 主键 | 学号 |
SName | varchar(8) | × | 唯一值 | 姓名 |
SSex | char(2) | × | 检查约束 | 性别(男或女) |
SBir | datetime | √ |
| 出生日期 |
Scredits | int | √ |
| 总学分 |
course表结构:
字段名称 | 数据类型 | 是否允许空值 | 约束 | 说明 |
CNo | char(5) | × | 主键 | 课程编号 |
CName | varchar(30) | × | 唯一值 | 课程名称 |
CPno | char(5) | √ | 外码 | 先修课程 |
CTime | decimal(3,0) | √ |
| 总学时 |
CCredits | int | √ | 默认值4 | 学分 |
CTerm | char(1) | × |
| 学期 |
SC表结构:
字段名称 | 数据类型 | 是否允许空值 | 约束 | 说明 | |
SNo | char(8) | × | 外码 | 联合主键 | 学号 |
CNo | char(5) | × | 外码 | 课程编号 | |
Score | decimal(3,1) | √ | 0~100 | 成绩 |
(1)创建student表
命令:
mysql> create table student(
-> Sno char(8) NOT NULL primary key,
-> SSex char(2) NOT NULL check(SSex in('男','女')),
-> SBir datetime,
-> Scredits int);
截图:
(2)创建course表
命令:
mysql> create table course(
-> CName varchar(30) NOT NULL unique,
-> CPno char(5),
-> CTime decimal(3,0),
-> CCredits int DEFAULT 4,
-> CTerm char(1) NOT NULL,
-> FOREIGN KEY (CPno) REFERENCES course(CPno));
截图:
(3)创建SC表
命令:
mysql> create table sc(
-> SNo char(8) NOT NULL,
-> CNo char(5) NOT NULL,
-> Score decimal(3,1) NULL check(Score between 0 and 100),
-> foreign key(SNo,CNo) references sc(SNo,CNo));
截图:
二、利用界面工具创建数据库及表
利用Navicat for MySQL客户端工具,创建数据库SM1(CK_SM1),并根据上面给出的表结构在SM1中创建各表。
1.建库SM1
截图:
2.建表
(1)创建student1表
截图:
(2)创建course1表
截图:
(3)创建SC1表
截图:
拓展补充练习:
(1)使用create命令复制表结构(自选数据库中任意一个表进行复制)
命令:
create table jjj like hjll;
截图: