五、数据类型与操作符和常用DMSQL语句
1、数据类型与操作符介绍
达梦数据库支持的数据类型有很多,具体如下:
其中:
- 常规数据类型
- 数值数据类型
- 字符数据类型
- 多媒体数据类型
- 日期时间数据类型
- 一般日期时间类型
- 时区数据类型
- 时间间隔数据类型
- BOOL / BOOLEAN数据类型
- %TYPE和%RPWTYPE:用来返回行和表的类型
- 记录类型
- 数组类型
- 静态数组类型
- 动态数组类型
- 复杂数组类型
- 集合类型
- VARRY
- 索引表
- 嵌套表
- 类类型
- 子类型
- 操作符
具体可以查看达梦数据库手册-DM8SQL程序设计:
DM8_SQL语言使用手册.pdf
https://www.aliyundrive.com/s/Re17f4JJ4PN
提取码: 9jy7
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
2、常用DMSQL语句介绍
2.1、创建示例用户
如果在安装的时候,安装了默认的两个数据库实例可以忽略(如BOOKSHOP),如果没有安装,则使用xftp打开/dm/dmdbms/samples/instance_script/bookshop/内的sql文件脚本一个一个复制粘贴到DM Manager执行,如果执行1-CREATESCHEMA出错,则把 SCHEMA 改为 USER,即可
2.2、简单查询
语法:select () from ()
-- 简单查询
-- 1.查询用户person所属的address表的所有数据(*表示所有列)
SELECT * FROM PERSON.ADDRESS;
-- 2.查询用户person所属的address表的具体列(加上列名),如查询id和名字
SELECT addressid,address1 FROM PERSON.ADDRESS;
-- 3.起别名,可以使用as也可以不用
SELECT addressid id,address1 AS 城市 FROM PERSON.ADDRESS;
-- 4.limit的使用,如只查询出一条
SELECT addressid id,address1 AS 城市 FROM PERSON.ADDRESS LIMIT 1;
-- 5.管道命令的使用,比如我们为了使得查出的结果不单调,可以使用管道命令拼接
SELECT 'id是: ' || addressid || ' 地址名为:' || address1 AS 地址 FROM PERSON.ADDRESS LIMIT 1;
-- 6.查询结果去重(去除重复数据)
SELECT DISTINCT city 城市名 from PERSON.ADDRESS;
2.3、whrer 过滤查询
WHERE子句常用的查询条件由谓词和逻辑运算符组成。
谓词指明了一个条件,该条件求解后,结果为一个布尔值:真、假或未知。
逻辑算符有:AND,OR,NOT。
谓词包括比较谓词(=、>、<、>=、<=、<>),BETWEEN谓词、IN谓词、LIKE谓词、NULL谓词、EXISTS谓词。
-- where过滤
-- 1.使用and和>= <=查询现在售价在[10,20]间的书籍信息
select * from PRODUCTION.PRODUCT where nowprice >= 10 and nowprice <= 20;
-- 2.使用between and查询现在售价在[10,20]间的书籍信息
select * from PRODUCTION.PRODUCT where nowprice between 10 and 20;
-- 3.使用in查询出版社在括号内的书籍信息(中华书局,人民文学出版社)
select * from PRODUCTION.PRODUCT where publisher in ('中华书局','人民文学出版社');
-- 4.查询email为空的人的信息
select * from PERSON.PERSON where email is null;
-- 5.or和and连用
select * from PRODUCTION.PRODUCT WHERE nowprice >= 10 and nowprice <= 20 OR publisher in ('中华书局','人民文学出版社');
2.4、集函数
集函数可分:
- COUNT(*);
- 相异集函数AVG()、MAX()、MIN()、SUM()、COUNT(DISTINCT<列名>);
- 完全集函数AVG()、MAX()、MIN()、 COUNT()、SUM([ALL]<值表达式>);
- 方差集函数VAR_POP()、VAR_SAMP()、VARIANCE()、STDDEV_POP()、STDDEV_SAMP()、STDDEV();
- 协方差函数COVAR_POP、COVAR_SAMP()、CORR;
- 首行函数FIRST_VALUE()
- 求区间范围内最大值集函数AREA_MAX();
- FIRST()/LAST()集函数AVG()、MAX()、MIN()、COUNT()、SUM([ALL]<值表达式>)、KEEP(DENSE_RANK FIRST() |LAST() ORDER BY子句);
- 字符串集函数LISTAGG() / LISTAGG2()。
-- 集函数
-- 1.统计表内共有多少条数据,无论查哪张表count的时间都是一样的,因为达梦数据库查的是数据库自带的计数器(里面存了每张表对应数据的条数)
select count(*) FROM PERSON.PERSON;
-- 2.查询售价最高的书籍信息
select '最高售价的书籍是: ' || PRODUCT.NAME || ' 它的售价是: ' from PRODUCTION.PRODUCT;
2.5、分析函数
DM分析函数为用户分析数据提供了一种更加简单高效的处理方式。如果不使用分析函数,则必须使用连接查询、子查询或者视图,甚至复杂的存储过程实现。引入分析函数后,只需要简单的SQL语句,并且执行效率方面也有大幅提高。
分析函数分为:
- COUNT(*);
- 完全分析函数 AVG、MAX、MINI、COUNT、SUM([ALL]<值表达式>),这5个分析函数的参数和作为集函数时的参数一致;
- 方差函数VAR_POP、VAR_SAMP、VARIANCE、STDDEV_POP、STDDEV_SAMP、STDDEV;
- 协方差函数COVAR_POP、COVAR_SAMP、CORR;
- 首尾函数FIRST_VALUE、LAST_VALUE:
- 相邻函数LAG和LEAD;
- 分组函数NTILE;
- 排序函数RANK、DENSE_RANK、ROW_NUMBER;
- 百分比函数PERCENT_RANK、CUME_DIST、RATIO_TO_REPORT、PERCENTILE_CONT、NTH_VALUE;
- 字符串函数LISTAGG;
- 指定行函数 NTH_VALUE;
具体可以查看达梦数据库手册-DM8_SQL语言使用手册:
DM8SQL程序设计.pdf
https://www.aliyundrive.com/s/8yAhJVLKRNN
提取码: 09rv
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
数据库手册-DM8_SQL语言使用手册:**
DM8SQL程序设计.pdf
https://www.aliyundrive.com/s/8yAhJVLKRNN
提取码: 09rv
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。