【云驻共创】华为云数据库-基础知识

举报
小小张自由--张有博 发表于 2022/04/21 14:20:41 2022/04/21
【摘要】 同 MySQL,SQL Service等结构化查询语言一样,GaussDB也有自己的数据类型(即列类型),运算符以及函数。其中广泛用于DDL、DQL( SELECT 和 WHERE )子句中的函数,对程序员简化查询语句的构造,提高查询计算的效率,起着非常重要的作用。 接下来就和我一起来看看,GaussDB(for MySQL)的数据类型、 GaussDB(for MySQL)的运算符、 Gaus

GaussDB

同 MySQL,SQL Service等结构化查询语言一样,GaussDB也有自己的数据类型(即列类型),运算符以及函数。其中广泛用于DDLDQL SELECT 和 WHERE 子句中的函数,对程序员简化查询语句的构造,提高查询计算的效率,起着非常重要的作用。

接下来就和我一起来看看,GaussDB(for MySQL)的数据类型、 GaussDB(for MySQL)的运算符、 GaussDB(for MySQL)的函数。为你揭开GaussDB的神秘面纱。


1. 数据类型

1.1 数值类型

数值类型是描述定量数据的数据类型,包括严格整数型数值类型和浮点型数值类型。整数型数据的取值范围如下表。

类型名称

说明

存储需求

INT

普通大小的整数

4个字节

SMALLINT

小的整数

2个字节

TINYINT

很小的整数

1个字节

MEDIUMINT

中等大小的整数

3个字节

BIGINT

大整数

8个字节

不同整数型数据的取值范围

数据类型

有符号

无符号

INT

-2147483648~2147483647

0~4294967294

SMALLINT

-32768-32767

0~65535

TINYINT

-128~127

0~255

MEDIUMINT

-8388606~8388607

0~167777215

非整数类型数据取值范围

非整数类型

字节数

负数的取值范围

非负数的取值范围

FLOAT

4

-4.402823466E+38~
-1.175494351E-38

0和1.175494351E-38~

4.402823466E+38

DOUBLE

8

-1.7976931348623157E+308~
-2.2250738585072014E-308

0和2.2250738585072014E-308~
1.7976931348623157E+308

DECIMAL(M,D)

M+2

同DOUBLE型

同DOUBLE型

1.2 文本类型

文本类型用来存储字符数据,还可以存储图片和声音的二进制数据。主要有定长字符串数据、变长字符串数据、文本类型数据、枚举类型数据、SET类型数据、二进制形式文本数据六种。

1.定长字符串数据:定长字符串CHAR(M)是固定长度字符串,在定义类型时需要定义字符串长度。例如:CHAR(9)定义了一个固定长度的字符串列。

2变长字符串数据:变长字符串VARCHAR(M)是长度可变的字符串。例如:VARCHAR(60)定义了一个最大长度为60的字符串。

3.文本类型数据:文本字符串(TEXT)保存非二进制字符串,如文章内容、评论等。TEXT类型分为如下4种,不同的TEXT类型长度也不同,如下表。

类型名称

长度

TINYTEXT

255(2^8-1)

TEXT

255(2^8-1)

MEDIUMTEXT

16777215(2^24-1)

LONGTEXT

4294967295或4GB(2^32-1)

4.枚举类型数据

枚举字符串(ENUM)是一个字符串对象,其值是在创建表定义列时枚举确定的一列值。

语句格式:

<字段名>ENUM(值1','值1',,'值n)

功能:

字段名指将要定义的字段,值n指枚举列表中第n个值。

5.SET类型数据

SET是一个字符串的对象,可以有零或多个值,SET列值为表创建时规定的一列值。

SET类型数据定义语法格式如下:

语句格式:

