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;