MySQL学习

本文最后更新于:2022年4月5日 晚上

概览:MySQL学习

Mysql

元素类型

字节:Byte,1Byte = 8bit.

字符串类型:

  • char:0-255字节,定长
  • varchar:0-65535字节,变长。
    • 存储限制:开头会占据1-2字节存储字符串的实际长度。(2字节对应最大的十进制2^16-1,即65535长度).
    • 编码长度限制:若字符类型为utf8,则每个字符最多占3个字节,最长21845,若为utfmb4,则每个字符最多占据4个字节,最长16383.
    • 行长度限制:Mysql要求一行的定义长度不能超过65535!

mysql建表中也会有提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[SQL]CREATE TABLE `author1`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`txt` VARCHAR(30000) NOT NULL DEFAULT '' ,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
[Err] 1074 - Column length too big for column 'txt' (max = 21845);
use BLOB or TEXT instead

[SQL]CREATE TABLE `author1`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`txt1` VARCHAR(20000) NOT NULL DEFAULT '' ,
`txt2` VARCHAR(20000) NOT NULL DEFAULT '' ,
`txt3` VARCHAR(20000) NOT NULL DEFAULT '' ,
`txt4` VARCHAR(20000) NOT NULL DEFAULT '' ,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
[Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual.
You have to change some columns to TEXT or BLOBs
  • text,长度65535,即2^16 -1,最大64KB.
  • longtext,2^32 - 1,极大的文本数据,最大4GB。

数值型

时间日期类型


两表的连接查询:

1
select * from t1,t2 where t1.id = t2.id;

更加推荐join on的写法:

  • 内连接式的写法
1
select * from t1 join t2 on t1.id = t2.id;
  • 外连接

    • 左外连接,左表的所有内容都会被列出,右表不满足条件的使用null来代替

      1
      select * from t1 left join t2 on t1.id = t2.id;
    • 右外连接

      1
      select * from t1 right join t2 on t1.id = t2.id;

存储引擎

  • Innodb是行级锁,支持事务
  • 可在命令行中使用show engines来查看存储引擎,一般是InnoDB作为了默认的存储引擎、

查看Mysql存储路径

  • 先用ps -ef | grep nysql
  • 然后查看字段中的--datadir查看对应的路径。

字段类型

  • 够用即可,int是4字节,BIGINT是8字节
  • decimal(m,n),m表示总共的位数,即小数部分和整数部分的总位数,n表示小数部分的位数。

索引

联合索引是多个字段共同作为索引。

  • 联合索引是字段整体有序,不过是优先以左前缀字段有序。
  • 联合索引可以代替左前缀索引字段的单列索引
  • 查询条件中联合索引的左前缀为确定值,此联合索引可以优化第二个字段排序。

https://www.iteye.com/blog/zccst-1697043

https://blog.csdn.net/session_Time/article/details/52605430

https://blog.csdn.net/dengchenrong/article/details/88425762


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!