TD sql笔记

HELP 帮助用户了解数据库中各种对象的结构

SHOW 帮助用户了解某种对象的定义,即返回其DDL语句

EXPLAIN 返回一个SQL语句经优化处理后的执行步骤

FALLBACK 对数据加以保护的一种方式,是冗余的备份

RENAME 对表重命名

NULLIFZERO 对数据作累计处理时,忽略零值

ZEROIFNULL 对数据作累计处理时,将空值作零处理

WITH...BY 对详细数据记录作分类统计(Sub-Total)时有用

MODIFY USER/DATABASE  对用户/数据库对象作动态修改而无需数据库重组

HELP  命令     参数           说明
HELP DATABASE databasename;  可以显示一个指定数据库所包含的所有对象
HELP USER username;  显示某个用户中所包含对象的信息
HELP TABLE tablename;  显示某张表的信息
HELP VIEW viewname;  显示某个视图的信息
HELP MACRO macroname;  显示某个宏的信息
HELP COLUMN table or viewname.*;  显示表/视图的各列的信息
HELP COLUMN table or viewname.colname . . ., colname;  显示表/视图某几列的信息
HELP INDEX tablename;  显示某个表中的所有索引定义
HELP STATISTICS tablename;  显示表的统计
HELP CONSTRAINT table or viewname.constraintname;  显示定义在某个表/视图上的约束定义
HELP JOIN INDEX join_indexname;  显示连接索引的定义
HELP TRIGGER triggername;  显示触发器的信息
HELP PROCEDURE procedurename;  显示存储过程的信息
HELP PROCEDURE procedurename ATTRIBUTES;
HELP 'SQL';  得到所有SQL命令的列表信息
HELP 'SQL sqlcommand';  得到某个特定SQL命令的使用方法


查看数据库对象创建时的DDL命令,使用SHOW命令:
SHOW命令 参数
SHOW TABLE Tablename ;
SHOW VIEW Viewname;
SHOW MACRO Macroname;
SHOW INDEX Tablename;
SHOW JOIN INDEX join_indexname;
SHOW TRIGGER Triggername;
SHOW PROCEDURE Procedurename;

EXPLAIN命令:利用EXPLAIN命令,可以了解Teradata执行一个SQL交易请求的详细过程和计划,这对于更进一步地理解Teradata的查询处理机制有很大的帮助。另一方面,对于复杂SQL交易的调试来说,这也是不可缺少的一个工具。
利用EXPLAIN解释一个SQL交易的方法很简单,就是在原来SQL语句的前面加上EXPLAIN即可,其它完全不变。

在LIKE结构的字符串中,'%'和'_'可以作为通配符使用,但是如果需要匹配这些字符本身(比如查找95%),即把它们作为一般字符时使用,我们可以通过定义ESCAPE字符来达到这个目的,紧跟在ESCAPE字符后的’%’和‘_’作为一般字符看待。

例:
LIKE ''%A%%AAA__'' ESCAPE ''A''

在这个表达式中,将字母A定义为ESCAPE字符,其中:
! 第一个%为通配符;
! 第一个A和其后的%联合表示字符%;
! 第三个%为通配符;
! 第二个A和其后的A联合表示字符A;
! 第四个A和其后的’_’联合表示字符_;
! 最后一个’_’为通配符。


对于表达式的操作数如果是字符,ANSI标准中是区分大小写的,如果不要区分大小写,可以使用UPPER函数将其转换成大写字母来进行匹配。Teradata缺省不区分大小写,如果要区分,可以使用其扩展参数CASESPECIFIC。


NULL的使用

NULL的说明:
! NULL显示没有数据的字段
! NULL表示不存在或未发现的值
! NULL既不是数字类型也不是字符类型
! 具有NULL值的字段可以被压缩,不占任何空间

NULL也可以参与运算,其运算规则为:
! NULL在算术运算中产生的结果为NULL(空)
! NULL在比较运算中产生的结果为False
! UNKNOWN DATA, MISSING DATA和NULL是同样的含义
! 当进行升序排列时,NULL在数字列排列在负数前,在字符列排列在空格
前。


