【MySQL必知必会】第21章:表的更新与删除

21.1 创建表

创建表一般有两种方法:

  • 使用具有交互式创建和管理表的工具(IDE)
  • 直接使用MySQL语句CREATE TABLE进行创建
CREATE TABLE table_name(
    col1    type    ...
    col2    type    ...
    col3    type    ...
) ENGINE=;
  • 使用CREATE TABLE关键字后还需要定义列(指定其类型以及其他属性:如主键、默认值等)
  • 搜索引擎指定不唯一
  • 在处理现有的表时需要格外小心,防止意外覆盖已有的表

21.2 定义列的其他属性

21.2.1 NULL值

对列可以指定是NULL或者NOT NULL;如果定义列含有NOT NULL关键字时,若没有插入该列的值则会报错;NULL则相反

  • NULL与空串不同,NULL时没有值,而空串为「' '」,本质上还是一个字符串值

21.2.2 PRIMARY KEY主键

每个表中的主键必须唯一,可以使用PRIMARY KEY(col_name)来指定表中的某一列作为主键;也可以直接在创建列中指定列属性col type PRIMARY KYE

21.2.3 AUTO_INCREMENT自增

  • AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量
  • 每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如:通过使它成为主键)。

21.2.4 DEFAULT默认值指定

如果不希望某列的值不为空,但又暂时不用修改,那么可以使用默认值来设定最开始的值;直接使用DEFAULT 值即可

  • MySQL不允许使用函数作为默认值,它只支持常量

21.2.5 引擎类型

MySQL服务器有着许多种引擎,各自都具备着不同的功能和特性,以便能提高搜索的性能;在创建表时可以使用ENGINE=引擎名来指定,主要有以下几个引擎:

  • InnoDB:事务处理引擎,不支持全文本搜索
  • MyISAM:性能极高的引擎,它支持全文本搜索,但不支持事务处理。
  • MEMORY:功能等同于MyISAM,但数据存储在内存(而不是磁盘),速度很快(特别适合于临时表)

以上引擎类型可以混用,以便弥补引擎的局限;MyISAM一般为最受欢迎的引擎,但根据特性来对引擎进行选择

21.3 更新表

对表定义后可以使用ALTER TABLE来对表中的定义列进行调整;但是理想状态下,当表中存储数据以后,该表就不应该再被更新。

#增加字段
ALTER TABLE vendors
ADD vend_phone CHAR(20);

#删除字段
ALTER TABLE vendors
DROP vend_phone;
  • 使用ADDDROP关键字可以来对字段进行增删

除了基本的增删功能外,ALTER TABLE的一种常见用途是定义外键:

ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREIGN KEY (order_num) REFERENCES orders (order_num);
  • ADD CONSTRAINT用于指定外键名
  • FOREIGN KEY来指定orderitems表的order_num字段为外键,用REFERENCES关键字来连接orders表的order_num字段

但是在使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。因为数据库的操作无法撤销

21.4 删除表

使用DROP TABLE语句即可删除表(删除表而不是其内容):

DROP TABLE customers2;
  • 删除表没有确认,也不能撤销,执行这条语句将永久删除该表。因此要格外小心。

21.5 重命名表

使用RENAME TABLE语句可以对表的名字进行修改:

RENAME TABLE customers TO customers;
  • 使用TO关键字来指定新表名
  • RENAME TABLE语句还可以对多个表进行重命名,只需要使用逗号将每一个命名语句隔开即可

你可能感兴趣的:(【MySQL必知必会】第21章:表的更新与删除)