MySQL表的操作(二)

    xiaoxiao2023-07-15  142

    创建表test3,主键有id和name,id字段自动增长,

    Name字段不为空,且具有唯一属性,

    Password为字符串,字段不为空。

    create table test3(id int auto_increment, name varchar(20) not null unique, password varchar(20) not null, primary key(id,name) );

    创建表test4,id字段自动增长,

    Name字段不为空,且具有唯一属性,

    Password为字符串,字段不为空

    Nameid和othername为外键,关联父表为test3,对应关联属性为父表中的id和name;

    create table test4(id int auto_increment, name varchar(20) not null unique, password varchar(20) not null, nameid int , othername varchar(20), constraint testf foreign key(id,name)references test3(id,name) );

    现在数据库中所有表如图:

    1,修改表名:

    语法:alter table 旧表名rename 新表名;

    例如,修改test2表名为test5;

    alter table test2 rename test5;

    如图,可以看到test2没有了,test5取代了它:

    2,修改字段的数据类型:

    语法:alter table 表名 modify 属性名数据类型;

    例如,修改test5表中的password字段数据类型,原password数据类型为varchar(20),现在要修改为varchar(40);

    alter table test5 modify passwordvarchar(40);

    password数据类型已经变为varchar(40),如图:

    3,修改字段名:

    语法:alter table 表名 change 旧属性名新属性名 新数据类型;

    例如修改test5中的password字段为sex 数据类型为boolean;

    Password字段被sex字段所取代,数据类型也变为布尔型,如图:

    4,增加字段:

    语法:alter table 表名 add 属性1 数据类型[完整性约束条件] [first|after 属性名2];

    例如为test5增加一个address字段,数据类型为varchar(20),位置放在name后面,sex前面,约束条件是不为空;

    alter table test5 add address varchar(20)not null  after name;

    执行之后test5表的详细结构如图:

    5,删除字段:

    语法:alter table 表名drop 属性名;

    例如,把test5中的sex字段删除;

    alter table test5 drop sex;

    命令执行结果:

    6,修改字段在表中位置:

    语法:alter table 表名 modify 属性名数据类型 first|after 属性名2;

    例如,修改test5中的address字段位置,使address放到name之前,id之后;

    Alter table test5 modify addressvarchar(20) after id;

    命令执行结果:

    7,更改表的存储引擎:

    语法:alter table 表名 engine=存储引擎名;

    例如,修改test5表的存储引擎,修改为myisam;

    alter table test5 engine=myisam;

    命令执行结果:

    8,删除表的外键约束:

    语法:alter table 表名 drop foreign key 外键别名;

    Test4表具有一个外键约束,外键别名为testf,父表为test3,test4表的详细结构如图所示:

    删除test4的外键约束alter table test4 drop foreign key testf;

    命令执行结果:

    9,删除表:

    Drop table 表名;

    今天先学到这儿了~

    最新回复(0)