目录
🧨考前准备:
🧨🧨🧨🧨高斯预约考试必备🧨🧨🧨🧨
注册华为ID的网址:https://e.huawei.com/cn/talent/portal/#/)
双证件:身份证+第二证件(军官证,驾照,信用卡,在校学生证,社保卡,有效期工作证)
🎡数据库操作语言
DDL(Data Definition Language) | 数据定义语言 |
DML(Data Manipulation Language) | 数据操作语言 |
DQL(Data Query Language) | 数据查询语言 |
DTL(Data Transaction Language) | 数据控制语言 |
原图
亿图图示https://www.edrawmax.cn/online/share.html?code=4173096c07ce11ef9109ebf0f0121b46
✨OLTP和OLAP
原图
亿图图示https://www.edrawmax.cn/online/share.html?code=12a56234049e11ef94adf9ef8352e1d6
联机事务处理OLTP
OLTP是传统的关系型数据库的主要应用,事务性非常高的系统,一般都是高可用的在线系统,以
小的事务以及小的查询为主,主要是基本的日常的事务处理,例如 银行交易。
OLTP 系统强调数据库内存效率,评估其系统的时候,一 般看其每秒执行的Transaction以及
Execute SQL的数量。 强调内存各种指标的命令率,强调绑定变量,强调并发 操作。
联机分析处理OLAP
OLAP是数据仓库系统的主要应用,支持复杂的分析操作, 侧重决策支持,并且提供直观易懂的查
询结果。。
OLAP系统则强调数据分析,考核的标准往往是磁盘子系统的吞吐量(带宽),强调SQL执行时
长,强调磁盘 I/O,强调分区等。
🎯常用函数
预置脱敏函数 |
字符串处理函数 |
数字操作函数 |
时间日期操作函数 |
类型转换函数 |
几何函数 |
预置脱敏函数(隐私数据保护)
动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地 在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。
当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。
* creditcardmasking:对后四位之前的数字进行脱敏 * email:邮箱相关 * full:全部 * shuffle:洗牌 * maskall:全部脱敏 */
脱敏函数名 | 示例 |
creditcardmasking | '4880-9898-4545-2525' 将会被脱敏为'xxxx-xxxx-xxxx-2525',该函数仅对后4位之前的数字进行脱敏 |
basicemailmasking | 'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com',对出现第一个'@'之 前的文本进行脱敏 |
fullemailmasking | 'abcd@gmail.com' 将会被脱敏为'xxxx@xxxxx.com',对出现最后一 个'.'之前的文本 (除'@'符外)进行脱敏 |
alldigitsmasking | 'alex123alex' 将会被脱敏为'alex000alex', 仅对文本中的数字进行脱敏 |
shufflemasking | 序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏 |
randommaskin | 'hello word' 将会被脱敏为 'ad5f5ghdf5', 将文本按字符随机脱敏 |
maskall | '4880-9898-4545-2525' 将会被脱敏为'xxxxxxxxxxxxxxxxxxx' |
🧲字符处理函数
/** * char_length:获取字符串中的字符个数 * lengthb:获取指定字符串的字节数 * rawcat:字符串拼接函数 * reverse:返回颠倒的字符串 * left(str text, n int):返回字符串的前n个字符 * right(str text, n int):返回字符串的后n个字符 */
字符处理函数 | 功能 | 示例 |
---|---|---|
char_length(string) | 字符串中的字符个数。 | char_length('hello') //5 |
length(text/bpchar) | 获取指定字符串的字节数。 | lengthb('hello') //5 |
left(str text,n int) | 返回字符串的前n个字符。当n是负数时, 返回除最后|n|个字 符以外的所有字符。 | left('abcde', 2) // ab |
right(str text,n int) | 返回字符串中的后n个字符。当n是负值 时,返回除前|n|个字 符以外的所有字符。 | right('abcde', 2) //de |
lpad(string text, length int [, fill text]) | 通过填充字符fill(缺省时为空白),把 string填充为length长度。 如果string已经比length长则将其尾部断。 | lpad('hi', 5, 'xyza') //xyzhi |
rpad(string text, length int [, fill text] | 通过填充字符fill(缺省时为空白),把 string填充为length长度。 如果string已经比length长则将其尾部断。 | rpad('hi', 5, 'xy') hixyx |
notlike(x bytea name text, y bytea text) | 比较x和y是否不一致 | notlike(1,2) // t notlike(1,1) // f |
rawcat(raw,raw) | 字符串拼接函数 | rawcat('ab','cd') //abcd |
reverse(str) | 返回跌倒的字符串 | reverse('abcde') //edcba |
关于 left 和 right
left 正数 如图所示left2
left 负数
right 正数
right 负数
特别重点的字符串函数
instr(string1,string2,int1,int2) | 查询对应原字符串匹配字符串的对应的索引值 |
overlay(string1 placing string2 FROM int1 [for int2]) | 将原字符串中需匹配替换字符串替换成对应字符串 |
substring(string [FROM int1] [for int2]) | 将原字符根据索引和字符条目个数截取相应字符串 |
replace(string text, FROM text, to text) | 将原字符串里出现(FROM text)所有字符串替换成(to text)字符串 |
原图
亿图图示https://www.edrawmax.cn/online/share.html?code=dca0930209c511ef84030bfa047a2703
🧲数字操作函数
/** * ceil(x):不小于参数的最小整数,ceil(-42.8) 结果为 -42 * floor(x):不大于参数的最大整数,ceil(-42.8) 结果为 -43 */
数字操作函数 | 功能 | 示例 |
---|---|---|
ceil(x) | 不小于参数的最小的整数 | ceil(-42.8) // -42 |
floor(x) | 不大于参数的最大整数 | floor(-42.8) //-43 |
log(x) | 以10为为底的对数 | log(100.0) //2.0000000000000000 |
div(y numeric , x numeric) | y除以x的商的整数部分 | div(9,4) //2 |
trunc(x) | 截断(去整数部分) | trunc(42.8) //42 |
cbort(dp) | 立方根 | cbrt(27.0) //3 |
mod(x,y) | x/y的余数(模) 如果x是0,则返回0 | mod(9,4) //1 |
power(a double precision, b double precision) | a的b次幂 | power(9.0,3.0) // 729.0000000000000000 |
关于 ceil 和 floor
时间日期操作函数
时间和日期操作符 +
postgres=# SELECT date '2021-5-28' + integer '7' AS RESULT; result ----- 2021-06-04 00:00:00
时间和日期操作符 -
postgres=# SELECT date '2021-05-01' - date '2021-04-28' AS RESULT; result ----- 3 days
🧲时间和日期处理函数
时间和日期函数 | 功能 | 示例 |
---|---|---|
age(timestamp, timestamp) | 将两个参数相减,并以年、月、日作 为返回值。 若相减值为负,则函数 返回亦为负,入参可以 都带 timezone或都不带timezone。 | age(timestamp '2020-05-04', timestamp //20年5月3日 |
age(timestamp) | 当前时间和参数相减,入参可以带或 者不带 timezone。 | age(timestamp '2000-01-01') 假设现在是2024-5-4日 //24 年 5月 3日 |
current_date | 当前日期 | current_date //2024-05- 04 |
date_part(text, timestamp) | 获取日期/时间值中子域的值,例如年或者小时 的值 | date_part('hour', //20 |
trunc(timestamp) | 默认按天截取 | trunc(timestamp '2024-05-04 20:38:40') //2024-05-04 00:00:00 |
sysdate | 当前日期及时间 | sysdate //2024-05-04-12:34:89 |
justify_days(interval) | 将时间间隔以月(30天为一月)为单 位。 | justify_days(interval //1 mon 5 days |
pg_sleep(seconds) | 服务器线程延迟时间,单位为秒 | pg_sleep(10 |
last_day(d) | 用于计算时间点d当月最后一天时间 | last_day(to_date('2024- //2024-05-04 00:00:00 |
类型转换函数
/** * cast(x as y): 将 x 转换为 y 指定的类型 * hextoraw(string):十六进制转二进制 * rawtohex(string):二进制转十六进制 * convert_to_nocase(text, text):转换编码 * numtoday(numeric): 将数字类型的值转为指定格式的时间戳 */
类型转换函数 | 功能 | 示例 |
---|---|---|
cast(x as y) | 类型转换函数,将x转换成y指定的类型 | cast('22-oct-1997' as timestamp) //1997-10-22 00:00:00 |
hextoraw(String) | 将一个十六进制的字符串转换成二进制 | hextoraw('7D') //7D |
numtoday(numeric) | 将数字类型的值转换为指定 格式的时间戳 | numtoday(2) //2 days |
pg_systimestamp() | 获取系统时间戳 | pg_systimestamp() //2024-05-04 |
rawtohex(string) | 将二进制构成的字符串转换成十六进制的字符串 | rawtohex('1234567') //31323334353637 |
to_bigint(varchar) | 将字符类型转换为bigint类 型。 | to_bigint('123364545554455') //123364545554455 |
to_timestamp(text, text) | 将字符串类型的值转换为指 定格式的时间戳。 | to_timestamp('05 Dec 2000', 'DD //2000-12-05 00:00:00 |
convert_to_nocase(text, text) | 将字符串转换为指定的编码类型。 | convert_to_nocase('12345', 'GBK') // \x3132333435 |
🧲几何函数
/** * area: 面积 * center:中心 * height:高度 * width:宽度 * path:路径 * radius:半径 * circle:圆 * polygon:多边形 * point:顶点 */
几何函数
几何函数 | 功能 | 示例 |
---|---|---|
area(object) | 计算图形面积 | area(box'((0,0),(1,1))') //1 |
cener(object) | 计算图形的中心 | center(box'((0,0),(1,2))') //(0.5,1) |
diameter(circle) | 计算圆的直径 | diameter(circle'((0,0),(2,0))') //4 |
height(box) | 矩形的竖直高度 | height(box'((0,0),(1,1))') //1 |
isclose(path) | 图形是否为闭合路径 | isclose(path'((0,0),(1,1)),(2,0))') //t |
isopen(path) | 图形是否为开放路径 | isopen(path'[(0,0),(1,1)),(2,0)]') //t |
length(object) | 计算图形长度 | length(path'((-1,0)),(2,0))') //3 |
npoints(path) | 计算路径的顶点数 | npoints(path'((0,0)),(1,1),(2,0))') //3 |
npoints(polygon) | 计算多边形的顶点数 | npoints(polygon'((0,0)),(1,1)') //2 |
pclose(parh) | 把路径装转换成闭合路径 | pclose(path'[(0,0),(1,1)),(2,0)]') //((0,0),(1,1),(2,0)) |
popen(path) | 把路径装转换成开放路径 | popen(path'((0,0),(1,1)),(2,0))') //[(0,0),(1,1),(2,0)] |
radius(circle) | 计算圆的半径 | radius(circle'((0,0),(2,0))') //2 |
width(box) | 计算矩形的水平尺寸 | width(box'((0,0),(1,1))') //1 |