mysql 学习记录 创建和操纵表

第二十一章创建和操纵表
创建表
create table

  1. 使用具有交互式创建和管理表的工具;
  2. 表也可以直接使用MySQL语句操纵。
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 default 1,
	cust_email   char(255)  NULL,
	PRIMARY KEY (cust_id)
)ENGINE=InnoDBauto_increment = xxxxx

包括表名,列名,数据类型。
在创建新表时,指定的表名必须不存在。
如果要防止意外覆盖已有的表,SQL要求首先手工删除该表,然后再重建它,而不是简单地使用创建表语句覆盖它。
如果你仅想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS。这样做不检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,并且仅在表名不存在时创建它。
NULL为默认设置,如果不指定NOT 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;

这里使用唯一的订单号和订单物品次序两个键值作为主键。允许null值不能作为唯一标识的主键

自动增量
每次执行一个insert操作时,自动对该列增量(从而才有这个关键字auto_increment),给该列赋予下一个可用的值。它必须被索引如用作主键
覆盖auto_increment:如果一个列被指定为auto_increment,则它需要使用特殊的值吗?你可以简单地在insert语句中指定一个值,只要它是唯一的(至今尚未使用过)即可,该值将被用来替代自动生成的值。后续的增量奖开始使用该手工插入的值。
可使用last_insert_id()函数获得这个值,如下所示:
select last_insert_id()
此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。
指定自动增量值见上

指定默认值
见上
mysql不允许使用函数作为默认值
经常使用默认值而不是空值

引擎类型
1. InooDB是一个可靠的事务处理引擎,它不支持全文本搜索;2. MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);3. MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理

在这里插入图片描述
更新表定义
alter table

# 给vendors表增加一个名为vend_phone的列
alter table vendors 
add vend_phone char(20);
# 删除刚刚添加的列
alter table vendors
drop column vend_phone;

# ALTER TABLE的一种常见用途是定义外键
# 以下为书本配套文件create.sql中定义外键的语句 
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders (order_num);
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_products FOREIGN KEY (prod_id) REFERENCES products (prod_id);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers (cust_id);
ALTER TABLE products ADD CONSTRAINT fk_products_vendors FOREIGN KEY (vend_id) REFERENCES vendors (vend_id);

也可以使用单条alter table语句每个更改用逗号分隔
在这里插入图片描述
在这里插入图片描述
删除表和重命名表

drop table customers;
rename table customers to customers;
#对多个表重命名(假设存在下述表)
rename table backup_customers to customer,
			 backup_vendors to vendors,
             backup_products to products;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值