MySQL进阶

文章目录

  • 第一章、名词解释
  • 第二章、数据类型
    • 2.1、数据类型简介
    • 2.2、数据类型对应属性
    • 2.3、整数类型
    • 2.4、浮点类型
    • 2.5、定点数类型
    • 2.6、日期和时间类型
    • 2.7、文本字符串类型
      • 2.7.1、CHAR和VARCHAR区别
      • 2.7.2、TEXT
    • 2.8、小结和建议
  • 第三章、约束
    • 3.1 约束

第一章、名词解释

名词 解释 举例
DDL(DataDefinitionLanguage) 数据定义语言 用来创建数据库中的各种对象–表、视图、索引等。create,drop,truncate,alter,show,desc
DML(DataManipulationLanguage) 数据操作语言 insert、delete、update、select
DQL(DataQueryLanguage) 数据查询语言 基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块
DCL(DataControlLanguage) 数据控制语言 用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。rollback,commit

第二章、数据类型

2.1、数据类型简介

MySQL进阶_第1张图片

2.2、数据类型对应属性

MySQL进阶_第2张图片

2.3、整数类型

MySQL进阶_第3张图片

  • 宽度
CREATE TABLE test_int(
f1 INT,
f2 INT(5),
f3 INT(5) ZEROFILL
);

INSERT INTO test_int(f1,f2) 
VALUES(123,123),(123456,123456);

INSERT INTO test_int(f3) 
VALUES(123),(123456);

SELECT * FROM test_int;

1.显示宽度在有ZEROFILL时才有用,如果数据宽度 < 字段定义宽度,则前面使用0填充。
2.除此之外,及时定义了字段宽度,只要数据不超过字段类型本身的范围,就可以成功插入表中。
3.从MySQL8.0.17开始,整数数据类型不推荐使用显示宽度属性

  • 适用场景

MySQL进阶_第4张图片

  • 选择方法
    考虑存储空间可靠性的平衡问题,要是为了节省存储空间,使用的整数类型取值范围太小,一旦遇到超出取值范围的情况,可能引起系统错误,影响可靠性。实际上,系统故障产生的成本远远超过增加几个字段存储空间所产生的成本

2.4、浮点类型

MySQL进阶_第5张图片

  • 为什么MySQL的浮点数类型会存在误差?

在这里插入图片描述

在一些对精度要求较高的项目中,千万不要使用浮点数。MySQL提供了精准数据类型:DECIMAL

2.5、定点数类型

在这里插入图片描述

1.定义DECIMAL(5,2)的类型,表示该列取值范围为-999.99~999.99
2.定点数在MySQl里是以字符串的形式存储的,这就决定了它一定是精准的
3.如果定点数类型不指定精度和标度时,默认为(10,0)
4.如果数据的精度超出定点数的数据精度范围时,MySQl同样会进行四舍五入处理。

2.6、日期和时间类型

MySQL进阶_第6张图片

  • TIME

在这里插入图片描述
使用CURRENT_TIME()NOW()函数,会插入当前系统的日期。

  • DATE

使用CURRENT_DATE()NOW()函数,会插入当前系统的日期。

  • DATETIME,TIMESTAMP
    MySQL进阶_第7张图片
    使用CURRENT_TIMESTAMP()NOW()函数,会插入当前系统的日期时间。
  • 开发经验
    MySQL进阶_第8张图片

2.7、文本字符串类型

MySQL进阶_第9张图片

2.7.1、CHAR和VARCHAR区别

1.CHAR

  • 如果保存时,数据实际长度比声明的长度小,则会在右侧填充空格以达到指定长度。
  • 当MySQL检索CHAR类型的数据时,CHAR类型的数据会去除尾部的空格

2.VARCHAR

  • VARCHAR(M)定义时,必须指定长度M,否则报错。
  • MySQL4.0版本以下,varchar(20)指的是20字节,如果存放UTF8汉字,只能存6个(每个汉字三个字节)。MySQL5.0版本以上,varchar(20)指的是20个字符
  • 检索VARCHAR类型的字段数据时,会保留数据尾部的空格

3.开发经验MySQL进阶_第10张图片

2.7.2、TEXT

  • 在向TEXT类型的字段保存和查询数据时,系统自动按照实际长度存储,不需要预先定义长度。
  • 由于实际存储的长度不确定,MySQL不允许TEXT类型的字段做主键。

2.8、小结和建议

MySQL进阶_第11张图片

第三章、约束

3.1 约束

约束是对表中字段的限制。

你可能感兴趣的:(MySQL,mysql,数据库,intellij-idea,java)