NoteOfMySQL-02-数据库语句基础

一、数据类型

  MySQL支持多种数据类型,主要有数值类型、日期时间类型、字符串类型、二进制类型。

数据类型 明细
数值类型 tinyINT、smallINT、mediumINT、INT、bigINT、FLOAT、DOUBLE
日期时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP
字符串类型 CHAR、VARCHAR、binary、VARbinary、TEXT、ENUM、SET
二进制类型 BIT、binary、VARbinary、tinyBLOB、BLOB、mediumBLOB、longBLOB

(一)数值类型

1. 整数类型

  MySQL支持在类型关键字后面的括号内指定整数值的显示宽度,可使用INT(M)进行设置。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数据依然可以插入。

整数类型

2. 浮点数类型

  浮点类型可以使用(M, D)来表示。其中M代表精度,即总位数;D代表标度,即小数的位数。

浮点数类型

3. 定点数类型

  定点数类型可以使用(M, D)来表示。其中M代表精度,即总位数,默认值为10;D代表标度,即小数的位数,默认值为0。

  定点数类型实际上是以字符串存储的,其有效取值范围由M和D的值决定。存储空间也不是固定的,而是由M决定的,占用M+2个字节。

定点数类型

(二)日期时间类型

日期时间类型

1.  DATE类型

  仅存储日期而不存储时间,默认格式为‘YYYY-MM-DD’。

  可使用current_date()或now()插入当年计算机系统的日期。

2. TIME类型

  记录时间,默认格式为'HH:MM:SS'。

3. YEAR类型

  使用单字节表示年份。

4. DATETIME类型

  DATETIME默认格式为‘YYYY-MM-DD HH:MM:SS’,包含日期和时间信息,存储占用8字节。

  在给DATET/ME类型的字段赋值时,可以使用字符串类型或值类型的数据,只需要符合DATETIME的日期格式即可。

  当DATETIME存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关。

5. TIMESTAMP类型

  TIMESTAMP默认格式为‘YYYY-MM-DD HH:MM:SS’,显示宽度固定为19个字符,包含日期和时间信息,存储占用4字节。

  当TIMESTAMP存储日期数据时,其值以UTC(世界标准时间)格式保存,存储时对当前时区进行转换,检索是再转换回当前时区。所以,当进行查询时,根据读者所在时区不同,其显示的日期时间不同。

(三)字符串类型

字符串类型1
字符串类型2

1.  CHAR和VARCHAR类型

  CHAR(M) 为固定长度字符串,保存时在右侧填充空格以达到指定长度,M的取值范围是0~255。当检索时,尾部的空格将被删掉。

  VARCHAR(M) 为变长字符串,M的取值范围是0~65535。其占用空间为字符串长度+1字节以记录字符串长度,其实际存储的字符串为原字符串+一个字符串结束字符。在保存和检索时,尾部的空格仍保留。

2. TEXT类型

  TEXT 字段保存非二进制字符串,在保存和查询值时,不删除尾部空格。TEXT类型分为4种:tinytext、text、mediumtext、longtext。

3. ENUM类型

   ENUM 是一个字符串对象,其值为表创建时在字段规定中枚举的一列值,最多为65535个。
  语法格式:字段 ENUM ('值1', '值2', '值3'...)

   字段取值时,只能在指定的枚举列表中取,而且一次只能取一个值。如果创建的成员中有空格,其尾部的空格将自动被删除。

   ENUM值依照索引顺序排列,并且空字符串排在非空字符串之前,NULL值排在其他所有枚举值之前。

4. SET类型

  SET 类型是一个字符串对象,可以有零个或多个值,最多为64个。

  语法格式:SET('值1', '值2', '值3'...)

  字段取值时,只能在指定的枚举列表中取,一次可能取多个值。如果创建的成员中有空格,其尾部的空格将自动被删除。

  若插入SET字段有重复,则MySQL自动将其删除,且按照定义顺序显示。

(四)复合类型

ENUM --- 单选按钮
SET  --- 复选框

(五)二进制类型

  字符串类型的数据按字符为单位进行存储,因此存在多种字符集、多种字符序;除了bit数据类型按位为单位进行存储;其他二进制类型的数据按字节为单位进行存储,仅存在二进制字符集binary。

  TEXT和BLOB都可以粗野拿出长字符串,TEXT主要存储文本字符串(如新闻内容、博客日志等),BLOB主要存储二进制数据(如图片、音频、视频等)。

BLOB类型 可存储大小
TinyBlob 255B
Blob 65KB
MediumBlob 16MB
LongBlob 4GB

二、运算符

(一)算术运算符

算术运算符

(二)比较运算符

  MySQL中可以使用下面比较运算符比较数字、字符串、表达式,结果为真时返回1,为假时返回0,不确定时返回NULL。

1. 比较规则

  • 数字作为浮点数比较,字符串以不区分大小写进行比较。
  • 比较的参数中,若存在NULL,则返回NULL。
  • 两个数字比较,按照整数进行比较。
  • 两个字符串进行比较,按照字符串形式进行比较。
  • 一个字符串和一个数字进行比较,则将字符串转换为数字后进行比较。

2. REGEXP运算符匹配字符串

语法格式:expr REGEXP 匹配条件
返回类型:满足匹配返回1;不满足返回0;若expr或匹配条件中有任一为NULL,则返回NULL。

REGEXP运算符匹配字符串

(三)逻辑运算符

  逻辑运算符的运算结果为TRUE(1)、FALSE(0)、NULL。

逻辑运算符

1. NOT、!

  • !0 = 1
  • !1 = 0
  • !NULL = NULL

2. AND、&&

  • 1&&1 = 1
  • [1、0]&&0 = 0
  • *&&NULL = NULL

其中的*可为0或NULL。

3. OR、||

  • [1、0]||[0、1] = 1
  • 0||0 = 0
  • 1||NULL = 1
  • *||NULL = NULL

其中的*可为0或NULL。

4. XOR

  • 0 XOR 1 = 1
  • * XOR NULL = NULL

其中的*可为1或0或NULL。

(四)位运算符

  位运算符是对二进制数字进行运算的。

1. 按位或|

  • 0|0 = 0
  • else = 1

2. 按位与&

  • 1|1 = 1
  • else = 0

3. 按位异或^

  • 1|0 = 1
  • else = 0

4. 按位左移<<

左边高位数值被丢弃,右边补0。a<<n 相当于a*(2^n)。

5. 按位右移>>

右边低位数值被丢弃,右边补0。a<<n 相当于a/(2^n)。

6. 按位取反~

  • ~1 = 0
  • ~0 = 1
原文地址:https://www.cnblogs.com/bpf-1024/p/14052122.html