MYSQL数据库学习(四)

本文详细介绍了MySQL中常见的存储引擎MYISAM与InnoDB的特点及适用场景,并对比了它们在事务处理、索引支持及锁机制等方面的差异。此外,还解释了int、char、varchar等数据类型的使用细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引擎:

引擎就好像是汽车的发动机,但在数据库中的引擎没有好坏之分,只有适合不适合。

数据库的存储引擎分为:BLACKHOLE,CSV,MEMORY,ARCHIVE,MYISAM,InnoDB;

但其中最常用的是MYISAM和InnoDB;其它对现在都不常用;

MYISAM:

1.支持全文索引(full text)

2.不支持事务

3.表级锁(通俗来说就是将表封锁起来,一个一个进)

4.崩溃恢复支持不好

InnoDB:

1.支持事务

2.不支持全文索引,但5.6版本之后开始支持

3.行级锁 (将表里的行锁起来,一个一个进,这个相对于MYISAM效率高些)

4.崩溃恢复支持性比MYISAM好些;

mysql5.6版本之后默认引擎是InnoDB;

MYISAM在数据少的时候速度相对快点,但差距0.0几毫秒,也就察觉不出有多快了;

相对来说推荐InnoDB,速度更快些;

show table status; 查看数据表的引擎

show table status \G;查看所有表的引擎;

show engines \G;该数据库所支持的引擎;

create table 表名 (列名 属性) engine = InnoDB/MYISAM;

建表时,不指定的话默认用的是默认文件里的指定引擎;

 

关于int char varchar :

一个字节有8位:

对于英文字符----> 一个字符一个字节

对于汉字---->一个字符2个字节

在mysql中对于gbk和utf8的不同:

GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符

gbk中占2个字节,utf8中占3个字节;

int(n)中 n不能够表示能够存储的最大长度;

char(n)  n是字符的长度;

varchar(n)和char(n)基本一样;

select  length(列名) from 表名;列出字节数;

select char_length(列名) from 表名;列出字符数;

sql_mode=ANSI/STRICT_TRANS_TABLES/TRADITIONAL

ANSI模式 是 宽松的,当插入数据时即使有错误,也会插进去,然后出现1warning;

STRICT_TRANS_TABLES模式严格:

在该模式下,当插入数据时,mysql会严格的进行数据的校验,当发现插入值未满足要求,直接报告error错误,保证了错误数据无法插入到数据库中。

TRADITIONAL模式:

在该模式下,对所有的事务存储引擎,非事物存储引擎检查,日期类型中的月和日部分不能包含0,不能有0这样的日期(0000-00-00),数据不能除0,禁止grant自动创建新用户等一写校验;

查看模式:show @@sql_mode;

设置数据库模式:set session sql_mode='   ';

 

事务:

开启事务:

start transaction;

如存入数据有错,roll back; 事务结束,将失败恢复成功;

数据无错,commit;提交;

事务经历:数据先到内存中---->是否成功---->成功---->存入磁盘;

不成功的话将失败恢复成功;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值