数据库入门:MySQL必知必会(二十一)创建和操纵表

01. 创建表

MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。

  1. 一般有两种创建表的方法:
    1.1 使用具有交互式创建和管理表的工具
    1.2 表也可以直接用MySQL语句操纵
  2. 表创建基础:
    2.1 利用CREATE TABLE创建表,必须给出下列信息:
    新表的名字: 在关键字CREATE TABLE之后给出;
    表列的名字和定义: 用逗号分隔;
    2.2 创建所用的customers表:
    CREATE
    2.3 实际的表定义(所有列)括在圆括号之中,各列之间用逗号分隔;
    2.4 表的主键可以在创建表时用PRIMARY KEY关键字指定;
    2.5 在创建新表时,指定的表名必须不存在,否则将出错;
  3. 使用NULL值:
    每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定:
    null
    3.1 每个列的定义都含有关键字NOT NULL,这将会阻止插入没有值的列;
    3.2 创建混合了NULL和NOT NULL列的表:
    NOT NULL
    3.3 NULL 为默认设置,如果不指定NOT NULL,则认为指定的是NULL;
  4. 主键再介绍:
    主键值必须唯一,表中的每个行必须具有唯一的主键值;如果主键使用单个列,则它的值必须唯一;如果使用多个列,则这些列的组合值必须唯一
    4.1 创建由多个列组成的主键,应该以逗号分隔的列表给出各列名:
    多列组合主键
    4.2 主键中只能使用不允许NULL值的列,允许NULL值的列不能作为唯一标识;
  5. 使用AUTO_INCREMENT:
    customers表中的顾客由列cust_id唯一标识,每个顾客有一个唯一编号;这些编号除它们是唯一的以外没有别的特殊意义,在增加一个新顾客或新订单时,需要一个新的顾客ID或订单号。
    5.1 这些编号可以任意,只要它们是唯一的即可。显然,使用的最简单的编号是下一个编号,所谓下一个编号是大于当前最大编号的编号;
    5.2 这就是AUTO_INCREMENT发挥作用的时候了:
    AUTO_INCREMENT
    5.3 每次执行一个INSERT操作时,MySQL 自动对该列增量
    5.4 每个表只允许一个AUTO_INCREMENT列,而且它必须被索引
    5.5 如何在使用AUTO_INCREMENT列时获得这个值呢?可使用last_insert_id() 函数获得这个值,此语句返回最后一个AUTO_INCREMENT值:
    last_insert_id()
  6. 指定默认值:
    如果在插入行时没有给出值,MySQL允许指定此时使用的默认值,默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。
    指定默认值1
    指定默认值2
    6.1 DEFAULT 1指示MySQL,在未给出数量的情况下使用数量1;
    6.2 MySQL 不允许使用函数作为默认值,它只支持常量;
  7. 引擎类型:
    如果省略 ENGINE= 语句,则使用默认引擎(很可能是MyISAM),多数SQL语句都会默认使用它;
    以下是几个需要知道的引擎:
    7.1 InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索
    7.2 MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
    7.3 MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理

02. 更新表

为更新表定义,可使用ALTER TABLE语句。但是,理想状态下,当表中存储数据以后,该表就不应该再被更新。在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。

  1. 为了使用ALTER TABLE更改表结构,必须给出下面的信息:
    1.1 在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错);
    1.2 所做更改的列表;
  2. 给表添加一个列:
    ALTER
  3. 删除刚刚添加的列:
    DROP
  4. ALTER TABLE的一种常见用途是定义外键:
    定义外键
  5. 复杂的表结构更改一般需要手动删除过程,它涉及以下步骤:
    5.1 用新的列布局创建一个新表
    5.2 使用INSERT SELECT语句从旧表复制数据到新表,如果有必要,可使用转换函数和计算字段;
    5.3 检验包含所需数据的新表;
    5.4 重命名旧表(如果确定,可以删除它);
    5.5 用旧表原来的名字重命名新表;
    5.6 根据需要,重新创建触发器、存储过程、索引和外键。

03. 删除表

删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE语句即可:
DROP

04. 重命名表

使用RENAME TABLE语句可以重命名一个表:
RENAME1
对多个表重命名:
RENAME2

05.下一篇:使用视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值