mysql——修改表名、修改字段名、修改字段数据类型、增加字段、删除字段、修改字段排列位置、修改存储引擎、删除表 (示例)
一、创建表和插入数据:
create table cr01 ( sx int(50), mz varchar(50), bz varchar(50) ); insert into cr01 ( sx,mz,bz ) values (1,'sww','sww01'); insert into cr01 values (2,'aww','aww02'); insert into cr01 values (3,'qww','qww03'), (4,'eww','eww04'), (5,'rww','rww05'); insert into cr01 ( sx,mz,bz ) values (6,'yww','yww06'), (7,'uww','uww07'); select * from cr01;
==========================================================
二、查看表结构
查看表结构是指:查看数据库中已经存在的表的定义
1、查看表基本结构的语句:describe
describe语句可以查看表的基本定义:其中包括字段名、字段数据类型、是否为主键和默认值等;
describe语句的语法格式如下: describe 表名;
describe可以缩写为desc,格式如下: desc 表名;
describe cr01; 或者 desc cr01;
=======================================================
三、查看表的详细结构语句show create table
该语句可以查看表的字段名、字段的数据类型、完整性约束条件等信息。除此之外还可以查看表的默认的存储引擎和字符编码
show create table的语法格式如下: show create table 表名;
以整洁的格式显示的语法格式如下: show create table 表名 \G;
CREATE TABLE `cr01` ( `sx` int(50) DEFAULT NULL, `mz` varchar(50) DEFAULT NULL, `bz` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1
==================================================
四、修改表名
语法格式:alter table 旧表名 rename [to] 新表名;
举例:alter table example1 rename user;
注释:修改后example1表就不存在了,只存在名为user的新表,但是其内容是一致的,只是换了个名称
执行前: show tables;
执行:alter table cr01 rename to jss;
执行后:show tables;
注意:PS:为了不影响示例,执行下面的语句会把之前修改过的表名再改过来:alter table jss rename to cr01;
====================================================================================================
五、修改字段的数据类型
语法格式:alter table 表名 modify 属性名 数据类型; 注释:表名指所要修改数据类型的字段的表的名称;
属性名指:所要修改数据类型字段的名称;
数据类型指:修改后的新的数据类型
举例:alter table user modify name varchar(30);
修改前先desc user 修改后再desc user 就会发现name字段的数据类型改变了
执行前:describe cr01; ----------查看原来的表结构类型
执行:alter table cr01 modify mz varchar(40);
执行后:describe cr01; -----------------------------执行后,再次查看表结构,看是否改变
注意:PS,还原:alter table cr01 modify mz varchar(50);
===========================================================================================
六、修改字段名
语法格式:alter table 表名 change 旧属性名 新属性名 新数据类型;
举例:alter table example1 change stu_sex sex int(2);
注释:新数据类型指修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样
注意:修改整数类型时可能会影响表中的数据,特别注意的是字符类型的字段最好不要修改成整数类型或者浮点数类型
执行前:describe cr01;
执行:alter table cr01 change mz mzdd varchar(50);
执行后:describe cr01;
备注:PS:还原:alter table cr01 change mzdd mz varchar(50);
===========================================================================
七、增加字段
语法格式:alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first | after 属性名2];
完整性约束条件:是可选参数,用来设置新增字段的完整性约束条件
first:是可选参数,其作用是将新增字段设置为表的第一个字的;
after:是可选参数,其作用是将新增字段添加到“属性名2”所指的字段后;
如果执行的SQL语句中没有“first”或者“after 属性名2”参数指定新增字段的位置,则新增字段默认为表的最后一个字段;
(1)增加无完整性约束条件的字段
举例:alter table user add phone varchar(20);
(2)增加有完整性约束条件的字段
举例:alter table user add age int(4) not null;
(3)表的第一个位置增加字段
举例:alter table user add num int(8) primary key first;
(4)表的指定位置之后增加字段
举例:alter table user add address varchar(20) not null after phone;
执行前:describe cr01;
执行:
alter table cr01 add js varchar(40) unique after mz;
alter table cr01 add jss varchar(50); ----------分别依次执行
执行后:describe cr01;(select * from cr01;)
注意:PS:下面删除新增的两个字段,以便还原。
===============================================================================
八、删除字段
删除字段是删除表中已经定义好的表中的某个字段,删除后其字段所属的数据都会被删除。
语法格式:alter table 表名 drop 属性名;
执行前:describe cr01;
执行:
alter table cr01 drop js;
alter table cr01 drop jss; -------------------分别依次执行;
执行后:describe cr01;
注意:PS:被还原为初始状态了
=============================================================
九、修改字段的排列位置
语法格式:alter table 表名 modify 属性名1 数据类型 first|after 属性名2;
(1)字段修改到第一个位置
举例:alter table user modify name varchar(20) first;
(2)字段修改到指定位置
举例:alter table user modify sex tinyint(1) after age;
执行前:describe cr01;
执行:alter table cr01 modify bz varchar(50) after sx;
执行后:describe cr01;
注意:PS:还原:alter table cr01 modify mz varchar(50) after sx;
=====================================================================
十、更改表的存储引擎
语法格式:alter table 表名 engine=存储引擎名;
此处不示例;
======================================================
十一、删除表的外键约束
**********************************************************************
十二、删除表
(1)删除没有被关联的普通表
语法格式:drop table 表名;
(2)删除被其它表关联的父表
删除子表的外键约束,再删除父表
执行前:show tables;
执行:drop table cr01;
执行后:show tables;