19.基础-创建和操纵表
创建表
输入:CREATE TABLE customers //新表的名字是customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL, //表列的名字和定义,用逗号分隔
cuat_address char(50) NULL,
PRIMARY KEY(cust_id) //指定主键
) ENGINE=InnoDB;
处理现有的表:在创建新表时,指定的表名必须不存在,否则将出错。如果要防止意外覆盖已有的表,SQL要求首先手工删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。如果你仅想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS;它将查看表名是否存在,并且仅在表名不存在时创建它;
NULL值:允许NULL值的列也允许在插入行时不给出该列的值;不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值;每个表列或者是NULL列,或者是NOT NULL列,。NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL;
主键:如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一;为创建由多个列组成的主键,应该以逗号分隔的列表给出各列名;如,PRIMARY KEY(cust_id,order_num);主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识,即便主键是由多个列组成的;
AUTO_INCREMENT:本列每增加一行时,该列的值自动增加;每个表只允许一个AUTO_INCREMENT列,而且它必须被索引;
指定默认的值:如果在插入行时没有给出值,MySQL允许指定此时使用的默认值;默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定;与大多数DBMS不一样,MySQL不允许使用函数作为默认值,它只支持常量;
更新表
输入:ALTER TABLE vendors //表名必须存在,否则会出错
ADD vend_phone CHAR(20); //添加列
输入:ALTER TABLE vendors //表名必须存在,否则会出错
DROP COLUMN vend_phone CHAR(20); //删除列
为了对单个表进行多个更改,可以使用单条ALTER TABLE语句,每个更改用逗号分隔;
ALTER TABLE的一种常见用途是定义外键;