day10 -- table create /update /delete

brief

记录了 表的创建、更改和删除

表的创建

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

  • 使用具有交互式创建和管理表的工具(如MySQL workbench);
  • 表也可以直接用MySQL语句操纵。

为了用程序创建表,可使用SQL的CREATE TABLE语句。
当然,最开始学习时我用了创建样例表的脚本 create.sql,这样也是一种方法


为利用CREATE TABLE创建表,必须给出下列信息:

  • 新表的名字,在关键字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(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL ,
  PRIMARY KEY (cust_id)
) ENGINE=InnoDB;
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(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL ,
  PRIMARY KEY (cust_id,cust_name)
) ENGINE=InnoDB;
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 DEFAULT 10,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;

关于PRIMARY KEY / AUTO_INCREMENT / DEFAULT 关键字这里没做过多记录。

注意事项:

  • 在创建新表时,指定的表名必须不存在,否则将出错
  • 如果你仅想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS
  • NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL
  • 空串是一个有效的值,它不是无值。 NULL值用关键字NULL而不是空串指定
  • 每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如果通过使它成为主键)。
  • 如果一个列被指定为AUTO_INCREMENT,则它需要使用特殊的值吗?你可以简单地在INSERT语句中指定一个值,只要它是唯一的(至今尚未使用过)即可,该值将被用来替代自动生成的值。后续的增量将开始使用该手工插入的值。
  • 让MySQL生成(通过自动增量)主键的一个缺点是你不知道这些值都是谁。可使用last_insert_id()函数获得这个值 :
SELECT last_insert_id()
  • 如果在插入行时没有给出值, MySQL允许指定此时使用的默认值。 默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。

表的更新

为更新表定义,可使用ALTER TABLE语句

了使用ALTER TABLE更改表结构,必须给出下面的信息:

  • 在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错);

  • 所做更改的列表

  • 这条语句给vendors表增加一个名为vend_phone的列,必须明确其数据类型

ALTER TABLE vendors
ADD vend_phone CHAR(20);
  • 删除刚刚添加的列
ALTER TABLE vendors
DROP COLUMN vend_phone;
  • ALTER TABLE的一种常见用途是定义外键
ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREIGN KEY (order_num) REFERENCES orders (order_num);

删除表

DROP TABLE customers;

重命名表

RENAME TABLE customers TO new_name;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值