0
点赞
收藏
分享

微信扫一扫

【PostgreSQL】几个提高性能的小特性

暮晨夜雪 2023-08-13 阅读 40
sql数据库

函数与关键字

用法说明
round(x, n)四舍五入,x为浮点数,n为保留的位数
ceil(x)向上取整
floor(x)向下取整
truncate(x, n)截断x,n为保留的位,该位之后的数值置零,位数表示示例:321.123,其中小数点前用负值表示,小数点位数为0,即 truncate(x, 0) 等同于舍弃小数部分取整
mod(a, b)返回 a 除以 b 的余数
abs(x)返回 x 的绝对值
rand()返回 0-1 的随机浮点数
sign(x)返回数值的符号,1、-1或者0
avg(column)返回字段或数组切片的均值
var_pop(column)返回字段或数组切片的总体方差
var_samp(column)返回字段或数组切片的样本方差(计算方法不同)
std(column)总体标准差
stddev_samp(column)样本标准差
replace(str, a, b)将字符串中的 a 替换为 b(从头开始检索,替换所有存在的片段)
concat(a, b)合并字符串(不能直接 a + b)(接受多个参数,按顺序合并)
concat_ws(fill, a, b)合并并在两者之间填充 fill 片段
left(str, n) / right(str, n)左起 / 右起取 n 个字符
substring(str, x, n)左起 x 位(含)取 n 个字符
ltrim / rtrim / trim(str)去除 左 / 右 / 两边的空格
repeat(str, n)重复 n 次
char_length(str) / length(str)返回字符数 / 字节数(mysql 中中文字符默认 3 字节)
coalesce(column, value)使用 value 填充字段 column 中的空值
cast(column as dtype)将 column 字段的数据类型转换为 dtype(如 char)
convert(column, dtype)同上
now()返回当前的年月日时分秒,默认格式为"%Y-%m-%d %h:%i:%s"
year/month/day/hour/minute/second(x)依次返回 x 中包含的年/月/日/时/分/秒
date(time)/time(x)返回 x 中的日期/时间
weekofyear(x)/dayofweek(x)顾名思义,注意每周以周日为第 0 天,周一为第 1 天
date_format(x, format)format 可以是 “%Y-%m-%d”,或者"%w"(返回周几)
date_add/date_sub(x, interval n unit)x前移或后移一段时间,n 为数值,unit 为 year、month、day 等关键字
date_diff(a, b)两个时间日期的差值
select * INTO OUTFILE filename from tablename;输出到文件,默认在安装目录的 Data 文件夹
select * from tablename LIMIT n, m从 n 行开始(含)取 m 行
select … where column LIKE “%str%”匹配字符串,用 % 表示任意数量的任意字符,用 - 表示单个任意字符
select … where column REGEXP “regexp”类似 LIKE,使用正则表达式,更精准的匹配
select … IF(condition, true_value, false_value) from table条件赋值
select … CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 … ELSE last_value END from table多个条件匹配赋值

面试问题

1. 规范化与反规范化

2. 规范化的 5 中范式(Normal Form)

  • 1NF:从表中删除所有重复的列。创建相关数据表并识别唯一列。
  • 2NF:满足第一范式的所有要求。将数据子集放置在单独的表中并使用主键在表之间创建关系。
  • 3NF:满足 2NF 的所有要求。删除不依赖于主键约束的列。
  • 4NF:满足第三范式的所有要求,并且不应该具有多值依赖。
  • 5NF:满足第四范式,且表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。

3. 索引的三种类型

  • 唯一索引:如果列是唯一索引的,则此索引不允许字段具有重复值。当定义主键时,可以自动应用唯一索引。
  • 聚集索引:这种类型的索引重新排序表的物理顺序并根据键值进行搜索。每个表只能有一个聚集索引。
  • 非聚集索引:非聚集索引不会改变表的物理顺序并保持数据的逻辑顺序。每个表可以有 999 个非聚集索引。

4. 什么是游标?

5. 什么是触发器?

6. 什么是局部变量和全局变量以及它们的区别?

7. 什么是自增?

8. 什么是数据仓库?

9. 存储过程的优点和缺点?

10. 什么是在线事务处理(OLTP)?

11. SQL支持编程吗?

12. 什么是数据库的 ACID 属性?

  • 原子性:要求每笔交易要么全有,要么全无。这意味着如果事务的一部分失败,则整个事务失败并且数据库状态保持不变。
  • 一致性:一致性属性确保数据必须满足所有验证规则。简而言之,您可以说您的事务在未完成其状态的情况下永远不会离开数据库。
  • 隔离性:该属性确保不满足执行的并发性。提供隔离的主要目标是并发控制。
  • 持久性:持久性仅仅意味着一旦事务被提交,它将保持不变,甚至可能出现断电、崩溃或错误。
举报

相关推荐

0 条评论