sql命令(三)-操作数据表中的记录

MySQL外键与表结构调整
本文介绍了MySQL中外键约束的应用及表结构的调整方法,包括如何创建与使用外键约束、添加与删除字段、修改字段属性及表名等实用技巧。
约束类型:

1,外键约束
外键约束的要求:

mysql配置文件:default-storage-engine=INNODB (将数据表的默认引擎改为INNODB)

2,查看数据表的创建命令,索引
show create table provinces;//查看表provinces的创建命令

show index from provinces;//查看表provinces中的约束

 show INDEX from users2\G;//换一种直观的格式查看users2的唯一约束

3,添加外键
创建主表
CREATE TABLE  provinces (
id smallint UNSIGNED  PRIMARY key  auto_increment,
pname varchar(20) not NULL
);
创建子表
CREATE TABLE users (
    id SMALLINT UNSIGNED PRIMARY KEY auto_increment,
    username VARCHAR (10) NOT NULL,
    pid SMALLINT UNSIGNED,
     FOREIGN KEY (pid) REFERENCES provinces (id)  //参照provinces中的id创建pid外键
); 
4,外键约束的参照操作



5,添加数据表字段
alter table user1 add age tinyint UNSIGNED not null DEFAULT 10;//为表user1添加字段age,该字段自动出现在最后面
alter table user1 add password VARCHAR(32)  not null after username;//为表user1添加字段password ,该字段出现在username后面
 
alter table user1 add truename VARCHAR(32)  not null first; //为表user1添加字段truename,该字段出现在表的最前面

ALTER TABLE user1 ADD (     //添加多个字段,备注:不能给字段指定位置,必须添加小括号
t1namea VARCHAR (32) NOT NULL,
t1amea VARCHAR (32) NOT NULL
);

6,删除数据表字段
ALTER TABLE user1 DROP t1amea;   //删除表user1 中的t1amea列


ALTER TABLE user1  drop id,drop age;//同时删除user1中的id列,age列

ALTER TABLE user1  drop tame , add age VARCHAR (32) NOT NULL;//删除user1中的id列,添加age列

7,为数据表添加删除约束

alter table users2 add  PRIMARY key (id); //将表users2中的字段id修改为主键

ALTER table users2 add UNIQUE (username);//为表users2中的字段username添加唯一约束

alter table users2 add FOREIGN key(pid) REFERENCES provinces(id); 为users2中的字段pid添加外键,外键指向provinces表中的id字段

alter table users2 alter age set DEFAULT 15; //将字段age的默认值修改为15

alter table users2 alter age drop DEFAULT; //删除字段age的默认值

alter table users2  drop PRIMARY key;;//删除表users2的主键约束(因为每张表只有一个主键,所以不用指定主键对应的字段名称)

alter table users2 drop INDEX username;//删除表users2中username的唯一约束

alter table 表名 drop constraint 外键约束名
8,修改数据表

alter table users2 MODIFY id SMALLINT UNSIGNED not null FIRST;//将id字段放在表的第一个位置


alter table users2 MODIFY id TINYINT UNSIGNED not null ;//将id的类型修改为TINYINT (大类型改成小类型,有可能会造成数据的丢失)

alter table users2 change pid p_id TINYINT UNSIGNED not null ;//将字段pid 修改成p_id,并且类型是TINYINT 

alter table users2 RENAME users3 ;//将表users2 的名称修改成users3 

RENAME table users3 to users2;//将表users3 的名称修改成users2(不要随意更改表的名字和列的名字,避免视图以及引用不可用) 














转载于:https://my.oschina.net/appleliu/blog/549934

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值