1、alter
- 修改表名 : alter table 旧表名 rename as 新表名
- 添加字段 : alter table 表名 add字段名 列属性[属性]
- 修改字段 :
- alter table 表名 modify 字段名 列类型[属性]
- alter table 表名 change 旧字段名 新字段名 列属性[属性]
- 删除字段 : alter table 表名 drop 字段名
2、drop
删除数据表:
语法: drop table [if exists] 表名
3、update
update 表名 set columnname=value [,columnname2=value2,…] [where condition];
注意 :
column_name 为要更改的数据列,value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的select结果,condition 为筛选条件 , 如不指定则修改该表的所有列数据
update grade set gradename = '高中' where gradeid = 1;
4、delete、truncate
delete作用:用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;
delete from 表1 名 [where condition]; -- 删除最后一个数据
delete from grade where gradeid = 5
注意:condition为筛选条件 , 如不指定则删除该表的所有列数据
truncate [table] table_name; -- 清空年级表 truncate grade
注意:区别于delete命令
- 相同 : 都能删除数据 , 不删除表结构 , 但truncate速度更快;
- 不同 : 使用truncate table 重新设置auto_increment计数器 使用truncate table不会对事务有影响 (事务后面会说)
测试:
-- 创建一个测试表
create table `test`
(
`id` int(4) not null auto_increment,
`coll` varchar(20) not null,
primary key (`id`)
) engine = innodb
default charset = utf8;
-- 插入几个测试数据
insert into test(coll) values ('row1'),('row2'),('row3');
-- 删除表数据(不带where条件的delete)
delete from test;
-- 结论:如不指定where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.
-- 删除表数据(truncate)
truncate table test;
-- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.
-- 同样使用delete清空不同引擎的数据库表数据.重启数据库服务后
-- innodb : 自增列从初始值重新开始 (因为是存储在内存中,断电即失)
-- myisam : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)
执行insert into语句,然后执行delete from test,再执行insert into语句,自增当前值从原来基础上进行,如下: