MYSQL学习笔记(十七)创建和操纵表

来源:互联网 发布:拜亚动力耳机知乎 编辑:程序博客网 时间:2024/06/07 01:17
  1. 创建表的两种方法
    使用交互式创建和管理表的工具
    直接用MYSQL语句操纵
  2. 表创建基础
    CREATE TABLE Products
    (
    prod_id int NOT NULL,
    vend_id char10) NOT NULL,
    prod_name char(254) NOT NULL,
    prod_price decimal(8,2) NOT NULL,
    prod_desc varchar(1000) NULL,
    PRIMARY KEY(prod_id)
    ) ENGINE=InooDB;;
    表名紧跟CREATE TABLE关键字
    在圆括号内每列定义列名,后跟列的数据类型
    PRIMARY KEY()指定主键
  3. 使用NULL值
    允许NULL值的列允许在插入行时不给出该列的值,NOT NULL必须给值
  4. 主键再介绍
    主键值必须唯一。表中每个行必须具有唯一的主键值
    主键只能用于NOT NULL的列
  5. 使用AUTO_INCREMENT
    prod_id int NOT NULL AUTO_INCREMENT,
    AUTO_INCREMENT使该列每当增加一行自动增量,是每个行分配唯一prod_id,从而用作主键值
    每个表中只允许一个AUTO_INCREMENT列,而且必须被索引
  6. 获得最后一个AUTO_INCREMENT值
    SELECT last_insert_id()
  7. 指定默认值
    CREATE TABLE OrderItems
    (
    order_num int NOT NULL,
    order_item int NOT NULL,
    prod_id char(10) NOT NULL,
    quantity int NOT NULL DEFAULT 1,
    item_price decimal(8,2) NOT NULL
    PRIMARY KEY(order_num,order_item)
    )ENGINE=InooDB;
    quantity列包含数量,DEFAULT1表示在未给出数量的情况下使用数量1
  8. 引擎类型
    ENGINE=InooDB语句结束表示所选用的数据库引擎,省略语句将使用默认引MyISAM
    各引擎类型:
    InnoDB是一个可靠的事务处理引擎,不支持全文本搜索
    MEMORY的功能等同于MyISAM,但由于数据存储在内存,速度很快
    MyISAM是一个性能极高的引擎,支持全文本搜索,但不支持事务处理
  9. 更新表
    ALTER TABLE vendors
    ADD vend_phone char(20);
    给vendors表增加一个名为vend_phone的列
    ALTER TABLE vendors
    DROP COLUMN vend_phone;
    删除vend_phone的列
  10. 定义外键
    ALTER TABLE orderitems
    ADD CONSTRAINT fk_orderitems_orders
    FOREIGN KEY (order_num) REFERENCES orders (order_num);
  11. 复杂表结构的更改步骤
    (1)用新的列布局创建一个新表;
    (2)使用INSERT SELECT语句从旧表复制数据到新表。有必要的话,可以使用转换函数和计算字段;
    (3)检验包含所需数据的新表;
    (4)重命名旧表(如果确定,可以删除它);
    (5)用旧表原来的名字重命名新表;
    (6)根据需要,重新创建触发器、存储过程、索引和外键
  12. 删除表
    DROP TABLE CustCopy;
    删除CustCopy表。删除表没有确认,也不能撤销
  13. 重命名表
    RENAME TABLE customer2 TO customers,
    customer3 TO customers1;
阅读全文
0 0