2.1.3、兼容MySQL特性-(数据类型、函数、系统视图、SQL、PL与SQL)

一、数据类型变化

1、KES->MySQL

bash 复制代码
test=# select typname,typlen,typcategory from sys_type;
或者
test=# \dTS+
序号 KES数据类型 MySQL 数据类型 备注说明(KES)
数值型
1 tinyint tinyint 有符号整数,取值范围 -128 ~ +127
2 smallint smallint 有符号整数,取值范围 -32768 ~ +32767
3 mediumint/middleint/int3 mediumint 有符号整数,取值范围 - 8388608 ~ +8388607
4 int/integer int 有符号整数,取值范围 -2147483648 ~ +2147483647
5 bigint bigint 有符号整数,取值范围 - 9223372036854775808 ~ +9223372036854775807
6 numeric(precision, scale) number(precision, scale) decimal(precision, scale) decimal(m,d) dec(m,d) 精确数据类型,存储 0 以及绝对值为 [1.0 x 10⁻¹³⁰ , 1.0 x 10¹²⁶) 的正、负定点数。精度 precision 取值范围 1~1000,标度 scale 取值范围 0~1000
7 real/float4 real(m,d) 单精度浮点数,范围在 -1e+37 到 +1e+37 之间,精度至少是 6 位小数
8 double precision (n)/float8 double precision(m,d) 双精度浮点数,范围在 -1e+37 到 +1e+37 之间,精度至少是 15 位小数
9 float§ float§ p 取值为 1~24 时,单精度浮点数。当 p 取值为 25~53 时,双精度浮点数
10 smallserial smallint 自动增加的小整数 1 到 32767
11 serial int 自动增加的整数 1 到 2147483647
12 bigserial bigint 自动增加的大整数 1 到 9223372036854775807
13 money decimal(m,d) 存储固定小数精度的货币数值,小数的精度由数据库的 lc_monetary 设置决定
位串类型
1 bit(n) bit(m) 定长位串
2 bit varying(n) varbinary(m) 变长位串
3 binary(n) binary(m) 定长二进制字符串,n 取值范围为 1-255
4 varbinary(n) varbinary(m) 变长二进制字符串,n 取值范围为 1-65535
字符类型
1 char n \[char |byte ) character(n \[char |byte) char(n) 定长字符串类型,最大长度是 10485760 个字节或者字符,n 缺省值为 1,如果显式指定了 char,则表示 n 个字符长度;如果显式指定 byte,则表示 n 个字节长度;如果没有显式指定,则以系统参数 nls_length_semantics 为准
2 char varying(n\[char|byte)] varchar(n\[char|byte)] varchar2(n\[char|byte)] nvarchar2(n\[char|byte)] nvarchar(n\[char|byte)] varchar(n) 变长字符串类型,n 的取值范围 1~10485760。如果显式指定了 char,则表示 n 个字符长度;如果显式指定 byte,则表示 n 个字节长度;如果没有显式指定,则以系统参数 nls_length_semantics 为准
大对象类型
1 clob text 文本字符类型,最大长度 1gb
2 nclob text 文本字符类型,最大长度 1gb
3 text text 文本字符类型,最大长度 1gb
4 tinytext tinytext 文本字符类型,最大长度 255 个字节
5 mediumtext mediumtext 文本字符类型,最大长度 16777215 个字节
6 longtext longtext 文本字符类型,最大长度 1gb
7 blob blob 二进制字符类型,最大长度 1gb
8 bytea blob 二进制字符类型,最大长度 1gb
9 tinyblob tinyblob 二进制字符类型,最大长度 255 个字节
10 mediumblob mediumblob 二进制字符类型,最大长度 16777215 个字节
11 longblob longblob 二进制字符类型,最大长度 1gb
时间日期类型
1 date date date 数据类型存储日期和时间值。每一个 date 日期值 kes 存储如下值:年、月、日、时、分、秒。
2 time§, time§ without time zone time(fsp) 不带时区的时间值,在 mysql 模式下,time 值的范围可以从 '-838:59:59.000000' 到 '838:59:59.000000',默认精度为 0
3 year year 年份值,year 类型只在 mysql 模式下可用,范围 '1901' 到 '2155'
4 datetime§ datetime(fsp) 时间日期值,仅在 mysql 模式下支持,是 date 和 time 的组合,表示某个时刻,通常以 'yyyy-mm-dd hh:mm:ss' 表示。
5 timestamp§, timestamp§ with time zone, timestamp§ without time zone timestamp(fsp) 时间日期值,可指定是否带时区,p 取值范围为 0~6,在 mysql 模式下默认精度为 0。timestamp with time zone,内部存储的值默认是 utc 时区
6 interval 'expr' opt_field interval expr unit 时间间隔 interval 类型,分为两组,年月和日时分秒。支持兼容 mysql 的域定义,更多信息参见 interval
布尔类型
1 boolean bool, boolean 布尔值,表示真、假的数据类型。1 字节存储。
空间数据类型
1 geometry geometry 几何类型,存储坐标点信息
2 point point 点坐标
3 linestring linestring 线坐标
4 polygon polygon 多边形
json 类型
1 json json 存储 json 数据

2、MySQL->KES

序号 MySQL数据类型 KES数据类型 备注说明(MySQL)
数值型
1 tinyint tinyint 有符号整数,取值范围 -128 ~ +127
2 smallint smallint 有符号整数,取值范围 -32768 ~ +32767
3 mediumint mediumint 有符号整数,取值范围 - 8388608 ~ +8388607
4 int int 有符号整数,取值范围 -2147483648 ~ +2147483647
5 bigint bigint 有符号整数,取值范围 -2⁶³ ~ +2⁶³-1
6 signed/unsigned signed/unsigned 有符号整数和无符号整数
6 decimal(m\[,d)]dec(m\[,d)] decimal(precision, scale)numeric(precision, scale)number(precision, scale) 精确数据类型,可指定精度和标度。精度 m 取值范围 1~65,标度 d 取值范围 0~30
7 real real 单精度浮点数
8 double(m,d) double precision (n) 双精度浮点数
9 double precision(m,d) double precision (n) 双精度浮点数
10 float§ float§ p 取值为 0~23 时,单精度浮点数。当 p 取值为 24~53 时,双精度浮点数
8 fixed (m,d) fixed (precision, scale) 精确数据类型满足小数点前最多支持 131072 位,小数点后最多支持 16383 位。
位串类型
1 bit(m) bit(n) 位字段类型,位数 m 取值范围 1~64
2 binary(m) binary(n) 定长二进制字符串
3 varbinary(m) varbinary(n) 变长二进制字符串
字符类型
1 char(n) char(n \[char|byte)] character(n \[char|byte)] 定长字符串类型,n 最大长度是 10485760 个字节或者字符
2 varchar(n) char varying(n \[char|byte)] varchar(n \[char|byte)] 变长字符串类型,n 最大长度是 10485760 个字节或者字符
3 set('value1','value2',...) set 集合类型
4 enum('value1','value2',...) enum 枚举类型
大对象类型
1 tinytext tinytext 文本字符类型,最大长度为 255 个字节
2 text text 文本字符类型,最大长度 1g 字节
3 mediumtext mediumtext 文本字符类型,最大长度 16777215 个字节
4 longtext longtext 文本字符类型,最大长度 1g 字节
5 tinyblob tinyblob 二进制字符类型,最大长度为 255 字节
6 blob blob 二进制字符类型,最大长度 1g 字节
7 mediumblob mediumblob 二进制字符类型,最大长度 16777215 字节
8 longblob longblob 二进制字符类型,最大长度 1g 字节
时间日期类型
1 date date 日期值,范围 '1000-01-01' 到 '9999-12-31'
2 time(fsp) time§ 时间值,范围 '-838:59:59.000000' 到 '838:59:59.000000'
3 year year 年份值,范围 '1901' 到 '2155'。
4 datetime(fsp) datetime§ 时间日期值,范围 '1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'
5 timestamp(fsp) timestamp§ 时间日期值,范围 '1970-01-01 00:00:01.000000'utc 到 '2038-01-19 03:14:07.999999'utc
布尔类型
1 bool,boolean boolean 布尔值
空间数据类型
1 geometry geometry 几何类型,存储坐标点信息
2 point point 点坐标
3 linestring linestring 线坐标
4 polygon polygon 多边形
json 类型
1 json json 存储 json 数据

二、函数

1、差异函数

bash 复制代码
#列出当前库所有函数(概要:模式、函数名、入参、返回类型)
test=# \df

#包含系统内置函数
test=# \dfS 

#查看函数完整源码 DDL(重点!直接看 create 定义)
test=# \sf sys.concat

#涉及的两个表
1.`sys_proc`:存**函数、存储过程**的核心元数据(函数名、oid、参数、返回类型、函数体等)
2.`sys_namespace`:存**模式 (schema)**信息,nspname 就是模式名
序号 MySQL函数名 KES函数名 功能简要说明
数值函数
1 truncate(x,d) trunc(n1 , n2 ) 函数名不同,但函数功能都是截取数字为指定的小数位数
字符函数
1 convert(expr,type) convert(string bytea,src_encoding name,dest_encoding name) mysql 中,函数可转换参数的数据类型。kes中,函数转换字符串为指定编码格式
2 export_set(bits,on,off ,separator\[,number_of_bits]) export_set(bits,on,off, separator,number_of_bit) 将返回一个 on 字符串,对于未在 bits 中设置位,将返回一个 off 字符串。返回一个字符串,对于在值 bits 中设置的位。与 mysql 相比,kes中 separator 和 number_of_bits 参数必须指定,不可选
6 length(str) length(string) mysql 中,返回字符串的字节长度。kes 返回字符串的字符长度
7 ltrim(str) ltrim(string text , set text) 函数删除指定字符串左侧的空格。kes 多一个可选参数 set,删除 set 中所有出现的字符,直到到达一个不在的字符
8 make_set(bits,str1,str2,...) make_set(bits,oid) 返回一个 set 值,该值由在 bits 中具有相应位的字符串组成。str1 对应位 0,str2 对应位 1,依次类推。str1,str2,... 中的 null 值不会附加到结果中。与 mysql 相比,kes 中该值由指定 set 类型在 bits 中具有相应位的字符串组成
9 rtrim(str) rtrim(string text , set text) 函数删除指定字符串右侧的空格。kes 多一个可选参数 set,删除 set 中所有出现的字符,直到到达一个不在的字符
10 substr(str,pos), substr(str from pos), substr(str,pos,len), substr(str from pos for len) substr | substrb | substrc | substr2 | substr4 ( char , position , substring_length ) mysql 有四种形式,函数从一个字符串中返回指定位置开始的子串。kes 中,函数功能也一致。此外,substr 使用输入字符集定义的字符计算长度。substrb 使用字节而不是字符。substrc 使用 unicode 完整字符。substr2 使用 ucs2 代码点。substr4 使用 ucs4 代码点
时间日期函数
1 extract(unit from date) extract(field from source) 从指定的日期时间中提取指定的部分,其中第一个参数是提取部分的标识,kes 和 mysql 标识参数的值不同
2 now(fsp) now() mysql 的 now 函数返回秒精度为 0 的系统日期时间,kes 的 now 函数返回带时区秒精度为 6 的系统时间
3 str_to_date(str,format) str_to_date(str,format) 字符串按照指定的日期时间格式进行格式化,kes 和 mysql 支持的格式化符号有所不同
聚集函数
1 json_arrayagg(col_or_expr) json_agg(expression), jsonb_agg(expression), json_arrayagg(expression) 将指定列或者表达式聚集为 json 数组
2 json_objectagg(key, value) json_object_agg(name, value), jsonb_object_agg(name, value), json_objectagg(name, value) 将键值对聚集成 json 对象
json 函数
1 json_array(val\[, val ...]) json_array ( { null|absent } on null value_expression \[ format json returning data_type \[ format json \[ encoding utf8 ]]]) 返回包含所有参数的 json 数组。kes 还提供了其他参数,可以指定结果为 null 的行为,返回的结果数据类型,详见 json_array
2 json_extract(json_doc, path , path ...) json_extract_path(from_json json, variadic path_elems text\[\]) 功能都是在 json 数组中提取路径表达式指定的数据。mysql 和 kes 指定路径表达式方式不同,mysql 需要使用 $ 符号
3 json_object(key, val \[, key, val ...]) json_object( keys text\[\], values text\[\]) 返回由参数指定的所有键值对的 json 对象。此外,kes json_object 函数还支持另外两种语法,参见 json_object
4 json_table(expr, path columns ( ( name for ordinality|name type path string path {null|error|default json_string} on error|empty |name type exists path string path |nested path path columns (column_list),...)) as alias json_table (context_item, path_expression asjson_path_name passing { value as varname} \[, ... ] columns (json_table_column , ... )plan ( json_table_plan) plan default ( { innerouter } \[ , { cross union} |{ cross|union } , {inner outer } )][{error|empty} on error 从指定 json 数组中提取数据并返回一个包含指定列的关系表 kes 和 mysql 函数参数有所不同,详见 json_table
|empty} on error] )

2、相同函数

序号 mysql 函数名 kes函数名 功能简要说明
数值函数
1 abs(x) abs(n) 绝对值
2 acos(x) acos(n) 反余弦
3 asin(x) asin(n) 反正弦
4 atan(x) atan(n) 反正切
5 atan2(y,x) atan2(n1, n2) 返回两个变量的反正切
6 ceil(x),ceiling(x) ceil(n),ceiling(n) 返回大于或等于 n 的最小整数
7 cos(x) cos(n) 返回余弦
8 cot(x) cot(n) 返回余切
9 div(x) div(n) 整除
10 degrees(x) degrees(dp) 把弧度转化为角度
11 exp(x) exp(n) 返回自然常数 e 指定数值的次方
12 floor(x) floor(n) 返回等于或小于 n 的最大整数
13 ln(x) ln(n) 返回参数的自然对数
14 log(x), log(b,x) log(n) log(n2 numeric, n1 numeric) 返回指定数字,指定底数的对数
15 log10(x) log10(n) 返回指定数字以 10 为底的对数
16 mod(n,m) mod(y,x) 取余数
17 pi() pi() 返回 π 值
18 pow(x,y), power(x,y) power(a, b) 计算 a 的 b 次幂并返回结果
19 radians(x) radians(dp) 把角度 dp 转为弧度。
20 rand(n) rand(seed), random() 生成范围 0.0 <= x <1.0 中的随机值
21 round(x,d) round(v numeric, s int) 将数字四舍五入到指定的小数位数
21 sign(x) sign(n) 返回指定数字的符号
23 sin(x) sin(n) 正弦值
24 sqrt(x) sqrt(n) 返回数字的平方根
25 tan(x) tan(n) 正切值
字符函数
1 bit_length(str) bit_length(string) 返回字符串位长度
2 char_length(str), character_length(str) char_length(string), character_length(str) 返回字符串的字符数
序号 mysql 函数名 kes函数名 功能简要说明
3 concat(str1,str2,...) concat(str "any" , str "any" \[, ... ]) 拼接多个字符串
4 concat_ws(separator, str1,str2,...) concat_ws(sep text,str "any" ,str "any" \[, ...]) 通过指定分隔符来拼接多个字符串
5 find_in_set(str,strlist) find_in_set(str,strlist) 返回第二个参数中第一个参数的索引(位置)
6 from_base64(str) from_base64(string) 解码 base64 编码的字符串,并以二进制字符串的形式返回结果
7 isnull(expr) isnull(expr) 判断表达式 expr 为 null,则返回值 1,非空返回 0
8 lcase(str) lcase(string) 将字符串转为小写
9 locate(substr,str),locate(substr,str,pos) locate(substr, str),locate(substr, str, pos) 返回子字符串在字符串中第一次出现的位置索引,位置计数的起始值为 1。
10 lower(str) lower(string) 将字符串转为小写
11 lpad(str,len,padstr) lpad(string text,length int , fill text) 在字符串左侧填充指定的字符串,使其达到指定的长度
12 mid(str,pos,len) mid(str, pos, count) 返回一个字符串指定位置指定长度的子串
13 octet_length(str) octet_length(string) 返回字符串以字节为单位的长度
14 position(substr in str) position(substring in string) 返回指定子串在指定字符串第一次出现的位置
15 regexp_like(expr, pat, match_type) regexp_like( source, pattern ,match_param) 判断一个字符串是否和一个正则表达式匹配
16 regexp_replace(expr, pat, repl , pos\[, occurrence\[, match_type]]) regexp_replace(source, pattern, replacement , position \[, occurrence \[, flag ]]) 将匹配正则表达式模式的子串替换为新文本
17 repeat(str,count) repeat(string text, number int) 指定字符串重复指定次数并返回新串
18 replace(str,from_str,to_str) replace(string text, from text, to text) 将字符串中出现的所有子串替换为新的子串
19 right(str,len) right(string, length) 返回字符串最右边指定数量的字符子串
20 rpad(str,len,padstr) rpad(string text, length int , fill text) 在字符串右侧填充指定的子串,使其达到指的长度
21 substring(str,pos),substring(str from pos),substring(str,pos,len), substring(str from pos for len) substring(string from int for int) 从一个字符串中返回指定位置指定长度的子串
22 substring_index(str,delim,count) substring_index(str,delimiter,count) 返回字符串中指定间隔符出现在指定次数之前的子串
23 to_base64(str) to_base64(string) 返回字符串以 base-64 形式编码的字符表示
24 trim({both |leading |trailing} \[remstr from]str),trim(remstr from str) trim( { leading|trailing|both } \[ trim_character |trim_character } from trim_source ) 删除字符串前导和尾随的指定字符或者空格
25 ucase(str) ucase(string) 将字符串转为大写
26 upper(str) upper(string) 将字符串转换为大写
时间日期函数
序号 mysql 函数名 kes函数名 功能简要说明
1 adddate(date,interval expr unit), adddate(expr,days) adddate(n1, n2) 指定日期 / 时间加上指定的时间间隔
2 addtime(expr1,expr2) addtime(n1, n2) 指定时间上加上指定的时间间隔
3 convert(expr, type) convert(expr, type) 将输入的 expr 转化为固定的 type 类型
4 convert_tz(dt,from_tz,to_tz) convert_tz(dt,from_tz,to_tz) 将一个时区的时候转换为另一个时区的时间
5 curdate() curdate() 返回当前系统的日期
6 current_date() current_date() 返回当前系统的日期
7 current_time() current_time(precision) 返回系统时间
8 current_timestamp() current_timestamp(precision) 返回系统日期时间
9 curtime() curtime() 返回当前系统的时间
10 date_add(date,interval expr unit) date_add(n,interval) 从日期时间上加上指定的时间间隔
11 date_sub(date,interval expr unit) date_sub(n,interval) 从日期时间上减去指定的时间间隔
12 datediff(expr1,expr2) datediff(n1,n2) 返回两个日期值之间的天数
13 day(date) day(n) 返回指定日期的月份的日期值
14 dayname(date) dayname(n) 返回指定日期的星期名称
15 dayofmonth(date) dayofmonth(n) 返回指定日期的月份的日期
16 dayofweek(date) dayofweek(n) 返回给定日期的星期索引
17 dayofyear(date) dayofyear(n) 返回给定日期所在当前年份中的第几天
18 format_pico_time(n) format_pico_time(n) 将皮秒值转换为带单位指示符的文本字符串
19 from_days(n) from_days(n) 将天数值转换为日期
20 from_unixtime(unix_timestamp , format) from_unixtime(n ,'format') 将 unix 时间戳转化为以当前会话时区表示的日期时间值
21 get_format({date|time|datetime}, {'eur'|'usa'|'jis'|'iso'|'internal'} ) 同前面 返回指定的国家地区时间输出格式
22 hour(time) hour(n) 返回给定时间的小时部分
23 localtime(fsp) localtime(n) 返回系统日期时间
24 localtimestamp(fsp) localtimestamp(n) 返回系统日期时间
25 last_day(date) last_day(date) 计算日期所在月份的最后一天
26 makedate(year,dayofyear) makedate(year,dayofyear) 返回指定年份第 n 天的日期值
27 maketime(hour,minute,second) maketime(hour,minute,second) 返回由参数指定组成的时间值
28 microsecond(expr) microsecond(n) 返回指定时间的微秒值
29 minute(time) minute(n) 返回指定时间的分钟值
30 month(date) month(n) 返回指日期的月份值
31 monthname(date) monthname(n) 返回指日期的月份名称
32 period_add(p,n) period_add(p,n) 指定年月上加上指定的月份数
序号 mysql 函数名 kes函数名 功能简要说明
33 period_diff(p1,p2) period_diff(p,n) 计算两个年月值相差的月份数
34 quarter(date) quarter(n) 返回日期的季度数
35 second(time) second(n) 返回指定日期时间的秒值
36 sec_to_time(seconds) sec_to_time(n) 将秒数转换为时分秒格式并返回
37 subtime(expr1,expr2) subtime(n1, n2) 指定时间上减去指的的时间间隔
38 time(n) time(n) 返回给定日期的时间部分
39 timediff(expr1,expr2) timediff(n1,n2) 计算两个时间的差值
40 timestamp(n1 , n2) timestamp(n1 , n2) 将日期时间值 n1 与时间值 n2 相加并返回 timestamp 类型值
41 timestampadd(unit,interval,datetime_expr) timestampadd('unit',interval,n) 将指定时间间隔加到日期时间值上
42 timestampdiff(unit, datetime_expr1, datetime_expr2) timestampdiff('unit',n1,n2) 返回两个日期时间的时间间隔
43 time_format(time,format) time_format(time,format) 按照指定的格式格式化时间
44 time_to_sec(time) time_to_sec(n) 将输入的时间转换为秒数
45 to_days(date) to_days(n) 将指定日期转换为距离 0 年的天数
46 to_seconds(expr) to_seconds(n) 返回日期时间值 n 距离 0 年的秒数
47 unix_timestamp(expr) unix_timestamp(expr) 将 date、timestamp、time 类型的 n 或指定格式的数值 n 转换为对应 utc 日期时间
48 utc_date() utc_date() 获取当前服务器的 utc 日期(即格林威治标准日期)
49 utc_time(fsp) utc_time(n) 获取当前服务器的 utc 时间(即格林威治标准时间)
50 utc_timestamp(fsp) utc_timestamp(n) 获取当前服务器的 utc 日期时间(即格林威治标准日期时间)
51 week(date,mode) week(n , mode) 返回日期位于当年的第几周
52 weekday(date) weekday(n) 返回指定日期的星期索引
53 weekofyear(date) weekofyear(n) 返回指定日期的所在周数值
54 year(date) year(n) 提取日期中的年份值
55 yearweek(date,mode) yearweek(n , mode) 返回指定日期的年份与日期所在当年周数值
聚集函数
1 avg(expr) avg(expression) 计算平均值
2 bit_and(expr) bit_and(expression) 按位与运算
3 bit_or(expr) bit_or(expression) 按位或运算
4 count(expr) count(expression) 返回查询行数
5 group_concat(expr) group_concat(expression) 将分组中指定列或表达式连接组成新的字符串
序号 mysql 函数名 kes函数名 功能简要说明
6 max(expr) max(expression) 最大值
7 min(expr) min(expression) 最小值
8 stddev(expr) stddev(expression) 总体标准值
9 stddev_pop(expr) stddev_pop(expression) 总体标准差
10 stddev_samp(expr) stddev_samp(expression) 样本标准差
11 sum(expr) sum(expression) 总和
12 var_pop(expr) var_pop(expression) 总体方差
13 var_samp(expr) var_samp(expression) 样本方差
14 variance(expr) variance(expression) 总体方差
窗口函数
1 cume_dist() cume_dist() 返回当前行的累积分布
2 dense_rank() dense_rank() 返回所在分区内的排名
3 first_value(expr) first_value(expression) 返回当前关联窗口的第一行
4 lag(expr , n\[, default]) lag(value anyelement, offset integer \[,default anyelement ]) 返回当前行所在分区内当前行之前指定行之内的值
5 last_value(expr) last_value(expression) 返回当前关联窗口的最后一行
6 lead(expr , n\[, default]) lead(value anyelement, offset integer \[,default anyelement ]) 返回当前行所在分区内当前行之后指定行之内的值
7 nth_value(expr, n) nth_value(value any, nth integer) 从当前关联窗口的指定一行中返回评估值
8 ntile(n) ntile(num_buckets integer) 将当前行所在分区内的所有行尽可能平均分成指定数量的区间
9 percent_rank() percent_rank() 返回当前行所在分区内的相对排名
10 rank() rank() 返回当前行所在分区内的排名
11 row_number() row_number() 返回当前行所在分区内的序号
其他函数
1 row_count() row_count() 返回上一条语句的影响行数

三、系统视图

bash 复制代码
#列出当前库所有视图:
test=# \dv

#查看某个视图的定义(DDL创建语句):
test=# \sv 视图名

#关联的系统表
sys_class:存储视图对象,`relkind='v'`代表视图,存 relname (视图名)、oid
sys_namespace:存储模式对象,nspname 代表模式名,存 nspname、oid
sys_rewrite:存储视图定义语句,存视图的原始 SQL 定义
sys_depend:存储对象依赖关系,记录视图依赖的表 / 视图 oid
sys_authid:存储角色用户信息,rolname 代表用户名,存 rolname、oid
序号 目录名 用途
1 information_schema.character_sets 视图 用于列出 mysql 数据库支持的字符集编码及字符集编码的相关信息。
2 information_schema.columns 视图 数据库中有关所有表列(或视图列)的信息。
3 information_schema.key_column_usage 视图 当前数据库中所有被唯一、主键或外键约束限制的列。
4 information_schema.parameters 提供有关存储例程(存储过程和存储函数)的参数以及函数的返回值的信息。
5 information_schema.routines 视图 该视图提供有关存储例程(存储过程和存储函数)的信息。
6 information_schema.column_privileges 临时表 该临时表提供列级别权限的信息。
7 information_schema.enabled_roles 视图 该视图提供当前会话中可用角色的信息。
8 information_schema.table_constraints 视图 该视图提供了表具有的约束。
9 information_schema.table_privileges 临时表 该临时表提供表级别权限的信息。
10 information_schema.triggers 视图 该视图提供了有关触发器的信息。
11 information_schema.tables 视图 数据库中表的相关信息。
12 information_schema.views 视图 关于数据库中视图(view)的相关信息。
13 information_schema.schemata 视图 提供了数据库的相关信息。
14 information_schema.processlist 视图 指示当前由服务器内执行的线程集执行的操作。
15 information_schema.referential_constraints 视图 当前数据库中外键约束的信息。
16 information_schema.collations 视图 提供有关每个字符集的排序规则的信息。
17 information_schema.collation_character_set_applicability 视图 指示什么字符集适用于什么排序规则。
18 information_schema.role_table_grants 视图 有关当前启用的角色可用或由当前启用的角色授予的角色的表权限的信息。
19 information_schema.role_column_grants 视图 有关当前启用的角色可用或由当前启用的角色授予的角色的列权限的信息。
20 information_schema.role_routine_grants 视图 有关当前启用的角色可用或由当前启用的角色授予的角色的例程权限的信息。
21 information_schema.administrable_role_authorizations 视图 提供哪些适用于当前用户或角色的角色可以授予其他用户或角色。
22 information_schema.applicable_roles 视图 有关适用于当前用户的角色的信息。
23 information_schema.check_constraint 视图 create table 允许表和列 check 约束,该视图提供了有关这些约束的信息。
24 information_schema.view_routine_usage 视图 对视图定义中使用的存储函数信息的访问。
25 information_schema.view_table_usage 视图 对视图定义中使用的表和视图信息的访问。

四、SQL差异

序号 功能 mysql kes
常量
1 current_catalog 支持 支持
2 current_role 支持 支持
3 current_schema 支持 支持
4 current_user 支持 支持
5 localtimestamp 支持 支持
6 null 支持 支持
7 session_user 支持 支持
8 sysdate 支持 支持
9 user 支持 支持
操作符
1 算术操作符:+、-、*、/、%、mod、div 支持 支持
2 逻辑操作符:not、!、and、&&、or、||、xor 支持 支持
3 位操作符:|、&、<<、>>、~ 支持 支持
4 位操作符:# 不支持 支持
5 比较操作符:==、<=>、<>、!=、<、>、>=、<= 支持 支持
6 集合操作符:union all、intersect all、except all 支持 支持
条件比较
1 notbetween ... and 支持 支持
2 notexists(subquery) 支持 支持
3 notin 支持 支持
4 is not null 支持 支持
5 not like 支持 支持
6 rlike 支持 不支持
数据对象类型
1 表、分区表 支持 支持
2 全局临时表 不支持 支持
3 表空间 支持 支持
4 视图 支持 支持
5 序列 不支持 支持
6 自定义函数、存储过程 支持 支持
7 包 不支持 支持
8 索引 支持 支持
9 全局索引 支持 支持
10 logfile group 支持 不支持
11 物化视图 不支持 支持
12 触发器 支持 支持
13 隐含列 不支持 支持
14 约束 支持 支持
15 外部表 不支持 支持
16 dblink 不支持 支持
17 实例 支持 不支持
18 用户、角色 支持 支持
sql 语句
1 call 语句 支持 支持
2 do 语句 支持 支持(有差异)
3 except、intersect、union 语句 支持 支持
4 delete from partition 支持 支持
5 insert ... select 支持 支持
6 insert ... set 支持 支持
7 insert ... on duplicate key update 支持 支持
8 insert delayed 支持 不支持
9 update ... order by/limit 支持 支持
10 load data/xml 支持 支持
11 replace into 支持 支持
12 select ... limit 支持 支持
13 select ... into 支持 支持
14 select ... join 支持 支持
15 包含等号操作符的子查询 支持 支持
16 包含比较操作符的子查询 支持 支持
17 包含 any、in、some 的子查询 支持 支持
18 包含 all 的子查询 支持 支持
19 行子查询 支持 支持
20 包含 exists、not exists 的子查询 支持 支持
21 包含对外层查询表引用的子查询 支持 支持
22 包含 from 子句的子查询 支持 支持
23 table 语句 支持 支持
24 update 语句 支持 支持
25 values 语句 支持 支持
26 with as 语句 支持 支持
27 start transaction 支持 支持
28 commit、rollback 支持 支持
29 savepoint、rollback to savepoint、release savepoint 支持 支持
30 lock/unlock instance 支持 不支持
31 lock/unlock table 支持 支持
32 set transaction 支持 支持
33 alter/create/drop user/role 支持 支持
34 grant/revoke 支持 支持
35 set role 支持 支持
36 set password for 支持 不支持
37 alter/create/drop resource group 支持 支持
38 analyze table 支持 支持
39 check/checksum table 支持 不支持
40 set、reset 语句 支持 支持
41 show 语句 支持 支持(有差异)
42 explain 语句 支持 支持
43 create/alter ... comment 'string' 支持 支持
44 create table ... on update 支持 支持

五、PL/SQL差异

序号 功能 mysql kes
数据类型
1 set 支持 支持
2 enum 支持 支持
3 集合类型(nested tables、associative arrays、varrays) 不支持 不支持
4 record 不支持 支持
5 游标 支持 支持
pl/sql 对象
1 触发器 支持 支持
2 匿名块 不支持 支持
3 存储过程 支持 支持
4 函数 支持 支持
5 包 不支持 不支持
6 type 类型对象 不支持 不支持
pl/sql 语句
1 begin ... end 支持 支持
2 labels 标签语句 支持 支持
3 declare 语句 支持 支持
4 变量声明和赋值 支持 支持
5 case 语句 支持 支持
6 if then/ if then else/if then elseif 支持 支持
7 loop 语句 支持 支持
8 for ... loop/while ... loop 不支持 支持
9 foreach 语句 不支持 支持
10 repeat 语句 支持 支持
11 return 语句 支持 支持
12 while 语句 支持 支持
13 continue 语句 不支持 支持
14 leave 语句 支持 支持
15 exit 语句 不支持 支持
16 游标 cursor close 语句 支持 支持
17 游标 cursor declare 语句 支持 支持
18 游标 cursor fetch 语句 支持 支持
19 游标 cursor open 语句 支持 支持
20 execute 语句 支持 支持
21 execute immediate 语句 不支持 支持
22 异常处理 exception 语句 不支持 支持
相关推荐
vx_Biye_Design2 小时前
PHP中医养生馆预约系统60841-计算机课程设计、毕业设计
vue.js·spring boot·后端·mysql·php·课程设计·express
太理摆烂哥2 小时前
MySQL数据类型
数据库·mysql
执笔为剑2 小时前
2.1.3-1、兼容MySQL特性-(数据类型、函数、SQL、PL与SQL)
mysql
我不会起名字32216 小时前
MySQL 深分页 LIMIT 1000000 卡死:3 种改写与 4 组实测对比
mysql·性能优化·索引·分页·limit
编程火箭车18 小时前
MySQL 拥抱 AI:向量、RAG、AutoML 全进了数据库
数据库·mysql·ai编程·向量数据库·rag·automl·mysql9
o_oer18 小时前
mysql type
mysql
花卷持续成长18 小时前
慢SQL的整体优化思路
后端·mysql
鱼很腾apoc19 小时前
【MySQL】第3期 索引、事务与视图系统详解
linux·mysql·事务·索引·dml·视图·macc
misty youth20 小时前
Navicat与PHPstudy小皮
mysql·adb·php·navicat