复习mysql啦,那就正好整理一下mysql基础吧,之前了解过InnoDB与MyISAM的区别,以及索引的优化。有需要的可以翻一下之前的文章啦。一起开始今天的学习记录吧
三大数据类型
数值类
小二,上图
- 在创建表字段的时候使用unsigned可以使数值类转换成无符号数值,具体表现为最大值翻倍最小值为0
- 值得一提的是,数据类型的长度与可存储数据的范围并无关系
数据类型的长度实际上指的是显示宽度,可以使用zerofill填充
日期类
小二,怎么这么慢呢
- 每一个时间类型都有自己的有效值范围,当插入不在范围内的值时会使用 0 表示
- TIMESTAMP 专有自动更新特性,when新建记录或是update记录时会自动更新字段。
默认精度为14位,常用精度有6,8,12,14
字符串类
小二,你被解雇了
- 二进制形式指的是它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值
- char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符
char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此 - BLOB 是存储的是字符串的二进制形式,只能整体读出
多种连接
在讲连接之前必须复习一下笛卡尔积
为了方便解释 我们创建两张表
笛卡尔积
- 概念:笛卡尔积在数学上指的是二个不同集合中,不同元素的匹配集合
- 举个栗子:假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
左连接
- 语法 SELECT [list] FROM [table] LEFT JOIN [table] ON [condition]
查询结果 是以condition做笛卡尔积之后,左表的所有记录。condition不匹配的以null填充
右连接
- 语法 SELECT [list] FROM [table] RIGHT JOIN [table] ON [condition]
查询结果 是以condition做笛卡尔积之后,右表的所有记录。condition不匹配的以null填充
内连接
- 语法 SELECT [list] FROM [table] INTER JOIN [table] ON [condition]
查询结果 是以condition做笛卡尔积之后所匹配的记录