一、数据表类型与存储位置
MyISAM和InnoDB俩种类型最为重要
MyISAM和InnoDB的区别
- MyISAM表类型的数据表会产生三个文件 InnoDB产生二个文件
- MyISAM 表类型的数据表效率更高
- innodb的安全性高于MyISAM
- innodb支持事物处理 MyISAM不支持
- MyISAM不支持外键 innodb支持
MyISAM存储表文件的作用:
MyISAM与innodb共有的文件 .frm:存储数据表的框架结构 文件名与表名是相同的 每个表对应一个同名的frm文件
.MYD: my data 表数据文件
.MYI: my index 索引文件
InnoDB 存储表文件的作用:
.ibd:存放数据库表数据和索引
数据库:
数据库也是以文件形式存储在磁盘上 Data文件中
二、innodb的事物处理
如果MySQL的配置文件没有更改过 那么默认为MyISAM 可以在my.ini配置文件中 更改为innodb
也可以通过命令去更改:
alter table 表名 engine = innodb/myisam
(1) 查询当前是否为 自动提交
如果值为1 则为自动提交
(2) 开启事物处理
(3) 事物开始
(4) 执行SQL语句
insert into user values(null,'lucky','w',18)
(5) 提交或回滚
commit work;
rollback work;
注意:
- 如果开启了事物 在处理数据后 没有进行提交或回滚 那么你的操作和没操作一样 也就是相当于回滚了
- 只有innodb支持事物处理 MyISAM不支持
三、建表的注意事项
- 表的字段之间要使用逗号隔开 最后一个字段不要存在逗号
- 数据表名不要和字段名重名
- auto_increment 属性 必须依赖于主键索引
- 表名称和字段名称 尽量不要使用MySQL系统的关键字
- 使用反引号 会使创建的表效率增高
四、对表结构的操作
- 给表添加一个新的字段
alter table 表名 add 字段名 类型 约束条件 说明 alter table user add info varchar(50) not null default '我是帅气的lucky老师啊';
- 删除一个字段
alter table 表名drop 字段名 alter table user drop age;
- 更改字段名
alter table 表名 change 原字段名 新字段名 字段类型 约束条件 说明 alter table user change info userinfo varchar(50) not null default '我是帅气的lucky老师啊';
- 修改字段信息
alter table 表名 modify 字段名 字段类型 约束条件 说明 alter table user modify sex tinyint unsigned not null default 1;
- 给字段改变位置
alter table 表名 modify 字段名 字段类型 约束条件 first 第一位 alter table 表名 modify 字段名 字段类型 约束条件 after 字段名称 当前字段放在某个字段的后面
alter table user modify sex tinyint not null default 1 after id;
alter table user modify sex varchar(20) not null default 1 first;
- 表添加索引
alter table 表名 add 索引类型 索引名称(字段名) 添加索引名 alter table 表名 add 索引类型(字段名) 不添加索引名
alter table user add key(username);
alter table user add unique(username);
alter table user add key si(sex);
alter table user add unique su(sex);
- 删除索引
alter table 表名 drop key 索引名; alter table user drop key username_2;
- 创建一个和a表一样表结构的b表
- create table b like a;
- 修改表和字段的字符编码
alter table 表名 character set utf8;
alter table 表名 modify 字段名 类型 约束条件 character set utf8;