表是数据库存储数据的基本单位,在表中可以存储不同的字段和数据记录。表的基本操作包括新建表、修改表和删除表。创建表的过程是规定数据列属性的过程,同时也是实现数据库数据完整性和约束性的过程。接下来介绍有关表的操作。
1.创建表
创建表的基本格式如下所示。
创建表格式关键字说名明表所示。
在创建表之前需要使用“USE 数据库名”切换到要操作的数据库。
2.创建表指定默认值
在表中设置列属性时,列可以指定默认值。在表中插入数据时如果未主动设置,则该列会自动添加默认值。基本用法如下。
在上方代码中 null 表示为空值,并不是字符串类型。 not null 表示不为空值,在添加数据时必须给值。
3. 创建表指定自增
如果设置某列为自增列,插入数据时无须设置此列的值,默认此列的数值自增。需要注意,一个表中只能存在一个自增列。使用方法如下。
其中 auto_increment 表示自增, primary key 表示外键约束。数据表的创建如例所示。
查看数据库 qianfeng 是否存在。如果存在,则进入 qianfeng 数据库来创建 stu 表;如果不存在,则创建 qianfeng 数据库。
出现 Database changed 提示表示已经成功切换到了数据库 qianfeng。接下来创建数据表 stu, SQL语句如下所示。
此时可以查看数据表是否创建成功,使用 SHOW TABLES 语句即可。 SQL 语句如下所示。
从上方代码的执行结果可看出,数据库 qianfeng 中已经成功创建 stu 表。
4.查看数据表属性
数据表创建完成后,可以使用 SHOW CREATE TABLE 命令查看数据表的属性,其语法格式如下所示。
查看前面创建的 stu 表, SQL 语句如下所示。
从上方执行结果中可看出, SHOW CREATE TABLE 不仅可以查看表中的列,还可以查看表的字符编码等信息,但是显示的格式非常混乱。可以在查询语句后加上参数“\G”进行格式化, SQL 语句如下所示。
执行结果中,显示的格式明显比先前整齐很多。另外,如果只想查看表中列的相关信息,可以使用 DESCRIBE 语句,语法格式如下所示。
还可以使用 DESCRIBE 的简写形式 DESC 进行查看, SQL 语句如下所示
这两种查询方式结果是一样的,因此一般使用简写的方式来查询。
5.删除数据表
在 MySQL 中使用 DROP TABLE 语句删除数据表中的内容和表结构,这里可以理解为彻底删除表,其语法格式如下所示。
将表 stu 删除, SQL 语句如下所示。
从上方代码的执行结果可以看出英雄信息表 stu 被成功删除。在实际生产环境中,需要对所删除的信息核对无误后再进行删除操作,此语句需谨慎执行,避免数据丢失。
表的高级操作
数据表基本结构创建完成后,即可在表中插入或者修改数据。插入数据可以分为向所有列插入数据、向指定的列插入数据、批量插入数据等。修改表可以分为修改表结构、修改表名或删除表中指定数据等。下面将详细介绍这些关于表的高级操作。
Ø 数据的插入
关系型数据库在操作数据时需要保持数据的一致性,在数据表中插入数据需要保持字段与值的一一对应,即一个字段对应一个值。 MySQL 数据库插入数据使用 INSERT 语句,基本用法分为以下两种。
1.为所有列插入数据
使用 INSERT 语句列出表的所有字段可以向表中插入数据,根据数据量不同分为以下两种情况。
( 1)插入一条数据的语法格式如下。
( 2)同时插入多条数据的语法格式如下。
INSERT 语句格式中,“字段名 1,字段名 2”是数据表中的字段名称, VALUES 中的“值 1,值 2”是对应每个字段添加的数据。需要注意,这里必须列出表中所有字段的名称,且值的顺序、类型必须与语句中的字段名顺序对应。
2.查看表内容
数据插入后可以通过 SELECT 指令查询表中的信息。语句的基本格式如下。
插入和查看数据语句的基本使用方法如例所示。
查看数据库 qianfeng 中是否存在 stu 表, SQL 语句操作流程如下所示。创建表的具体流程可以参照例。
以上执行结果证明表创建完成,为了进一步验证,可以使用 DESC 查看库中的 stu 表的列属性,SQL 语句如下所示。
从以上执行结果可看出, stu 数据表格式满足需求。接下来使用 INSERT 语句将表中的信息插入 stu 表。具体代码执行过程如下所示。
上方代码的执行结果证明插入数据完成。为了进一步验证,使用 SELECT 语句查看 stu 表中的内容, SQL 语句如下所示。
从以上执行结果可看出, stu 表中的数据成功插入。因为表中只插入了一条记录,所以只查询到了一条结果。
3.为指定列插入数据
在实际场景中,遇到较多的情况是只需在表中添加某几个字段的数据,即为指定列插入数据,语法格式如下所示。
从上面的代码可以看出,只需要对字段 1、字段 3 进行数值插入,字段 2 不需要插入数据,在进行操作时字段 2 的值会默认设为空值。
为 stu 表插入数据,且只插入前四个字段的数据, SQL 语句如下所示。
Ø 删除表内容
1. DELETE 语句
MySQL 中可以使用 DELETE 语句删除表中数据,语法格式如下所示。
WHERE 条件语句是可选的,用于指定要删除的数据满足的条件。通过 DELETE 语句可以实现删除全部数据或者删除部分数据,接下来对这两种情况进行详细讲解。
( 1)使用 DELETE 删除全部数据
当 DELETE 语句中不使用 WHERE 条件语句时,将会删除表中全部数据。将 stu 表中所有数据都删除,首先使用 SELECT 语句查看表中的数据, SQL 语句如下所示。
从以上执行结果可看到表中一共 6 条数据,现在将表中全部数据删除, SQL 语句如下所示。
如上执行结果说明删除成功。为了进一步验证,可以使用 SELECT 语句查看表中的数据, SQL语句如下所示。
从以上执行结果可看到表中已经没有数据,证明删除成功。
( 2)使用 WHERE 条件删除部分数据
前面讲解了删除全部数据的方法,但在实际开发中大多数需求是删除表中的部分数据,使用WHERE 子句可以指定删除数据的条件。
以上执行结果说明成功删除了一条数据。为了进一步验证,可以使用 SELECT 语句查看 stu 表中的数据, SQL 语句如下所示。
从以上执行结果可看到, stu 表中 name 为“德玛西亚之力”的信息记录已经被删除。
将 stu 表中 age 小于 21 的角色信息删除。
使用 SELECT 语句查看 stu 表中的数据进行验证。
从以上执行结果可看到, stu 表中 age 小于 21 的信息记录已经被删除。
2.TRUNCATE 语句
MySQL 中还有一种方式可以删除表中的所有数据,这种方式需要用到 TRUNCATE 关键字,语法格式如下所示。
接下来演示 TRUNCATE 语句的使用。
利用 TRUNCATE 关键字将 stu 表中所有数据删除。
使用 SELECT 语句查看 stu 表中的数据。
从以上执行结果可看到, stu 表中全部数据成功删除。
TRUNCATE 语句和 DELETE 语句都能实现删除表中的所有数据,但两者是有一定区别的,它们的区别如下。
( 1) DELETE 语句是 DML 语句, TRUNCATE 语句通常被认为是 DDL 语句。
( 2) DELETE 语句后面可以跟 WHERE 子句,指定条件从而实现删除部分数据; TRUNCATE 语句只能用于删除表中所有的数据。
( 3)使用 TRUNCATE 语句删除表中数据后,再次向表中添加记录时,自增的字段值默认重置为1;而使用 DELETE 语句删除表中数据后,再次向表中添加记录时,自增的字段值为删除时该字段的最大值加 1。
Ø 修改数据表
前面讲解了如何创建和查看数据表,在实际开发中,数据表创建完成后,可能会对数据表的表名、表中的字段名、字段的数据类型等进行修改。接下来对数据表的修改进行详细讲解。
1.修改表名
在 MySQL 中,修改表名的语法格式如下所示。
关键字 TO 是可选的,是否写 TO 关键字不会影响 SQL 语句的执行,一般忽略不写。接下来通过具体实例演示表名的修改。
将例 3-3 中创建的 stu 表的表名修改为 student。
使用 SHOW TABLES 语句进行验证。
从以上执行结果可看出, stu 表名成功修改为 student。
2.修改字段名
数据表中的字段名也时常有变更的需求,修改字段名的语法格式如下所示。
接下来通过具体实例演示字段名的修改。
将 student 表中的 text 字段修改为 type 字段,数据类型为 VARCHAR(200)。
如上执行结果证明字段名修改完成。使用 DESC 查看 student 表进行验证。
从以上执行结果可看出, student 表中的 text 字段成功修改为 type 字段。
3.修改字段的数据类型
上面讲解了如何修改表中的字段名,但有时并不需要修改字段名,只需修改字段的数据类型。修改表中字段数据类型的语法格式如下所示。
将 student 表中的 gender 字段的数据类型修改为 CHAR。
如上执行结果证明字段数据类型修改完成。为了进一步验证,可以使用 DESC 查看 student 表。
从以上执行结果可看出, student 表中的 gender 字段数据类型成功修改为 CHAR。
4.添加字段
在实际开发中,随着需求的扩展,表中可能需要添加字段。 MySQL 中添加字段的语法格式如下所示。
在 student 表中添加 power 字段,数据类型为 VARCHAR(100)。
使用 DESC 查看 student 表进行验证。
从 以 上 执 行 结 果 可 看 出 , student 表 中 添 加 了 power 字 段 , 并 且 该 字 段 的 数 据 类 型 为VARCHAR(100)。
5.删除字段
删除表中某一字段也是很可能出现的需求, MySQL 中删除字段的语法格式如下所示。
将 student 表中 power 字段删除。
如上执行结果证明字段删除成功。为了进一步验证,可以使用 DESC 查看 student 表, SQL 语句如下所示。
从以上执行结果可看出, student 表中删除了 power 字段。
6.修改字段的排列位置
在创建表时,表中字段的位置就已经确定,如果要修改表中字段的位置,同样需要使用 ALTERTABLE 来修改。 MySQL 中修改字段排列位置的语法格式如下所示。
“字段名 1”是要修改位置的字段; FIRST 是可选参数,表示将字段 1 修改为表的第一个字段;“AFTER 字段名 2”表示将字段 1 插到字段 2 的后面。
将 student 表中 name 字段放到 gender 字段后面。
使用 DESC 查看 student 表进行验证。
从以上执行结果可看出, student 表中 name 字段排列在 gender 字段后面了。
计算机随着时间的变化对数据进行不断的处理,数据不会保持一成不变。在 MySQL 中使用UPDATE 语句可以更新表中的数据,语法格式如下所示。
如上语法格式中, “字段名”用于指定要更新的字段名称, “值”用于表示字段的新数据,如果要更新多个字段的值,可以用逗号分隔多个字段和值; WHERE 条件表达式是可选的,用于指定更新数据需要满足的条件。 UPDATE 语句可以更新表中的全部数据或部分数据,接下来对这两种情况进行详