create database if not exists sql_store2; -- 如果先前没有才创建
use sql_store2;
drop table if exists orders; -- 此时可删,重新创建
drop table if exists customers; -- 此时不能删除顾客表,因为orders依赖于customers;要删除顾客表,需要先删除订单表,放在上边
create table if not exists customers
(
customer_id int primary key auto_increment,
first_name varchar(50) not null,
points int not null default 0,
email varchar(255) not null unique
-- character set latin1 -- 更改字符排序规则,也可为特定的列使用,即在列的类型后添加
);
create table orders
(
order_id int primary key auto_increment,
customer_id int not null,
foreign key fk_orders_customers (customer_id) -- fk_子表名_父表名(需要添加外表的列名)
references customers (customer_id)-- 这一列引用了顾客表中的顾客id列
on update cascade -- 指定更新和删除的行为,及联或拒绝 set null/no action,在外间表中
on delete no action -- 阻止或拒绝删除操作
);
-- 在已生成的表中修改
alter table customers -- 不要在生产环境下修改表,只在测试
add last_name varchar(50) not null after first_name,-- 在firstname后添加
add city varchar(50) not null,
modify column first_name varchar(55) default '',
drop points
;
alter table orders
add primary key(order_id),-- 多个主键用,隔开
drop primary key, -- 删除主键不需要添加列
drop foreign key fk_orders_customers,
add foreign key fk_orders_customers (customer_id)
references customers (customer_id)
on update cascade
on delete no action;
-- 存储引擎
-- innoDB/默认 MylSAM/老版本
-- show engines -- 查看
-- 同个数据库有多个存储引擎
-- 可在设计模式右上角修改,也可表中修改
-- alter table customers
-- engine = InnoDB
-- 不要在产出时更新引擎
mysql day13 表
最新推荐文章于 2024-09-12 01:15:37 发布