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不允许使用函数作为默认值,它只支持常量;

19.基础-创建和操纵表

更新表

       输入:ALTER TABLE vendors             //表名必须存在,否则会出错

                 ADD vend_phone CHAR(20);  //添加列

       输入:ALTER TABLE vendors             //表名必须存在,否则会出错

                 DROP  COLUMN vend_phone CHAR(20);  //删除列

       为了对单个表进行多个更改,可以使用单条ALTER TABLE语句,每个更改用逗号分隔;

       ALTER TABLE的一种常见用途是定义外键;

19.基础-创建和操纵表

19.基础-创建和操纵表