EXISTS在子查询中的使用

EXISTS可以使用在子查询中,用来表示查询至少返回一行。如果前面加上否定词NOT,则表示查询时无记录存在。EXISTS可以代替IN,而NOT EXISTS可以代替NOT IN。

对日期的格式化处理

在Teradata中,日期数据的缺省输出格式是:YY/MM/DD,这和ANSI标准是一样的。而ANSI标准建议的日期显示格式是:YYYY-MM-DD。

其它一些常用的日期显示格式列举如下,其中的B表示空格。
   YYYY/MM/DD'
   YYYY-MM-DD'
   YYYY.DDD'
   DBMMMBYYYY'
   MMBDD,BYYYY'
   YYYYBMMMBDD'
   YY/MM/DD'
   D-MM-YY'
   YBDDD'
   MM'

下面是一些对日期进行格式化的例子。
   句法                        结果
   FORMAT 'YYYY/MM/DD'         1996/03/27
   FORMAT 'DDbMMMbYYYY'        27 Mar 1996
   FORMAT 'mmmBdd,Byyyy'       Mar 27, 1996
   FORMAT 'DD.MM.YYYY'         27.03.1996
   FORMAT 'MM/DD/YY'           03/27/96
   FORMAT 'MMM.DD.YY'          Mar.27.96
   FORMAT 'yy -- mm -- dd'     96 -- 03 -- 27
   FORMAT 'DDDYY'              08696

SELECT last_name,first_name,hire_date (FORMAT 'mmmBdd,Byyyy')
FROM employee
ORDER BY last_name;

CHARACTERS函数     用于计算VARCHAR型数据字段的实际字符串长度

例:查询所有名字中包含5个以上字符的员工。
SELECT first_name
FROM employee
WHERE CHARACTERS (first_name) > 5;

TRIM函数        去除前/后端的空格或二进制零

例:查询姓是由四个字符组成的员工有哪些?
SELECT first_name
,last_name (TITLE 'last')
FROM employee
WHERE CHAR (TRIM (TRAILING FROM last_name)) = 4 ;

FORMAT短语可使用的格式化字符

$ 美元标识符

9 数字位

Z 将数字中的前缀零去除

,在指定位置插入逗号

. 指定小数点位置

- 在指定位置插入连字号

/ 在指定位置插入斜线

% 在指定位置插入百分号

X 字符数据,每个X代表一个字符

G 图形数据.一个G代表一个逻辑字符(双字节)

B 在指定位置插入空格

利用FORMAT短语,可以将字符字段或表达式进行截取处理

例:查询所有姓Brown的员工并显示其姓的第一个大写字母。

1.利用FORMAT

SELECT last_name
,first_name
,first_name (FORMAT 'X')
FROM employee
WHERE last_name = 'Brown'

2.使用数据类型的转换

SELECT last_name
,first_name
,CAST (first_name AS CHAR(1))
FROM employee
WHERE last_name = 'Brown'

Teradata的属性函数

属性函数     返回信息说明
TYPE         数据类型
TITLE        标题短语
FORMAT       格式短语
NAMED        NAMED子句
CHARACTERS   字符个数

内连接

语法格式 例:

SELECT employee . employee_number

,employee . last_name

,department . department_name

FROM employee

INNER JOIN department

ON employee . department_number = department . department_number;
 
由此可见,连接条件应该定义在ON子句中。

别名的定义

语法格式 例:

SELECT e.employee_number
,e.last_name
,d.department_name
FROM employee e
,department d
WHERE e.department_number = d.department_number;

这里EMPLOYEE的别名是E,而DEPARTMENT的别名是D。由此可见,所谓别名,是表或者视图的一个临时名字,它必须在FROM子句中加以定义。

当一个表与它自己进行连接,即所谓的自连接(Self Join)时,一定要使用别名。一旦定义好别名,在此SQL语句中就必须使用它。
————————————————
版权声明:本文为CSDN博主「grettahou」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/grettahou/article/details/78802050

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值