暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a 学习笔记 019 —— 学习集锦4

心有阳光 2023-03-14
490
  • GBase 8a 的 delete 操作会打删除标记,不实际删除数据;
  • GBase 8a 的 delete 操作不支持级联删除,一次只能删除一个表中的数据;
  • GBase 8a MPP Cluster 执行单个复制表DQl语句,会下发到 随机一个 计算节点上;
  • 表连接类型分为
    • 内连接
    • 外连接
  • 使用union或union all时,需要
    • 必须保证各个select集合的结果有相同个数的列
    • 必须保证各个select集合对应的列类型是一样的
    • 各个select集合相同次序上的列名可以不同
    • 各个select集合投影列相同次序上的列类型一致,个数一致,列名可以不同,以第一个select列名显示
  • 笛卡尔乘积是由于 没有关联条件 的表关联产生的
  • GBase 8a MPP Cluster 执行单个hash分布表select语句,where子句中只有一个hash分布列条件,语句会下发到 和条件比较值的hash运算值相匹配的 计算节点上
  • hash分布表能计算出数据具体在哪个节点上,所以不是所有节点都查询,只下发到有该数值的节点执行即可
  • 聚合语句
    • 有group by 子句时,投影列需包括group by后分组字段和聚合函数
    • select Ssex,count(Sno) from student group by Ssex;
    • select YEAR(Sage),count(Sno) from student group by YEAR(Sage);
    • select Cno,count(Sno) from student group by Cno;
    • select Cno,count(Sno) from student group by Ssex;(错误)
  • where 和 having 的区别
    • having子句中不能有列的别名
    • where子句用来筛选from子句中指定的数据集,having子句用来从分组的结果中筛选行;
    • where中不能聚合函数,having中可以有聚合函数
    • 执行的顺序不一样:where的搜索条件是在进行分组之前执行;having的搜索条件是在分组之后执行的;
  • count(*)和count(colName)结果:
    • colname列存在null值时,不同
    • 有null值时,二者查询的条数不同。count(colname)只记录不含null值的条数;
  • 系统函数在SQL语句中,经常出现的位置在select 投影列中,或者where子句中的查询条件中;
  • nwo和sysdate函数的区别:now和sysdate函数都能得到当前日期和时间,区别now取的是语句开始执行的时间,sysdate取的是该函数执行的实时时间;
  • 查询日期月份最后一天的语句:
    • select last_day(‘2019-2-10 12:10:30’)
    • select last_day(‘19-02-10’)
    • select last_day(‘190210’)
    • select last_day(‘2019年2月10日’)——错误,含中文字符日期不是标准可支持的日期类型格式
  • select ifnuu(count,‘未知’) result from worldcup 语句中控制流函数ifnull可以替换为:
    • case when then else end
    • if
    • nul
  • nullif 函数是判断表达式是真是假
  • select round(123.456,-2)的执行结果:100
    • round函数支持四舍五入,-2参数表示小数点前2位,为百位,看十位数为2,则直接舍去,结果为100
  • 获取当前日期时间,可以使用的函数:
    • sysdate
    • now
    • curdatetime
    • current_timestamp
    • current_datetime
  • select add_months(‘2020-12-30’,1);的执行结果是:2021-01-30 00:00:00,add_months()函数返回值是日期时间类型
  • select truncate(127.456,-1),执行结果为:120
    • truncate函数为截取指定位数,-1参数表示小数点前1位,为十位,则直接舍去十位数后面的数字,结果为120
  • 求距离月底还有多少天的语句
    • select datediff(last_day(now()),now());
    • datediff(last_day(now()),now())得到了天数为正数,datediff(now(),last_day(now()))得到的天数为负数。
  • 显示“2021年03月16日”这样的日期格式的语句:
    • select date_format(sysdate(),’%Y年%m月%d日’)
    • 根据日期格式规则,%Y代表4位的年,%m代表2位的数字月,%d代表2位的天
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论