注:一个数据库小白的成长之路
创建表
1.表创建基础
创建表时需给出以下信息:
- 新表的名字,在关键字CREATE TABLE之后给出
- 表列的名字和定义,用逗号分隔
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(50) NULL,
cust_zip char(5) NULL,
cust_country char(50) NULL,
cust_contact char(50) NULL,
cust_email char(255) NULL,
PRIMARY KEY (cust_id)
) ENGINE = InnoDB;
2.使用NULL值
每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。
允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行。
NULL为默认值,如果不指定NOT NULL,则认为指定的是NULL。
3.主键再介绍
主键必须唯一。如果主键使用单列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。
主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。
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;
orderitems表中order_num列和order_item列的组合是唯一的,所以利用它们的组合作为主键。
4.使用AUTO_INCREMENT
CREATE TABLE books
(
book_id int NOT NULL AUTO_INCREMENT,
book_name char(50) NOT NULL,
book_price decimal(8, 2) NULL,
PRIMARY KEY (book_id)
) ENGINE = InnoDB;
一般在主键所在的列添加关键字AUTO_INCREMENT,当表中增加一行时,MySQL自动对该列进行增量。而且每个表只允许一个AUTO_INCREMENT列
5.指定默认值
CREATE TABLE books
(
book_id int NOT NULL AUTO_INCREMENT,
book_name char(50) NOT NULL,
book_price decimal(8, 2) NOT NULL DEFAULT 20,
PRIMARY KEY (book_id)
) ENGINE = InnoDB;
当未给出book_price的值时,默认为20
注:与大多数DBMS不同,MySQL不允许使用函数作为默认值,它只支持常量。
6.引擎类型
引擎 | 说明 |
---|---|
InnoDB | 一个可靠的事务处理引擎,它不支持全文本搜索。 |
MEMORY | 功能等同于MyISAM,但由于数据存储在内存中,速度很快。 |
MyISAM | 一个性能极高的引擎,它支持全文本搜索。 |
更新表
更新表时需给出以下信息:
- 在ALTER TABLE之后给出要更改的表名
- 所做更改的列表
ALTER TABLE vendors
ADD vend_phone char(20);
给vendors表增加了一个名为vend_phone的列
ALTER TABLE vendors
DROP column vend_phone
删除vend_phone列
删除表
DROP TABLE customers2;
重命名表
RENAME TABLE backup_customers TO customers,
backup_vendors TO vendors,
backup_products TO products;
注意
- 删除表中的某一行用
delete from table1 where primary_key = 'a';
- 删除表中的某一列用
alter table table1 drop column column1;