在数据库中,数据表是数据库中最重要、最基本的的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。
创建万数据库后,接下来就要在数据库中创建数据表。创建数据表的过程是规定数据列的属性过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。
在创建数据表之前,应该使用语句“USE <数据库名>”指定操作是在哪个数据库中进行,若没有选择数据库,直接创建数据表,系统会提示“No database selected”的错误。 创建数据表的语句为CREATE TABLE,语法规则如下: CREATE TABLE<表名> ( 字段名 1, 数据类型[列级别约束条件][默认值], 字段名 2, 数据类型[列级别约束条件][默认值], … [表级别约束条件] ); 其中,必须创建指定以下信息: 要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字; 数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。 语句“SHOW TABLES”查看数据表是否创建成功。
主键,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不能为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间是一一对应的。主键分为两种类型:单子段主键和多字段主键。
单子段主键 单子段主键是指主键由一个字段组成,SQL语句格式分为以下两种情况: (1)在定义列的同时指定主键,语法规则: 字段名 数据类型 PRIMARY KEY[默认值] (2)在定义完所有列之后指定主键,语法格式如下: [CONSTRAINT<约束名>] PRIMARY KEY [字段名]多字段联合主键 是指主键由多个字段联合组成,语法规则如下: PRIMARY KEY[字段1, 字段2,…,字段n]外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。 外键:是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。 从表(自表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。 创建外键的语法规则: [CONSTRAINT<外键名>] FOREIGN KEY 字段名 1[,字段名 2, …] REFERENCES<主表名>主键列 1[,主键列 2, …] 其中,“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“外键名”表示子表需要添加外键约束的字段列。 提示:关联值是在关系性数据库中,相关表之间的联系。它是通过相容或相同的属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建子表时,就会出现错误提示。
是指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。非空约束的语法规则如下: 字段名 数据类型 not null
要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者及列都不出现重复值。非空约束的语法规则有如下两种情况: (1)定义完列之后直接指定唯一约束,语法规则: 字段名 数据类型 UNIQUE (2)在定义完所有列之后指定唯一约束: [CONSTRAINT<约束名>] UNIQUE(<字段名>) 提示: UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明;声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值的存在。
指定某列的默认值。语法: 字段名 数据类型 DEFAULT 默认值
在MySQL中,默认情况AUTO_INCREMENT初始值为1,每新增一条记录,字段自动加1。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT、BIGINT)。 属性值自动增加的语法: 字段名 数据类型 AUTO_INCREMENT
查看表结构可用DESCRIBE和SHOW CREATE TABLE语句
DECRIBE/DESE语句可以查看表字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等,语法规则如下: DESCRIBE 表名;或者简写为:DESE 表名; 其中,显示结果的各个字段的含义: NULL:表示该列是否可以存储NULL值; Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次; Default:表示该列是否有默认值,若有为多少; Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE 语句,语法格式如下: SHOW CREATE TABLE <表名\G>; 提示:使用SHOW CREATE TABLE语句不仅可以查看表创建的详细语句,且可以查看存储引擎和字符编码。 若不加“\G”,显示结果可能非常混乱。
修改表指的是修改数据库中已存在的数据表的结构。MySQL使用ALTER TABLE语句修改表。常用的修改表的操作有:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。
语法规则如下: ALTER TABLE <旧表名>RENAME[TO]<新表名>; 其中,TO为可选参数,使用与否不影响结果。
语法规则如下: ALTER TABLE <表名>MODIFY<字段名><数据类型>;
语法规则如下: ALTER TABLE <表名> CHANGE <旧字段名><新字段名><新数据类型>; 提示:由于不同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录。因此,当数据库中已经有数据时,不要轻易修改数据类型。
一个完整字段包括字段名、数据类型、完整性约束。语法格式如下: ALTER TABLE <表名>ADD<新字段名><数据类型> [约束条件][FIRST | AFTER 已经存在的字段名]; 其中,FIRST为可选参数,其作用是将新添加的字段设置为表的第一个字段;AFTER为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”的后面。若没有这两个参数,则默认将新添加的字段设置为数据表的最后列。 1.添加无完整性约束条件的字段 2.添加有完整性约束条件的字段 3.在表的第一列添加一个字段 4.在表的指定列之后添加一个字段
删除字段是将数据表中的某一个字段从表中移除,语法格式: ALTER TABLE <表名>DROP<字段名>;
语法格式: ALTER TABLE <表名>MODIFY<字段 1><数据类型> FIRST AFTER <字段 2>; 其中,字段 1指要修改位置的字段;数据类型指字段1的数据类型;FIRST为可选参数,指将字段1修改为表的第一个字段;AFTER<字段2>指将字段1插入到字段2后面。
语法格式如下: ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
外键一旦删除,就会解除主表和从表间的关联关系,语法格式: ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>; 其中,外键约束名指在定义表是CONSTRAINT关键字后面的参数。
删除表的同时,表的定义和表中所有的数据均会被删除。
DROP TABLE 可以一次删除一个或多个没有被其他表关联的数据表,语法如下: DROP TABLE [IF EXISTS] 表1 表2 … 表n;
若数据表之间存在外键关联的情况下,直接删除父表,结果会显示失败。若必须要删除,可以先删除与它关联的子表,再删除父表。若要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表。