目录

一、结构查询语句的分类

二、MySQL中的数据类型

1、整数类型

2、浮点型(float和double)

3、定点数(decimal)

4、字符串

 5、日期时间类型


一、结构查询语句的分类

doris和mysql查询性能比较 mysql查询ddl_数据库

 * DDL:CREATE  创建 ;  DROP    删除  ; ALTER   修改

 用来创建数据库,删除数据库,修改数据库;创建表,删除表,修改表。它们的命令不会涉及到真正的数据,只会操作数据的载体(数据库和表)。

* BML:INSERT   插入  ; UPDATE   更新/修改  ;  DELETE   删除

对数据进行操作,插入数据,修改数据,删除数据。修改数据、删除数据和修改数据库,删除数据库是不一样的。

* DQL:SELETE   选择

数据库中的查询语句,用来查询数据库中的数据

*DCL:控制数据使用权限

二、MySQL中的数据类型

1、整数类型

整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两类整数类型,MySQL数据库除了支持这两种类型意外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。

BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、INT、BIG INT

不同类型的整数类型的字节数不同,取值范围也不同,也可分为有符号数和无符号数

doris和mysql查询性能比较 mysql查询ddl_sql_02

 (1)无符号数:在数据类型后加unsigned就表示数据类型的无符号数取值范围(最大值翻倍);如:tinyint unsigned 的取值范围是0~255;

(2) MySQL支持类型的名称后面指定该类型的显示宽度

语法格式:

数据类型(显示宽度)

* 显示宽度对类型的范围没有影响,对我们使用查询语句的时候数据显示的宽度也没影响,好像没什么用

(3) 整数类型的默认显示宽度

每个数据类型的默认显示宽度刚好能显示该数据类型的所有值,声明数据类型时不定义显示宽度即为默认值

doris和mysql查询性能比较 mysql查询ddl_数据库_03


(4)zerofill参数

表示数字不足的显示空间由0来填补

语法格式:

int(显示宽度)  zerofill

在整数类型使用时,还可以搭配使用zerofill参数。使用zerofill参数时,MySQL会自动加上unsigned属性(无符号数)。

当插入数据的显示宽度大于设置的显示宽度时,数据依然可以插入,并且可以完整的显示出来,设置的显示宽度在显示的该记录时失效。

但是要注意,数据的宽度不能大于默认宽度,如果大于默认宽度,那该数据已经超过了该类型的最大值。因为最大值的宽度必须是小于等于默认宽度。如果一个值大于了这个类型的最大值,那么这个值是不可能插入的。

2、浮点型(float和double)

doris和mysql查询性能比较 mysql查询ddl_doris和mysql查询性能比较_04

例如 float(6,3) ,如果插入一个数123.456789,实际数据库中存的是123.456,插入3.14,数据库中存的是3.14000。

3、定点数(decimal)

浮点型在数据库中存放的是近似值定点类型在数据库中存放的是精确值

语法格式:

DECIMAL(M,D) 

M是总位数,D是小数位数;

decimal型默认整数位数是10,小数位数是0,即默认为整数;

在MySQL中,定点数以字符串形式存储。因此,其精度比浮点数要高。而且,浮点数会出现误差,这是浮点数一直存在的缺陷。如果对数据的精度要求比较高,还是选定点数(decimal)比较安全

4、字符串

doris和mysql查询性能比较 mysql查询ddl_doris和mysql查询性能比较_05

char和varchar:

char类型和varchar类型都在创建表是指定了最大长度

字符串类型(n)

(1)char类型的长度是固定的,在创建表时就指定了。每条记录都会占用定义的(n)字节长度,若字符数小于n,则以空格补于其后,查询之时再将空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不限于此;

(2)varchar类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以去0~65535之间的任意值。指定varchar类型的最大值以后,其长度可以在0到最大长度之间,即在这个范围内,使用多少分配多少,这样可有效节约系统的空间。varchar类型实际占用的空间为字符串的实际长度+1。

doris和mysql查询性能比较 mysql查询ddl_数据库_06

 char和varchar列检索的值并不总是相同,因为检索是从char列删除了尾部的空格。

(3)char类型的字符串检索速度要比varchar类型的快。

 varchar和text:

(1)varchar可指定长度n,text不能指定,内部存储varchar是存入的实际字符数+1个字节,text是实际字符数+2个字节;

(2)text类型不能有默认值;

(3)varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引不起作用。

 5、日期时间类型

 

doris和mysql查询性能比较 mysql查询ddl_java_07

 每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统会报错,并将零值插入到数据库中。不同的日期与时间类型有不同的零值。

(1)year类型

a、使用一个字节表示年份。MySQL中以YYYY的形式显示year类型的值 ;

b、使用两位字符串表示。‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。例如,输入‘35’,year值会转换为2035;输入‘90’,year值会转换为1990。‘0’和‘00’的效果是一样的。

c、使用两位数字表示。1~69转换为2001~2069,70~99转换为1970~1999。注意,2位数字与2位字符串是不一样的。因为,如果插入0,转换后的year值不是2000,而是0000。

(2) date类型

date类型使用4个字节来表示日期。MySQL中以YYYY-MM-DD 的形式显示DATE类型的值。其中,YYYY表示年;MM表示月;DD表示日。DATE 类型的范围可以从‘1000-01-01’~‘9999-12-31’。

a、“YYYY-MM-DD”或“YYYYMMDD”字符串格式。MySQL会自动转换成日期格式;

b、“YY-MM-DD”或“YYMMDD”字符串格式。其中‘YY'的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。

c、使用current_date或now()来输入当前系统日期。

(3) time类型

TIME类型使用3个字节来表示时间。MySQL中以 HH:MM:SS 的形式显示TIME类型的值。其中,HH表示时;MM表示分,取值范围为0~59;SS表示秒,取值范围是0~59。

TIME类型的范围可以从‘-838:59:59’~‘838:59:59’。虽然,小时的范围是0~23。但是为了表示某种特殊需要的时间间隔,将TIME类型的范围扩大了。而且,还支持了负值。

a、“D HH:MM:SS”格式的字符串表示。D表示天数,取值范围是0~34。保存时,小时的值等于(D*24+HH)。

b、“HHMMSS”字符串或HHMMSS数值表示。

(4)datetime类型

datetime类型使用8个字节来表示日期和时间。MySQL中以‘YYYY-MM-DDHH:MM:SS’的形式显示datetime类型的值。从其形式可以看出,datetime类型可以直接用date类型和time类型组合而成。

a、“YYYY-MM-DD HH:MM:SS”或“YYYYMMDDHHMMSS”字符串表示。

b、“YY-MM-DD HH:MM:SS”或“YYMMDDHHMMSS”字符串表示。其中‘YY’的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。与 year型和date型相同。

c、使用now()来输入当前系统日期和时间。

(5)timestamp类型

timestamp类型使用4个字节来表示日期和时间。timestamp类型的范围是从1970-01-01 08:00:01~2038-01-19 11:14:07。

MySQL中也是以‘YYYY-MM-DD HH:MM:SS'的形式显示timestamp类型的值timestamp类型与datetime类型显示的格式是一样的,给timestamp类型的字段赋值的表示方法基本与datetime类型相同。

注意:timestamp类型范围比较小,没有datatime类型的范围大。因此,输入值时要保证在 timestamp类型的有效范围内。

timestamp特点:

a、使用current_timestamp来输入系统当前日期与时间;

b、输入NULL时,系统会输入系统当前日期与时间;

c、无任何输入时,系统会输入系统当前日期与时间。

d、timestamp类型的时间是根据时区来显示的。