sql

1.char和varchar

CHAR 和 VARCHAR 是最常使用的两种字符串类型。

char类型:定长,简单粗暴,浪费空间 ,存取速度快(N 的范围 为 0 ~ 255)
对于 CHAR 类型的字符串,MySQL 数据库会自动对存储列的右边进行填充(Right Padded)操作,直到字符串达到指定的长度 N。
而在读取该列时,MySQL 数据库会自动将 填充的字符删除


varchar类型:变长,精准,节省空间,存取速度慢 (N 的范围为 0 ~ 65 535)
与 CHAR 类型不同的是,其存储时需要在 前缀长度列表加上实际存储的字符,该字符占用 1 ~ 2 字节的空间。当存储的字符串长度小 于 255 字节时,其需要 1 字节的空间,当大于 255 字节时,需要 2 字节的空间。所以,对 于单字节的 latin1 来说,CHAR(10)和 VARCHAR(10)最大占用的存储空间是不同的, CHAR(10)占用 10 个字节这是毫无疑问的,
而 VARCHAR(10)的最大占用空间数是 11 字节,因为其需要 1 字节来存放字符长度。

虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡    
    
View Code
#1.简述MyISAM和InnoDB的区别
'''
1.InnoDB支持事务,外键,行锁,而MyISAM不支持

2.Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;


读操作多,用MyISAM。写操作多,用InnoDB
'''

#2.描述一下表与视图的理解
'''
1.表是 真实的表,保存数据。视图是虚拟的表,保存的是sql语句。
2.表是 静态的,视图是动态的。意思是:视图是建立在表的基础上的,
表中的数据改变,其建立在表基础的视图也跟着改变
3.视图不能改变表数据
4.删除视图,表不受影响,而删除表,视图不在起作用
'''


#3.事务
'''
将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,
即回滚到原来的状态,从而保证数据库数据的完整性。
'''

#4.数据库索引


#5.Redis原理

#6.乐观锁和悲观锁
'''
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
乐观锁:假定不会发生并发冲突,只在提交操作是检查是否违反数据完整性

'''
#7.MVCC
'''
是多版本并发控制,允许一个数据可以有多个版本,这个版本可以是时间戳或者是全局递增的事务ID
最大的优点是:读写不冲突,只有写与写是冲突的,这个特性可以很大程度上提升性能
'''

#7.索引有什么作用?有哪些分类?有什么好处和坏处?
'''
数据库索引是为了增加查询速度而对表字段附加的一种标识。

按照 索引列的个数,可分为 单列索引和符合索引。
按照 索引列值的唯一性,可分为 唯一索引和非唯一索引。

Create [unique] index 索引名 on 表名(一个或多个索引列名并用“,”隔开)
优点:查询大量数据时,可以提高查询效率。
缺点:不维护空值,占用一定的资源,插入和更新数据时,影响效率。

'''

原文地址:https://www.cnblogs.com/zhaochangbo/p/7904740.html