实验二 创建数据库和表
【实验目的与要求】
实验目的: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;
截图: