MySQL创建和操纵表.md

21.1 创建表

创建表的方式有两种,
1. 使用交互式创建和管理表的工具;
2. 表也可以直接使用MySQL语句操纵。

21.1.1 表创建基础

使用CREATE TABLE,必须给出如下信息,
1. 在CREATE TABLE之后,给出新表的名称;
2. 表列的名字和定义,用逗号分隔;
3. 表的主键PRIMARY KEY可以在创建表时给出;
4. 最终给出使用的数据库类型。

CREATE TABLE customers
(
    cust_id    int    NOT NULL AUTO_INCREMENT,
    cust_name    char(50)    NOT NULL,
    cust_address    char(50)    NULL,
    cust_city    char(50)    NULL,
    cust_state    char(5)    NULL,
    cust_zip    char(10)    NULL,
    cust_country    char(50)    NULL,
    cust_contact    char(50)    NULL,
    cust_email    char(255)    NULL,
    PRIMARY KEY    (cust_id)
)    ENGINE=InnoDB;

分析,当创建新表时,若已经存在表,需要先删除,否则会报错。当表不存在时创建它,需要使用IF NOT EXISTS

21.1.2 使用NULL

  1. 若创建表时,不允许NULL值的列。如果强行插入,会报错,且插入失败。
    • 不要把NULL值和空串(两个单引号,中间没有字符'')混淆。空串是个有效值。

21.1.3 主键再介绍

     主键必须唯一。即每个行必须具有唯一的主键值。通常使用的都是单列作为主键。为创建由多个列组成的主键,应该以逗号分割的列表给出各列名,如下

CREATE TABLE orderitems
(
    order_num    int    NOT NULL,
    order_item    int    NOT NULL,
    prod_id        char(10)    NOT NULL,
    quantity        int    NOT NULL,
    item_price    decimal(8, 2)    NOT NULL,
    PRIMARY KEY (order_num, order_item)
)    ENGINE=InnoDB

21.1.4 使用AUTO_INCREMENT

  • 简要说明下需要注意的地方,
    1. 覆盖AUTO_INCREMENT。如果一个列被指定为AUTO_INCREMENT,当想要使用特殊值,只需要赋值一个唯一值即可,后续的增量开始于手工值。
    2. 可以使用last_insert_id来获取AUTO_INCREMENT的增量值。SELECT last_insert_id

21.1.5 指定默认值

使用默认值,需要使用DEFAULT关键字
- 与大多数的DBMS不同,MySQL不允许使用函数作为默认值

21.1.6 引擎类型

MySQL打包了多个引擎。由于各自的功能和特性,为不同的认为选择正确的引擎获取良好的功能和灵活性。
1. InnoDB是一个可靠的事务处理引擎,不支持全文检索;
2. MEMORY在功能上等同于MyIASM,但数据存储在内存,速度很快,适合临时表
3. MyISAM是一个性能极高的引擎,支持全文检索
- 引擎可以混用,但是外键不能跨引擎。一个引擎的表不能引用具有使用不同引擎的表的外键。

21.2 更新表

     使用ALTER TABLE语句,但理想状况下,不期望做更新表的动作,都在创建前进行考虑。为使用ALTER TABLE更改表结果,必须提高一下信息,
1. 在ALTER TABLE之后给出表名称;
2. 所做更改的列表。
如下,添加和删除列,

ALTER TABLE vendors
ADD vend_phone CHAR(20);

ALTER TABLE vendors
DROP COLUMN vend_phone;

复制的表结果更改,需要进行手动删除操作,
1. 用新的列布局创建一个新表;
2. 使用INSERT SELECT语句从旧表中复制数据。如有必要,使用转换函数和计算字段;
3. 检验包含数据的新表;
4. 重命名旧表;
5. 用旧表的名称重命名新表;
6. 根据需要,重新创建触发器、存储过程、索引和外键。

21.3 删除表

     删除表的操作,使用DROP TABLE语句

DROP TABLE customer32
  • 注意,没有撤销操作

21.4 重命名表

     重命名表的操作,使用RENAME TABLE语句

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值