mysql修改表与语法_数据库表的创建,修改和删除sql语句DDL语句是操作数据库对象的语句,包括创建(create). 删除(drop) 和修改(alter)数据库对象。前⾯已经介绍过,最基本的数据库对象是数据表,数据表是存储数据的逻辑单元。但数据库⾥绝不仅包括数据表,数据库⾥可包含如下图所⽰的⼏种常见的数据库对象。
因为存在上⾯⼏种数据库对象,所以create后可以紧跟不同的关键字。例如,建表应使⽤create table,建索引应使⽤create index, 建视图应使⽤create view…drop和alter后也需要添加类似的关键字来表⽰删除、修改哪种数据库对象。
1.创建表的语法
标准的建表语句的语法如下:
create table[模式名.]表名
(
#可以有多个列定义
columnNamel datatype[defaultexpr],
)
上⾯语法中圆括号⾥可以包含多个列定义,每个列定义之间以英⽂逗号(,) 隔开,最后⼀个列定义不需要使⽤英⽂逗号,⽽是直接以括号结束。
前⾯已经讲过,建⽴数据表只是建⽴表结构,就是指定该数据表有多少列,每列的数据类型,所以建表语句的重点就是圆括号⾥的列定义,列定义由列名、列类型和可选的默认值组成。列定义有点类似于Java⾥的变量定义,与变量定义不同的是,列定义时将列名放在前⾯,列类型放在后⾯。如果要指定列的默认值,则使⽤default关键字,⽽不是使⽤等号(=)。
例如”下⾯的建表语句:
create table test
(
#普整型通常⽤int
test_idint,
#⼩数点数
test_pricedecimal,
#普通长度⽂本,使⽤default指定默认值
test_name varchar(255)default'xxx',
#单⼤⽂本类型
test_desc text,
#图⽚
test_img blob,
test_date datetTime
)
;
建表时需要指定每列的数据类型,不同数据库所⽀持的列类型不同,这需要查阅不同数据库的相关⽂档。MySQL ⽀持如表所⽰的⼏种列类型。
上⾯是⽐较常见的建表语句,这种建表语句只是创建- -个空表, 该表⾥没有任何数据。如果使⽤⼦查询建表语句,则可以在建表的同时插⼊数据。⼦查询建表语句的语法如~F:
create table[模式名.]表名lcolumn[,]]
assubquery;
上⾯语法中新表的字段列表必须与⼦查询中的字段列表数量匹配,创建新表时的字段列表可以省略,如果省略了该字段列表,则新表的列名与选择结果完全相同。下 ⾯语句使⽤⼦查询来建表。
#创建hehe数据表,该数据表和user_ inf 完全相同,数据也完全相同
create table hehe
as
select*fromuser_ inf;
因为上⾯语句是利⽤⼦查询来建⽴数据表,所以执⾏该SQL语句要求数据库中已存在user_ jinf 数据表,否则程序将出现错误。
2.修改表结构的语法
修改表结构使⽤alter table,修改表结构包括增加列定义、修改列定义、删除列、重命名列等操作。
增加列定义的语法如下:
alter table表名
add
#可以有多个列定义
column namel datatype[defaultexpr],
上⾯的语法格式中圆括号部分与建表语法的圆括号部分完全相同,只是此时圆括号⾥的列定义是追加到已有表的列定义后⾯。还有⼀点需要指出,如果只是新增⼀列, 则可以省略圆括号,仅在add后紧跟⼀个列定义即可。为数据表增加字段的SQL语句如下:
⼿为hehe数据表增加⼀个hehe_ id字段,该字段的类型为int
mysql创建表数据类型alter table hehe
add hehe idint;
#为hehe数据表增加aa、bbb字段,两个字段的类型都为varchar (255)
alter table hehe
add
aa varchar(255)default'xxx',
bbb varchar(255)
上⾯第⼆条SQL语句增加aaa字段时,为该字段指定默认值为*xx’.值得指出的是,SQL语句中的字符串值不是⽤双引号引起,⽽是⽤单引号引起的。增加字段时需要注意:如果数据表中已有数据记录,除⾮给新增的列指定了默认值,否则新增的数据列不可指定⾮空约束,因为那些已有的记录在新增列上肯定是空(实际上,修改表结构很容易失败,只要新增的约束与已有数据冲突,修改就会失败)。
修改列定义的语法如下:
alter table表名
modify column name datatype[defaultexpr][firstlafter col name];
上⾯语法中first或者after col. name指定需要将⽬标修改到指定位置。
从上⾯修改语法中可以看出,该修改语句每次只能修改-⼀个列定义, 如下代码所⽰:
#酒将hehe表的hehe_ id列修改成varchar (255)类型
alter table hehe
modify hehe_ id varchar(255);
#将hehe表的bbb列修改成int类型
alter table hehe
modify bbbint;
从上⾯代码中不难看出,使⽤SQL修改数据表⾥列定义的语法和为数据表只增加⼀个列定义的语法⼏乎完全⼀样,关键是增加列定义使⽤add关键字,⽽修改列定义使⽤modify关键字。还有⼀点需要指出,add新增的列名必须是原表中不存在的,⽽modify修改的列名必须是原表中已存在的。
如果数据表⾥已有数据记录,则修改列定义⾮常容易失败,因为有可能修改的列定义规则与原有的数据记录不符合。如果修改数据列的默认值,则只会对以后的插⼊操作有作⽤,对以前已经存在的数据不会有任何影响。
3.删除表的语法
删除表的语法格式如下:
drop table表名;
如下SQL语句将会把数据库中已有的wawa数据表删除:
#删除数据表
drop table wawa;
删除数据表的效果如下。.
➢表结构被删除,表对象不再存在。
➢表⾥的所有数据也被删除。
➢该表所有相关的索引、约束也被删除。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论