MySQL -重点
数据类型
整型:
tinyInt | 很小的整数(8位二进制) |
smallint | 小的整数(16位二进制) |
mediumint | 中等大小的整数(24位二进制) |
int(integer) | 普通大小的整数(32位二进制) |
bigint | 很大大小的整数(64位二进制) |
小数类型 | float | 单精度浮点数 |
double | 双精度浮点数 | |
decimal(m,d) | 压缩严格的定点数 m是总位数 d是小数位数 | |
日期类型 | year | YYYY 1901~2155 |
time | HH:MM:SS -838:59:59~838:59:59 | |
date | YYYY-MM-DD 1000-01-01~9999-12-3 | |
datetime | YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59 | |
timestamp | YYYY-MM-DD HH:MM:SS 19700101 00:00:01 UTC~2038-01-19 03:14:07UTC | |
文本、二进制类型 | CHAR(M) | M为0~255之间的整数 定长 |
VARCHAR(M) | M为0~65535之间的整数 不定长 不要超过5000,性能变低 | |
TINYBLOB | 允许长度0~255字节 | |
BLOB | 允许长度0~65535字节 | |
MEDIUMBLOB | 允许长度0~167772150字节 | |
LONGBLOB | 允许长度0~4294967295字节 | |
TINYTEXT | 允许长度0~255字节 | |
TEXT | 允许长度0~65535字节 | |
MEDIUMTEXT | 允许长度0~167772150字节 | |
LONGTEXT | 允许长度0~4294967295字节 | |
VARBINARY(M) | 允许长度0~M个字节的变长字节字符串 | |
BINARY(M) | 允许长度0~M个字节的定长字节字符串 |
1.float和double的区别
float是4字节单精度 double是8字节双精度, 但是float和double都不是绝对精确
2.char和varchar的区别
CHAR(M) | M为0~255之间的整数 定长 |
VARCHAR(M) | M为0~65535之间的整数 不定长 不要超过5000,性能变低 |
char定长 以空间换时间 性能好
varchar 不定长,动态计算数据的实际长度 以时间换空间
varchar的性能没有char好但是varchar更节约空间
3.char(32)和varchar(32)括号里面的长度是字节还是字符
mysql 5.0版本之前是字节,假设字符集是UTF- 8 ,一个中文3个字节那么char(32)只能存储10个中文字符 之后改为字符
4.用什么数据类型存储金额
decimal(m,d) | 压缩严格的定点数 m是总位数 d是小数位数 |
数据库严禁使用float和double存储金额
decimal定点数类型,绝对精确
使用长整型存储到金额的最小单位
5.超长文本(博客、文章)怎么存储
严禁使用varchar存储超长文本,用Blob型或者Text存储,并且把超长文本从当前表中拆分独立使用一张表,与主表做外键连接,防止出现超长文本影响查询效率,超过5000看成超长文本
6.二进制文件(图片、音频、视频)怎么存储
mysql可以用BINARY(M)存储二进制文件 但是性能差,二进制文件直接以文件存储在磁盘,在数据库创建字段记录文件路径
7.MySQL的整型支持无符号,使用关键字UNSIGNED
age tinyint -- age 字段取值范围是-128到127
age tinyint unsigned --age 字段取值范围是0-255
约束
1.非空约束 NOT NULL
2.检查约束 CHECK (MySQL不支持)
3.唯一约束 UNIQUE
4.主键约束 PRIMARY KEY
5.外键约束FOREIGN KEY
SQL分类- 语法整理(DDL | DML | DQL | DCL)
数据查询语言DQL(Data Query Language)
SELECT,FROM,WHERE,GROUP BY,ORDER BY
这个较为好理解 即查询操作,以select关键字。各种简单查询,连接查询等 都属于DQL。
数据操纵语言DML(Data Manipulation Language)
INSERT,UPDATE,DELETE
主要为以上操作 即对数据进行操作的,对应上面所说的查询操作 DQL与DML共同构建了多数初级程序员常用的增删改查操作。而查询是较为特殊的一种 被划分到DQL中。
事务控制功能TCL(Transaction Control Language)
COMMIT,ROLLBACK
用于操作事务,以及事务的提交和回滚操作
数据定义语言DDL(Data Ddefinition Language)
CREATE,DROP,ALTER,show
主要为以上操作 即对逻辑结构等有操作的,其中包括表结构,视图和索引。
数据控制功能DCL(Data Control Language)
GRANT,REVOKE,
用来对数据库用户授予或回收访问数据库的某种权限。
连表查询的方式
关系类型和三范式、反三范式
数据库表关系 一对一 ,一对多(多对一),多对多
三范式 - 以时间换空间(增加关系来减少冗余数据)
反(打破)三范式 - 以空间换时间(允许适量的冗余数据,减少关系)
事务四大特性和四种隔离级别
锁的种类
死锁、如何防止死锁
索引
MySQL -了解
存储引擎的区别
InnoDB
MyIsam
Memory
关系型数据库与NoSQL(非关系型)数据库的区别
主流的关系型数据库:MySQL Oracle
主流的NoSQL数据库:Redis
MySQL和Redis的关系不是谁能替代谁,而是在数据量非常大,数据库并发操作非常频繁的情况下,可以通过Redis搭建缓存服务器分担MySQL的压力