Teradata SQL基础

Teradata SQL基础HELP 帮助用户了解数据库中各种对象的结构 SHOW 帮助用户了解某种对象的定义 即返回其 DDL 语句 EXPLAIN 返回一个 SQL 语句经优化处理后的执行步骤 FALLBACK 对数据加以保护的一种方式 是冗余的备份 RENAME 对表重命名 NULLIFZERO 对数据作累计处理时 忽略零值 ZEROIFNULL 对数据作累计处理时 将空值作零处理 WITH BY 对详细数据

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语句中就必须使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224036.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:50
下一篇 2026年3月17日 下午12:51


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号