如何改、删、增数据表。

1. 操作表

1.1 创建表

一般来说创建表的方法有两种:

  • 使用交互式工具创建,比如Navicat
  • 直接用MySQL语句操作

在创建时我们必须明确以下信息:

  • 新表的名字,在关键词CREATE TABLE之后给出
  • 表列的名字和定义,用逗号分隔

比如:

mysql> CREATE TABLE food
    -> (
    -> food_id int NOT NULL AUTO_INCREMENT,
    -> food_name char(50) NOT NULL,
    -> PRIMARY KEY(food_id)
    -> )
    -> ENGINE=InnoDB;
Query OK, 0 rows affected (0.32 sec)

上面这个例子中我们可知,创建时需要注意:

  • 表名紧跟在CREATE TABLE关键字后
  • 之后需要用括号将信息括起来
  • 每一行代表表中的一列,由名字-数据类型-属性决定
  • 需要指定主键
  • 结尾需要制定引擎

AUTO_INCREMENT的作用是:当执行INSERT操作时,根据上一个ID自动增量。每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(比如称为主键)。

可以指定默认值,比如

quantity int NOT NULL DEFAULT 1,

常见的引擎有:

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

2. 更新删除表

添加一个列

ALTER TABLE vendors
ADD vend_phone CHAR(20);

删除列

ALTER TABLE vendors
DROP COLUMN vend_phone;

删除表

DROP TABLE customers2;

重命名表

RENAME TABLE customers TO customers;

2. 操作数据

2.1 插入数据

把数据插入表中的最简单的方法是使用基本的INSERT语法,要求指定表名和被插入到新行中的值。举个例子:

INSERT INTO customers
  VALUES (NULL,
    'Pep E. LaPew',
    '100 Main Street',
    'Coyote Inc.',
  );

上面的SQL 语句高度依赖于表中列的定义次序,容易出错,所以我们最好用比较安全的办法。

INSERT INTO customers (cust_id,
     cust_name,
     cust_address,
     cust_city,
  ) VALUES (NULL,
    'Pep E. LaPew',
    '100 Main Street',
  );

也可以插入多行:

INSERT INTO customers (cust_id,
     cust_name,
     cust_address,
  ) VALUES (NULL,
    'Pep E. LaPew',
  ),VALUES (10002,
     'Mouse house',);

2.2 更新和删除数据

假设客户10005有了新的电子邮件,因此记录需要更新,语句如下:

UPDATE customers
  SET cust_email = 'jack@gmail.com'
  WHERE cust_id = 10005;

删除

DELETE FROM customers
  WHERE cust_id = 10006;