【云驻共创】华为云数据库-基础知识
GaussDB
同 MySQL,SQL Service等结构化查询语言一样,GaussDB也有自己的数据类型(即列类型),运算符以及函数。其中广泛用于DDL、DQL( 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~ |
0和1.175494351E-38~ 4.402823466E+38 |
DOUBLE |
8 |
-1.7976931348623157E+308~ |
0和2.2250738585072014E-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:数据库预备知识
- 点赞
- 收藏
- 关注作者
评论(0)