【MySQL8入门到精通】运维篇-DBMS 数据类型
📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
前言
绝大多数使用Linux操作系统的大中小互联网网站都在使用MySQL作为其后端的数据库存储, 本系列要是我们团队20多人从事MySQL DBA 多年的工作经验中总结提炼而成,每周更新2篇
🚀 1.MySQL 数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
🐴 1.1 数值类型
整数类型:TINYINT、SMALLINT、MEDIUMINT、INT 或 INTEGER、BIGINT
带小数的类型:FLOAT(单精度)、DOUBLE(双精度)、DECIMAL(定点数)
🚩🚩 案例
DECIMAL(P,D);
P是表示有效数字数的精度,P范围为1〜65
D是表示小数点后的位数,D的范围是0~30
MySQL要求D小于或等于(<=)P
DECIMAL(4,2)
23.46
🐴 1.2 日期和时间类型
DATE:YYYY-MM-DD 日期值
TIME:HH:MM:SS 时间值或持续时间
YEAR:YYYY 年份值
DATETIME:YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP:YYYYMMDDHHMMSS 混合日期和时间值,时间戳
案例1:日期与字符串转换
DATE_FORMAT(日期,格式字符串)
mysql>SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d %H:%i:%s’);
案例2:字符串转时间
STR_TO_DATE(字符串,时间格式)
SELECT STR_TO_DATE(‘2021-04-12 16:01:45’, ‘%Y-%m-%d %H:%i:%s’);
案例3:时间戳应用
select timestampdiff(day ,‘2022-02-27’,‘2022-03-10’);
🐴 1.3 字符串类型
CHAR:定长字符串 0-255 字节
VARCHAR:0-65535 字节 变长字符串 --频繁改变的列建议用vachar 类型
BLOB:0-65535 字节 二进制形式的长文本数据,二进制大对象
TEXT:0-65535 字节 长文本数据 、varchar 的加长增强版
LONGTEXT:0-4294967295 字节极大文本数据
ENUM: 1-2 字节 枚举类型(单一值)
SET:1-8 字节 一个集合
mysql> create table t1( sex enum('F','M','UN') );Query OK, 0 rows affected (0.40 sec)mysql> desc t1;+-------+--------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+--------------------+------+-----+---------+-------+| sex | enum('F','M','UN') | YES | | NULL ||+-------+--------------------+------+-----+---------+-------+1 row in set (0.02 sec)mysql> create table t2(col1 set('a','b','c'), sex enum('F','M','UN') );Query OK, 0 rows affected (0.05 sec)mysql> desc t2;+-------+--------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+--------------------+------+-----+---------+-------+| col1 | set('a','b','c') | YES | | NULL ||| sex | enum('F','M','UN') | YES | | NULL ||+-------+--------------------+------+-----+---------+-------+2 rows in set (0.01 sec)mysql> insert into t2 values('a','f');Query OK, 1 row affected (0.02 sec)mysql> select * from t5;+------+------+| col1 | sex |+------+------+| a | F |+------+------+1 row in set (0.00 sec)mysql> insert into t2 values('bc','m');ERROR 1265 (01000): Data truncated for column 'col1' at row 1mysql> insert into t2 values('a,b','f');Query OK, 1 row affected (0.02 sec)mysql> select * from t2;+------+------+| col1 | sex |+------+------+| a | F || a,b | F |+------+------+2 rows in set (0.00 sec)
🚀 2、运维命令大全
查询所有数据的大小:
mysql> select concat(round(sum(data_length/1024/1024),2),‘MB’) as data from information_schema.tables;
查看指定数据库的大小,例如查看数据库db_school 的大小:
select concat(round(sum(data_length/1024/1024),2),‘MB’) as data
from information_schema.tables where table_schema=‘db_school’;
查看指定数据库的某个表的大小,例如查看数据库db_school 中 db_school表的大小:
select concat(round(sum(data_length/1024/1024),2),‘MB’) as data
from information_schema.tables
where table_schema=‘db_school’ and table_name=‘tb_student’;
如何查看 MySQL 的位数?
mysql> show variables like ‘%version_%’;
mysql> status
占用空间最大的前10张表
SELECT
table_schema AS ‘数据库’,
table_name AS ‘表名’,
a.TABLE_TYPE,
a.ENGINE
,
a.CREATE_TIME,
a.UPDATE_TIME,
a.TABLE_COLLATION,
table_rows AS ‘记录数’,
TRUNCATE ( data_length / 1024 / 1024, 2 ) AS ‘数据容量(MB)’,
TRUNCATE ( index_length / 1024 / 1024, 2 ) AS ‘索引容量(MB)’,
TRUNCATE ( ( data_length + index_length ) / 1024 / 1024, 2 ) AS ‘总大小(MB)’
FROM information_schema.TABLES a
ORDER BY ( data_length + index_length ) DESC LIMIT 10;
与50位技术专家面对面
20年技术见证,附赠技术全景图