mysql数据表操作

1、alter

  • 修改表名 : alter table 旧表名 rename as 新表名
  • 添加字段 : alter table 表名 add字段名 列属性[属性]
  • 修改字段 :
  1. alter table 表名 modify 字段名 列类型[属性]
  2. alter table 表名 change 旧字段名 新字段名 列属性[属性]
  3. 删除字段 : 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语句,自增当前值从原来基础上进行,如下:

 

你可能感兴趣的:(Mysql,mysql)