首页
学习
活动
专区
圈层
工具
发布

Mysql从入门到放弃(六)

一、数据表类型与存储位置

MyISAM和InnoDB俩种类型最为重要

MyISAM和InnoDB的区别

  1. MyISAM表类型的数据表会产生三个文件 InnoDB产生二个文件
  2. MyISAM 表类型的数据表效率更高
  3. innodb的安全性高于MyISAM
  4. innodb支持事物处理 MyISAM不支持
  5. MyISAM不支持外键 innodb支持

MyISAM存储表文件的作用:

MyISAM与innodb共有的文件 .frm:存储数据表的框架结构 文件名与表名是相同的 每个表对应一个同名的frm文件

.MYD: my data 表数据文件

.MYI: my index 索引文件

InnoDB 存储表文件的作用:

.ibd:存放数据库表数据和索引

数据库:

数据库也是以文件形式存储在磁盘上 Data文件中

二、innodb的事物处理

如果MySQL的配置文件没有更改过 那么默认为MyISAM 可以在my.ini配置文件中 更改为innodb

也可以通过命令去更改:

代码语言:javascript
代码运行次数:0
复制
alter table 表名 engine = innodb/myisam

(1) 查询当前是否为 自动提交

代码语言:javascript
代码运行次数:0
复制
select  @@autocommit 

如果值为1 则为自动提交

(2) 开启事物处理

代码语言:javascript
代码运行次数:0
复制
set autocommit = 0

(3) 事物开始

代码语言:javascript
代码运行次数:0
复制
begin

(4) 执行SQL语句

代码语言:javascript
代码运行次数:0
复制
insert into user values(null,'lucky','w',18)

(5) 提交或回滚

代码语言:javascript
代码运行次数:0
复制
commit work;
rollback work;

注意:

  1. 如果开启了事物 在处理数据后 没有进行提交或回滚 那么你的操作和没操作一样 也就是相当于回滚了
  2. 只有innodb支持事物处理 MyISAM不支持

三、建表的注意事项

  1. 表的字段之间要使用逗号隔开 最后一个字段不要存在逗号
  2. 数据表名不要和字段名重名
  3. auto_increment 属性 必须依赖于主键索引
  4. 表名称和字段名称 尽量不要使用MySQL系统的关键字
  5. 使用反引号 会使创建的表效率增高

四、对表结构的操作

  1. 给表添加一个新的字段 alter table 表名 add 字段名 类型 约束条件 说明 alter table user add info varchar(50) not null default '我是帅气的lucky老师啊';
  2. 删除一个字段 alter table 表名drop 字段名 alter table user drop age;
  3. 更改字段名 alter table 表名 change 原字段名 新字段名 字段类型 约束条件 说明 alter table user change info userinfo varchar(50) not null default '我是帅气的lucky老师啊';
  4. 修改字段信息 alter table 表名 modify 字段名 字段类型 约束条件 说明 alter table user modify sex tinyint unsigned not null default 1;
  5. 给字段改变位置 alter table 表名 modify 字段名 字段类型 约束条件 first 第一位 alter table 表名 modify 字段名 字段类型 约束条件 after 字段名称 当前字段放在某个字段的后面
代码语言:javascript
代码运行次数:0
复制
alter table user modify sex tinyint not null default 1 after id;
alter table user modify sex varchar(20) not null default 1 first;
  1. 表添加索引 alter table 表名 add 索引类型 索引名称(字段名) 添加索引名 alter table 表名 add 索引类型(字段名) 不添加索引名 alter table user add key(username);
代码语言:javascript
代码运行次数:0
复制
alter table user add unique(username);
alter table user add key si(sex);
alter table user add unique su(sex);
  1. 删除索引 alter table 表名 drop key 索引名; alter table user drop key username_2;
  2. 创建一个和a表一样表结构的b表
  3. create table b like a;
  4. 修改表和字段的字符编码
代码语言:javascript
代码运行次数:0
复制
alter table 表名 character set utf8;
alter table 表名 modify 字段名 类型 约束条件 character set utf8;
下一篇
举报
领券