《MySQL入门很简单》学习笔记(6)之第6章创建、修改和删除表(关键词:数据库/MySQL/创建表/修改表/删除表)
程序员文章站
2022-04-04 08:33:28
...
第6章 创建、修改和删除表
表是数据库存储数据的基本单位。
一个表包含若干字段或记录。
表的操作包括创建新表、修改表和删除表。
本章将讲解如何在数据库中操作表,包括:
创建表的方法;
表的完整性约束条件;
查看表结构的方法;
修改表的方法;
删除表的方法。
6.1 创建表
MySQL中,创建表是通过SQL语句CREATE TABLE实现的。
语法:
CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
...
属性名 数据类型
);
说明:
“表名”参数表示所要创建的表的名称;
“属性名”参数表示表中字段的名称;
“数据类型”参数指定字段的数据类型;
“完整性约束条件”参数指定字段的某些特殊约束条件。
注意:
使用CREATE TABLE语句创建表时,首先要使用USE语句选择数据库。
定义时,字母大小写均可,各属性之间用逗号隔开,最后一个属性后不需要加逗号。
例如:
CREATE TABLE example0(id INT,
name VARCHAR(20),
sex BOOLEAN
);
完整性约束条件是对字段进行限制。要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库将不执行用户的操作。目的是为了保证数据库中数据的完整性。
6.1.2 设置表的主键
主键能唯一地标识该表中的每条信息。
主键用来标志每个记录,每个记录的主键值都不同。
设置表的主键指在创建表时,设置表的某个字段为该表的主键。
主键的主要目的是帮助MySQL以最快的速度查找到表中的某一条信息。
主键必须满足的条件必须是唯一的,表中任意两条记录的主键字段的值不能相同;主键的值是非空值。
主键可以是单一的字段,也可以是多个字段的组合。
1.单字段主键
语法规则:
属性名 数据类型 PRIMARY KEY
例子见书上。
2.多字段主键
主键是由多个属性组合而成时,在属性定义完之后统一设置主键。
语法:
CREATE TABLE example2(stu_id INT,
course_id INT,
grade FLOAT,
PRIMARY KEY(stu_id, course_id)
);
6.1.3 设置表的外键
如果字段sno是一个表A的属性,且依赖于表B的主键,那么,称表B为父表,表A为子表,sno为表A的外键。
通过字段sno将父表B和子表A建立关联关系。
设置表的外键指在创建表设置某个字段为外键。
设置外键的原则是,必须依赖于数据库中已存在的父表的主键;外键可以为空值。
外键的作用:
建立该表与其父表的关联关系。父表中删除某条信息时,子表中对应的信息也必须有相应的改变。
语法规则:
CONSTRAINT 外键别名 FOREIGN KEY(属性1.1, 属性1.2, ..., 属性1.n)
REFERENCES 表名(属性 2.1, 属性2.2, ..., 属性2.n)
具体例子见书上。
说明:
“外键别名”参数是为外键的代号;
“属性1”参数列表是子表中设置的外键;
“表名”参数是指父表的名称;
“属性2”参数列表是父表的主键。
注意:
子表的外键关联的必须是父表的主键,而且,数据类型必须一致。
6.1.4 设置表的非空约束
非空性是指字段的值不能为空值(NULL)。非空约束将保证所有记录中该字段都有值。如果新插入的记录中,该字段为空值,则数据库系统会报错。
设置表的非空约束是指在创建表时为表的某些特殊字段加上NOT NULL约束条件。
语法:
属性名 数据类型 NOT NULL
具体例子见书上。
6.1.5 设置表的唯一性约束
唯一性是指所有记录中该字段的值不能重复出现。
设置表的唯一性约束是指在创建表时,为表的某些特殊字段加上UNIQUE约束条件。
唯一性约束将保证所有记录中该字段的值不能重复出现。
语法:
属性名 数据类型 UNIQUE
6.1.6 设置表的属性值字典增加
AUTO_INCREMENT是MySQL数据库中一个特殊的约束条件。
主要用于为表中插入的新纪录自动生成唯一的ID。
一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
语法:
属性名 数据类型 AUTO_INCREMENT
技巧:
通常情况下,AUTO_INCREMENT都是作为ID字段的约束条件,而且将ID字段作为表的主键。
6.1.7 设置表的属性的默认值
创建表时,可以指定表中字段的默认值。
如果插入一条新的记录时,没有为这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。
语法规则:
属性名 数据类型 DEFAULT 默认值
具体例子见书上。
如果没有使用DEFAULT关键字指定字段的默认值,也没有指定字段为非空,那么字段的默认值为空(NULL)。
6.2 查看表结构
查看表结构是指查看数据库中已存在的表的定义。
包括:
DESCRIBE语句;
SHOW CREATE TABLE语句。
说明:
可以查看表的字段名、字段的数据类型、完整性约束条件等。
6.2.1 查看表基本结构语句DESCRIBE
语法形式:
DESCRIBE(或DESC) 表名;
例如:
DESC example1;
6.2.2 查看表详细结构语句SHOW CREATE TABLE
可以查看:
表的字段名;
字段的数据类型;
完整性约束条件;
表默认的存储引擎;
字符编码。
语法形式:
SHOW CREATE TABLE 表名;
详细例子见书上。
6.3 修改表
修改表是指修改数据库中已存在的表的定义。
MySQL中通过ALTER TABLE来修改表。
修改表包括:
修改表名;
修改字段数据类型;
修改字段名;
增加字段;
删除字段;
修改字段的排列位置;
更改默认的存储引擎;
删除表的外键约束等。
6.3.1 修改表名
语法形式:
ALTER TABLE 旧表名 RENAME [TO] 新表名;
说明:
TO参数是可选参数,是否在语句中出现不会影响语句的执行。
6.3.2 修改字段的数据类型
语法:
ALTER TABLE 表名 MODIFY 属性名 数据类型;
说明:
“表名”指所要修改的表的名称;
“属性名”指需要修改的字段的名称;
“数据类型”指修改后的新数据类型。
6.3.3 修改字段名
语法:
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
1.只修改字段名
2.修改字段名和字段数据类型
说明:MODIFY与CHANGE的区别详细见书上。
6.3.4 增加字段
语法:
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST| AFTER 属性名2];
说明:
“属性名1”参数指需要增加的字段的名称;
“数据类型”参数指新增加字段的数据类型;
“完整性约束条件”是可选参数,用来设置新增字段的完整性约束条件;
“FIRST”参数也是可选参数,作用是将新增字段设置为表的第一个字段;
“AFTER 属性名2”参数也是可选参数,作用是将新增字段添加到“属性名2”所指的字段后。
如果执行的SQL语句中没有“FIRST”“AFTER 属性名”参数指定新增字段的位置,新增的字段默认为表的最后一个字段。
1.增加无完整性约束条件的字段
一个完整的字段包括字段名、数据类型、完整性约束条件。
增加字段一般包括上述内容。
根据实际情况,一些字段可以不用完整性约束条件进行约束。
例如:
ALTER TABLE user ADD phone VARCHAR(20);
2.增加有完整性约束条件的字段
增加字段时,可以设置该字段的完整性约束条件,如设置字段是否为空(NULL)、是否为主外键(Key)、默认值(Default)、是否为自增类型等约束条件。
例如:
ALTER TABLE user ADD age INT(4) NOT NULL;
注意:
增加字段时,如果能够加上完整性约束条件,一定要加上。这样可以保证字段的安全性,提高整个表的数据的安全性。
3.表的第一个位置增加字段
默认情况下,新增字段为表的最后一个字段。如果加上FIRST参数,则可以将新增字段设置为表的第一个字段。
例如:
ALTER TABLE user ADD num INT(8) PRIMARY KEY FIRST;
4.表的指定位置之后增加字段
在新增字段时,由于特殊原因需要在表的指定位置增加字段。如果加上“AFTER 属性名2”参数,那么新增的字段插入在“属性名2”后面。
例如:
ALTER TABLE user ADD address VARCHAR(30) NOT NULL AFTER phone;
6.3.5 删除字段
删除字段是指删除已经定义好的表中的某个字段。在表创建完之后,如果发现某个字段需要删除,可以采用将整个表都删除,然后重新创建一张表的做法。
语法:
ALTER TABLE 表名 DROP 属性名;
说明:
“属性名”参数指需要从表中删除的字段的名称。
例如:
ALTER TABLE user DROP id;
6.3.6 修改字段的排列位置
语法:
ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;
说明:
“属性名1”参数指需要修改位置的字段的名称;
“数据类型”参数指“属性名1”的数据类型;
“FIRST”参数指定位置为表的第一个位置;
“AFTER 属性名2”参数指定“属性名1”插入在“属性名2”之后。
1.字段修改到第一个位置
FIRST参数可以指定字段为表的第一个字段。
2.字段修改到指定位置
ALTER可以将字段排在表中指定的字段之后。
例如:
ALTER TABLE user MODIFY sex TINYINT(1) AFTER age;
6.3.7 更改表的存储引擎
MySQL存储引擎是指MySQL数据库中表的存储类型。
MySQL存储引擎包括InnoDB、MyISAM、MEMORY等。
语法:
ALTER TABLE 表名 ENGINE=存储引擎名;
6.3.8 删除表的外键约束
在创建表时,外键约束就已经设定好了。
由于特殊需要,与父表之间的关联关系需要去除,要求删除外键约束。
语法:
ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
6.4 删除表
在创建表时可能存在外键约束,一些表成为了与之关联的表的父表。要删除这些父表,情况比较复杂。
6.4.1 删除没有被关联的普通表
DROP TABLE 表名;
6.4.2 删除被其他表关联的父表
创建表时,设置表的外键。这样就使数据库中的某些表之间建立了关联关系。一些表成为了父表,这些表被其子表关联着。直接删除会删除失败,原因是有外键依赖于该表。
先删除子表的外键约束,然后再删除父表。这种办法,不会影响子表的其他数据,可以保证数据库的安全。
详细操作和例子见书上。
6.7 常见问题及解答
1.字段改名后,为什么会有部分约束条件丢失?
2.如何设置外键?
3.为什么自增字段不能设置默认值?
参考文献:
1.《MySQL入门很简单》。
上一篇: JAVA学习——————Day18
下一篇: 查看、修改mysql数据库及表编码格式
推荐阅读
-
MySQL学习笔记之创建、删除、修改表的方法_MySQL
-
七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)
-
mysql创建create,修改alter,删除drop 数据库和表,以及解决显示中文乱码问题
-
MySQL学习(3) - 数据库和表的基本操作(创建、删除、查看、修改)
-
MySQL学习笔记之创建、删除、修改表的方法_MySQL
-
MySQL入门(五)表的创建、修改和删除_MySQL
-
MySQL入门教程(五)之表的创建、修改和删除_MySQL
-
MySQL入门教程(五)之表的创建、修改和删除_MySQL
-
《MySQL入门很简单》学习笔记(6)之第6章创建、修改和删除表(关键词:数据库/MySQL/创建表/修改表/删除表)
-
MySQL入门(五)表的创建、修改和删除_MySQL