首页 理论教育 创建数据库表-MySQL数据库应用

创建数据库表-MySQL数据库应用

时间:2023-11-22 理论教育 版权反馈
【摘要】:组成表的各列的名称及数据类型,称为表结构。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。当成功创建InnoDB存储引擎的my_table表后,MySQL服务实例会在数据库目录choose中自动创建一个名字为表名、后缀名为frm的文件my_table.frm,如图3.10所示。图3.10 后缀名为frm的文件my_table.frm使用命令行方式在PXSCJ数据库中创建学生管理系统中的三个表XSB、KCB和CJB。图3.13 创建CJB表执行结果

创建数据库表-MySQL数据库应用

1.与表有关的几个概念

·表结构。组成表的各列的名称及数据类型,称为表结构。

·记录。每张表包含了若干行数据,它们是表的“值”,表中的一行称为一条记录。因此,表是记录的有限集合。

·字段。每条记录由若干个数据项构成,构成记录的每个数据项称为字段。例如,表结构(学号,姓名,性别,出生时间,专业,总学分,备注),包含7个字段,由22条记录组成。

·空值。空值(NULL)通常表示未知、不可用或将在以后添加的数据。若某列允许为空值,则向表中输入记录值时可不为该列给出具体值。而若某列不允许为空值,则在输入时必须给出具体值。

·关键字。若表中记录的某一字段或字段组合能唯一标志记录,则称该字段或字段组合为候选关键字(Candidate key)。若表中有多个候选关键字,则选定其中一个为主关键字(Primary key),也称为主键。当表中仅有唯一的一个候选关键字时,该候选关键字就是主关键字,记录和列如图3.9所示。

图3.9 记录和列

2.设计表结构

创建表的实质就是定义表结构,设置表和列的属性。创建表之前,先要确定表的名字、表的属性,同时确定表所包含的列名、列的数据类型、长度、是否可为空值、默认值设置、哪些列是主键、哪些列是外键等,这些属性构成表结构。

本节以本书所使用到的学生管理系统的三个表为例介绍如何设计表的结构:学生表(表名为XSB)、课程表(表名为KCB)和成绩表(表名为CJB)。

对于XSB表,其中,“学号”列的数据是学生的学号,学号值有一定的意义。例如,“0410170112”中“04”表示学生的院系编码,“10”表示所属专业代码,“17”表示学生入学年份,“01”表示学生所在班级代码,“12”表示学生所在班级流水号,所以“学号”列的数据类型可以是10位的定长字符型数据。“姓名”列记录学生的姓名,姓名一般不超过4个中文字符,所以可以是8位定长字符型数据。“性别”列有“男”“女”两种值,默认是男。“出生时间”是日期类型数据,列类型定为DATE。“专业”列为12位定长字符型数据。“总学分”列是整数型数据,值在0~160,列类型定为INT,默认是0。“备注”列需要存放学生的备注信息,属于文本信息,所以应该使用TEXT类型。在XSB表中,只有“学号”列能唯一标志一个学生,所以将“学号”列设为该表的主键。XSB表的结构如表3.1所示。

表3.1 XSB表的结构

参照XSB表结构的设计方法,同样可以设计出其他两个表的结构。表3.2所示的是KCB的表结构,表3.3所示的是CJB的表结构。

表3.2 KCB表的结构

表3.3 CJB表的结构

3.创建表

设计完表结构,就可以根据表结构创建表了。创建表使用CREATE TABLE语句,基本格式如下:

(1)TEMPORARY。该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。

(2)IF NOT EXISTS。建表前加上一个判断,只有该表目前尚不存在时才执行CREATE TABLE操作。用此选项可以避免出现表已经存在无法再新建的错误

(3)列选项。列选项主要有以下几种:

① NULL或NOT NULL:表示一列是否允许为空,NULL表示可以为空,NOT NULL表示不可以为空,如果不指定,则默认为NULL。

② DEFAULT default_value:为列指定默认值,默认值default_value必须为一个常量。

③ AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引

默认情况下,MySQL自增型字段的值从1开始递增,且步长为1。设置自增型字段的语法格式如下:(www.xing528.com)

Create table 表名(属性名 数据类型 auto_increment,…..);

④ UNIQUE KEY | PRIMARY KEY:UNIQUE KEY和PRIMARY KEY都表示字段中的值是唯一的。PRIMARY KEY表示设置为主键,一个表只能定义一个主键,主键必须为NOT NULL。如果一个表的主键是单个字段,直接在该字段的数据类型或者其他约束条件后加上“primary key”关键字,即可将该字段设置为主键约束,语法规则如下:

表选项:在定义列选项的时候,可以将某列定义为PRIMARY KEY,但是当主键是由多个列组成的多列索引时,定义列时无法定义此主键,这时就必须在语句最后加上一个由PRIMARY KEY(col_name,…)子句定义的表选项,格式为:

另外,表选项中还可以定义索引和外键。

【例3.2】使用SQL语句“create table表名”即可创建一个数据库表。

当成功创建InnoDB存储引擎的my_table表后,MySQL服务实例会在数据库目录choose中自动创建一个名字为表名、后缀名为frm的文件my_table.frm,如图3.10所示。

图3.10 后缀名为frm的文件my_table.frm

【例 3.3】使用命令行方式在PXSCJ数据库中创建学生管理系统中的三个表XSB、KCB和CJB。表的结构参照表3.1、表3.2和表3.3。

创建XSB表使用如下语句:

执行结果如图3.11所示。

图3.11 创建XSB表执行结果

创建KCB表使用如下语句:

执行结果如图3.12所示。

图3.12 创建KCB表执行结果

创建CJB表使用如下语句:

执行结果如图3.13所示。

图3.13 创建CJB表执行结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