/*看表*/
describe test --查看表的结构
show create table test --查看表的创建语句
show create table test  \G --将创建的语句查询出来,并规范化显示(只在console下支持此命令,因为只有console下会错乱显示...)
/*改表*/
alter table test rename to testo; --将test改名为testo
alter table example0 rename to user;
select table_name from information_schema.tables  where table_schema = 'test'--从整个系统中查询table_schema(数据库名)为test的所有表名(table_name)
---test消失,取而代之的是排在最后的是testo
describe user;--先查看下原来user表Name属性的数据类型
alter table user modify name varchar(30); --将testo表的name属性改为varchar(30)的数据类型
describe user;--验证一下,修改成功
----创建一个实验用表example1,补坑
create table example1(stu_id int(11) not null primary key,
  stu_name varchar(20), --不指定default值,默认就是default null
  stu_sex tinyint(1)
 )
---修改表中字段的字段名与类型
use test;
describe example1--先查看下原来exmaple表stu_sex属性的数据类型
alter table example1 change stu_sex sex tinyint(2);--同时更改字段名和字段的数据类型
describe example1 --验证一下,,Complete
---增加字段
alter table user add phone varchar(20);--增加无约束的字段
describe user --检查结果,ok
alter table user add age int(4) NOT NULL --增加完整性约束的字段
/*增加字段时,如果能够加上完整性约束条件,一定要加上,可以保证此字段的安全性*/
describe user --检查结果,ok
alter table user add num int(8) primary key first--乖乖,这里出错了,之前自己抖机灵给Id定成主键了,现在无法增加num主键字段了。。
--先学习删除主键吧
alter table user drop primary key--改动user表drop掉其primary key
--重新增加新的主键字段
alter table user add num int(8) primary key--报错,提示出现组合字段
--查看一下
describe user --竟然没有drop掉主键。。‘一个表中,只可有一个自增字段,且那个字段必须被定位成主键’
--所以,先想法删除自增字段,貌似只能重新定义字段,但是在生产环境下怎么办、?先备份再insert into a  select * from b?
alter table user change id id int(11)
--再看一下
describe user--ok,去掉了自增属性
--现在尝试删主键
alter table user drop primary key--ok,Command(s) completed successfully.
--重新尝试增加新的主键字段
alter table user add num int(8) primary key --ok,Command(s) completed successfully. --后面忘记加first位置限定了
--检查一下
describe user --num字段成功的加到了表中,但排到了最后一个字段...
alter table user add address varchar(30) not null after phone --在phone字段后面增加一个address字段
/*删除字段*/
alter table user drop id --drop掉user表的Id字段
--检查一下
describe user --没有了
/*修改字段的排列位置*/
alter table user modify num int(8) first --先把之前的坑填上
describe user --改得很不错,润物细无声
alter table user modify name varchar(30) first 
describe user --恩,这个也改对了
/*修改字段到指定位置*/ /*注意,modify时把数据类型也附上*/
alter table user modify sex tinyint(1) after age --将user表的sex字段修改到age字段之后
--如果不加字段类型行不行?
describe sc --找个临时表实验一下
alter table user modify grade after sNo --不行,看来数据类型起到隔断的作用。。。
/*修改存储引擎*/
show create table user --修改之前先查看下创建语句是如何定义存储引擎的
--engine=InnoDB
alter table user engine = MyISAM--更改存储引擎为myisam,Command(s) completed successfully.
--查看修改之后的创建语句
show create table user --engine=MyISAM
/*删除外键约束*/
show create table example3 --先查找外键的名称,为'c_fk'
alter table example3 drop foreign key c_fk --无引号'',Command(s) completed successfully.
--检查一下
show create table example3--没有外键定义了
/*删除表*/
--删之前先确认下有没有
describe example5--还真没有
--创建一个吧
create table example5(id int(11) not null primary key,
  stu_id int(11) default null unique,--如图,key列是UNI,是唯一性约束
  name varchar(20) 
  )

wKioL1cvKTOjIyXNAAEUWXRKlPg361.png

--删除表
drop table example5 --Command(s) completed successfully.
--看看还有么有
describe example --OK,不存在了ErrorMessage: Table 'test.example' doesn't exist 
/*删除被外键依赖着的表*/
--先补坑
create table example4(id int(11) primary key,
  name varchar(20) not null,
  stu_id int(11) default null,
  constraint d_fk foreign key(stu_id) references example1(stu_id)--报错,此处的外键名称不应加''
  ) ENGINE = INNODB default charset = utf8
--试试被删除的主表example1
drop table example1 --报错,ErrorMessage: Cannot delete or update a parent row: a foreign key constraint fails
--先删除被关联的子表外键
alter table example4 drop  foreign key d_fk--Command(s) completed successfully.
--检查子表外键是否被删除
use test
show  create table example4 --外键定义语句被删除
--继续删除被依赖的主表
drop table example1 --Command(s) completed successfully.
--查看是否被删除
describe example1--OK,ErrorMessage: Table 'test.example1' doesn't exist