1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
/*看表*/ 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)
)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
--删除表 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
|
本文转自 angry_frog 51CTO博客,原文链接:http://blog.51cto.com/l0vesql/1771245