【MySQL】MySQL学习笔记(四)数据表的基本操作

时间:2022-07-13 14:06:42

1 创建数据表

  在数据库中,数据表是最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的,每一行代表一条唯一的记录,每一列代表记录中的一个域。

1.1 创建表的语法形式

  • 在创建表之前,首先确认操作是在哪个数据库上进行,其语法是:
use database_name;
  • 创建数据表的语法规则为:
create table table_name
(
    column_name data_type [constraint] [default value],
    ...
    [constraint]
);
  • 注意:
    • SQL中不区分大小写
    • 每一条SQL语句都是以分号结束
    • 创建表的名称不能使用SQl中的关键字
    • 创建多列,每一列用逗号分隔

1.2 使用主键约束

  主键,是表中一列或多列的组合,主键约束要求主键列的数据唯一,且不能为空。主键能够唯一地标识表中的一条记录。一张表最多只能有一个主键,主键分为两种类型:单字段主键和多字段联合主键。

  • 单字段主键
    • 定义:单字段主键由一个字段组成
    • 语法:
      • 列级语法:column_name data_type PRIMARY KEY [default value]
      • 表级语法:[constraint constrain_name] PRIMARY KEY (column_name)
  • 多字段联合主键
    • 定义:主键由多个字段联合组成
    • 语法:
      • 表级语法:[constraint constrain_name] PRIMARY KEY (column_name,...)

1.3 使用外键约束

  外键用来在两个表的数据之间建立链接,它可以是一列或者多列,一个表可以有多个外键,一个表的外键可以为空值,外键的主要作用是保证数据引用的一致性、完整性。

  • 创建外键的语法规则:
[constraint constrain_name] FOREIGN KEY (column_name,...) REFERENCES table_name (column_name,...)
  • 注意:同一个表中不能有相同名称的外键,在进行外键关联时,字段之间的类型必须一致。
  • 注意:外键约束不可以跨引擎使用,同时由于仅InnoDB引擎支持外键,所以,使用外键时,父表和子表只能使用InnoDB存储引擎

1.4 使用非空约束

  非空约束指字段的值不能为空。

  • 创建非空约束的语法规则:
column_name data_type [default value] NOT NULL

1.5 使用唯一性约束

  唯一性约束要求该列唯一,允许为空,但只能出现一个空值,唯一性约束可以确保一列或者几列不出现重复值。

  • 语法:
    • 列级语法:column_name data_type UNIQUE
    • 表级语法:[constraint constrain_name] UNIQUE (column_name)

1.6 使用默认约束

  默认约束指定某列的默认值,如果插入一条新的记录时没有为这个字段赋值,那么系统自动为这个字段赋值为默认值。

  • 语法:column_name data_type default value

1.7 设置表的属性值自动增加

  通过为表主键添加AUTO_INCREMENT关键字,实现主键值自增,每张表中只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分,同时被约束的字段必须为整数类型(TINYINT、SMALLINT、INT、BIGINT等)。

  • 设置表的属性自增的语法规则:
column_name data_type AUTO_INCREMENT

2 查看数据表结构

  在MySQL中,查看表结构可以使用DESCRIBE和SHOW CREATE TABLE语句。

2.1 查看表基本结构语句DESCRIBE

  • DESCRIBE/DESC语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否为默认值等,语法规则如下:
describe|desc table_name;

2.2 查看表详细结构语句SHOW CREATE TABLE

  • SHOW CREATE TABLE用来显示创建表时的CREATE TABLE语句,语法格式如下:
show create table table_name;

3 修改数据表

  修改表指的是修改数据库中已经存在的数据表的结构,MySQL使用ALTER TABLE语句修改表。

3.1 修改表名

  • MySQL是通过ALTER TABLE语句实现表名的修改,其语法格式如下:
alter table old_table_name rename [to] new_table_name;

3.2 修改字段的数据类型

  • 修改字段的数据类型,就是把字段的数据类型转换成另外一种数据类型,其语法格式如下:
alter table table_name modify column_name data_type;
  • 注意:假如表中有数据,修改字段类型可能失败或导致数据丢失

3.3 修改字段名

  • 修改字段名,其语法格式如下:
alter table table_name change old_column_name new_column_name data_type;
  • 注意:数据类型不能为空,假如不修改数据类型,将数据类型设置为和原来一致即可,假如表中有数据,慎重使用该功能

3.4 添加字段

  • 在已有的表中添加新的字段,其语法格式如下:
alter table table_name add column_name data_type [constraint] [first|after column_name];
  • 注意: first的作用是将新添加字段设置为表的第一个字段。after column_name是将新添加字段添加到指定字段之后。

3.5 删除字段

  • 删除字段是将数据表中的某个字段从表中移除,其语法格式如下:
alter table table_name drop column_name;

3.6 修改字段的排列位置

  • 使用ALTER TABLE修改字段的排列位置,不影响已有数据,语法格式如下:
alter table table_name modify column_name data_type first|after column_name;

3.7 更改表的存储引擎

  • 新建表的默认存储引擎是InnoDB,可以修改表格的存储引擎,用以满足和提升表格性能,其语法格式如下:
alter table table_name engine=[InnoDB|MyISAM|MEMORY|Archive...];

3.8 删除表的外键约束

  • 外键不再需要,可以删除,一旦删除,解除主表和从表之间的关系,其语法格式如下:
alter table table_name drop foreign key constrain_name;

4 删除数据表

  删除数表就是将数据库中已经存在的表从数据库中删除,删除表时,表的定义和表中的所有数据均会被删除。

4.1 删除没有被关联的表

  • MySQL中使用DROP TABLE可以一次删除一个或多个没有被其它表关联的数据表,语法格式如下:
drop table [if exists] table_name,...;

4.2 删除被关联的表

  • 删除被关联过的表,需要先删除与他关联的子表再删除父表,或者先取消外键约束,再删除父表,取消约束后,同删除没有被关联的表的语法。