SET('值1','值2,,'值n')

功能:

指定包括多个SET成员的SET列值,各成员之间要用“,”逗号隔开,SET成员最多可以有64个成员。

6.二进制形式文本数据

二进制数据类型常用于存储图像数据、有格式的文本数据(如Word、Excel文件)、程序文件等。二进制文本数据类型及长度如下表

类型名称

说明

数据长度

BIT(M)

位字段类型

M字节

BINARY(M)

固定长度二进制字符串

M字节

VARBINARY(M)

可变长度二进制字符串

M+1字节

TINYBLOB(M)

非常小的BLOB

最大长度为255(2^8-1)字节

BLOB(M)

小BLOB

最大长度为65535(2^16-1)字节

MEDIUMBLOB(M)

中等大小的BLOB

最大长度为16777215(2^24-1)字节

LONGBLOB(M)

非常大的BLOB

最大长度为4294967295或4GB(2^32-1)字节

1.3 日期时间型类型

日期数据类型数据种类有多个。每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。

日期的数据类型的取值范围如下表所示。

整数类型

取值范围

长度

YEAR

1901 ~ 2155

1个字节

TIME

-838:59:59 ~ 838:59:59~

2个字节

DATE

1000-01-01 ~ 9999-12-31

3个字节

DATETIME

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

8个字节

TIMESTAMP

1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC

4个字节


2. 运算符

2.1 算数运算符

算术运算符是SQL中最基本的运算符,GaussDB(for MySQL)支持的算数运算符及其使用方法,如下表所示

运算符

说明

示例

结果

+

加法运算

SELECT 3+6

9

-

减法运算

SELECT 7-2

5

*

乘法运算

SELECT 2*9

18

/

除法运算,返回商

SELECT 18/3

6

%,MOD

求余运算,返回余数

SELECT 15%8

7

2.2 比较运算符

比较运算符是用来确定两事物间的关系是否成立,比较运算符的值只能是0或1,GaussDB(for MySQL)比较运算及其使用方法,如下表所示。

运算符

说明

示例

结果

=

等于

SELECT 5=9

0

<=>

安全的等于

SELECT 9<=>1

0

<>或者!=

不等于

SELECT 0<>1

1

<=

小于等于

SELECT 2<=7

1

>=

大于等于

SELECT 9>=7

1

>

大于

SELECT 9>7

1

IS NULL

判断一个值是否为空

SELECT 'DB' IS NULL

0

IS NOT NULL

判断一个值是否不为空

SELECT 'DB' IS NOT NULL

1

BETWEEN AND

判断一个值是否落在两个值之间

SELECT 6 BETWEEN 1 AND 9

1

2.3 逻辑运算符

逻辑运算符又称为布尔运算符,用来确定表达式的真和假。其主要用法如下表所示

运算符

说明

示例

结果

NOT 或者!

逻辑非

SELECT not 1

0

ADN 或者 &&

逻辑与

SELECT 5 and 3+2

1

OR 和||

逻辑或

SELECT 1 or 0

1

XOR

逻辑异或

SELECT 1 XOR 3>2

0


3. 函数

3.1 字符串函数

字符串函数主要用于处理字符串,字符串函数及其使用方法如下表所示。

函数名称

说明

LENGTH

计算字符串长度函数,返回字符串的字节长度

CONCAT

合并字符串函数,返回结果为连接参数产生的字符串

TRIM

去掉宇符串中的空格

LOWER

将字符串中的宇母转换为小写

UPPER

将字符串中的字母转换为大写

LEFT

从左侧字截取符串,返回字符串左边的若干个字符

RIGTH

从右侧字截取符串,返回宇符串右边的若干个字符

REPLACE

字符串替换函数,返回替换后的新字符串

SUBSTRING

截取字符串,返回从指定位置开始的指定长度的字符换

REVERSE

字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

3.2 数学函数

数学函数主要用于处理与数学计算相关的问题。这类函数包括绝对值函数、正弦函数、余弦函数和获得随机数的函数等。

函数名称

说明

ABS

求绝对值

SQRT

求二次方根

MOD

求余数

FLOOR

向下取整,返回值转化为一个BIGINT

RAND

生成0~1之间的随机数,传入整数参数是,用来产生重复序列

ROUND

对所传参数进行四舍五入

SIGN

返回参数的符号

SIN

求正弦值

COS

求余弦值

ASOC

求反余弦值,与函数C0S互为反函数,参数须为(-1,1)之间

TAN

求正切值

COT

求余切值

3.3 日期函数

日期函数主要用于处理日期和时间数据。比较常用的几个函数有:NOW、MONTH、YEAR、 SUBTIME:等。日期函数及其使用方法如表所示。

函数名称

说明

CURDATE 和 CURRENT_DATE

两个函数作用相同,返回当前系统的日期值

CURTIME 和 CURRENT_TIME



两个函数作用相同,返回当前系统的时间值


NOW和 SYSDATE

两个函数作用相同,返回当前系统的日期和时间值

UNIX_TIMESTAMP

获取UNX时间戳函数,返回一个以UN以时间戳为基础的无符号整数命令

FROM_UNIXTIME

将UNⅨ时间戳转换为时间格式,与

UNIX_TIMESTAMP互为反函数

MONTH

获取指定日期中的月份

WEEK

获取指定日期是一年中的第几周,返回值的范围是否为0~52或1~53

YEAR

获取年份,返回值范围是1970~2069

3.4 其他函数

其他函数主要有条件判断函数、系统信息函数、加密函数、格式化函数、锁函数等。介绍如下:

1.聚合函数:聚合函数的作用是用于进行统计分析。下面五个函数都比较常用。聚合函数及其使用方法如下表所示。

函数名称

说明

MAX

查询指定列的最大值

MIN

查询指定列的最小值

COUNT

统计查询结果的行数

SUM

求和,返回指定列的总和

AVG

求平均值,返回指定列数据的平均值

2.条件判断函数:条件判断函数的作用是主要用于在SQL语句中控制条件选择。条件判断函数及其使用方法如下表所示。

函数名称

说明

IF

判断,流程控制

IFNULL

判断是否为空

CASE

搜索语句

3.系统信息函数:系统信息函数的作用是用于获取GaussDB(for MySQL)数据库的系统信息。系统信息函数及其使用方法如下表所示。

函数名称

说明

USER()

SESSION_USER()

SYSTEM_USER()

CURRENT_USER()

返回当前用户

DATTABASE()

返回当前数据库名

VERSION()

返回数据库的版本号


4.加密函数:加密函数的作用是用于GaussDB(forM小ySQL)数据库的加密。加密函数及其使用方法如下表所示。

函数名称

说明

COMPRESS()

UNCOMPRESS()

调用COMPRESS对子字符串进行加密,UNCOMPRESS进行解密,普通加密算法。

ENCODE()

DECODE()

调用ENCODE对字符串进行加密,DECODE进行解密,普通加密算法。

DES_ENCRYPT()

DES_DECRYPT()

支持DES加密算法,调用DES_ENCRYPT对字符串进行加密,DES_DECRYPT进行解密

AES_ENCRYPT()

AES_DECRYPT()

支持AES加密算法,调用AES_ENCRYPT对字符串进行加密,AES_DECRYPT进行解密,返回一个二进制串


5.格式化函数:格式化函数的作用是用于GaussDB(for MySQL)数据库的数据格式化操作。

格式化函数及其使用方法如下表所示。

函数名称

说明

DATE_FORMAT(date,fmt)

依照字符串fmt格式化日期date值

FORMAT(x.y)

把x格式化为以逗号隔开的数字序列,y是结果的小数位

TIME_FORMAT(time,fmt)

依照字符串fmt格式化日期TME值

INET_ATON(ip)

返回IP地址的数字表示

INET_NTOA(num)

返回数字所代表的P地址


6.锁函数:锁函数的作用是用于GaussDB(for MySQL)数据库的数据加锁操作。

锁函数及其使用方法如下表所示。

函数名称

说明

GET_LOCK(str,timeout)

得到一个锁,锁名为str,持续时间为timeout

RELEASE LOCK(str)

解开锁名为str的锁

IS_FREE_LOCK(str)

检查名为str的锁是否可以使用

IS_USED_LOCK(str)

检查锁名为str的锁是否正在被使用


总结:

      数据库表由多列字段构成,每一个字段指定了不同的数据类型。指定字段的数据类型之后,也就决定了向字段插入的数据内容。不同的数据类型也决定了GaussDB在存储它们的时候使用的方式,以及在使用它们的时候选择什么运算符号进行运算。GaussDB(for MySQL)的数据类型、 GaussDB(for MySQL)的运算符、 GaussDB(for MySQL)的函数。完全兼容MySQL,应用无需改造即可轻松迁移上云,极大的提高了我们的开发效率。华为在数据库领域已经有近12年的开发经验,产品从早期的摸索到现在的逐步成熟,中间也是经历了很多历程。

      从华为Gauss数据库来看,华为IT架构的底层生态已经逐步建立起来,包括芯片、操作系统、数据库等,这些在华为IT体系内部是高度独立的。新的计算场景对数据库的新需求,再加上自身的云生态体系,逐步迎来了客户使用的推广。

本文整理自华为云社区【内容共创】活动第15期。
查看活动详情:https://bbs.huaweicloud.com/blogs/345822
任务20数据库原理及应用课程04:数据库预备知识


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。