欢迎投稿

今日深度:

TeradataSQL基础,SQL的语法非常容易

TeradataSQL基础,SQL的语法非常容易


TeradataSQL基础
结构化查询语言SQL是一种接近英文自然表达的查询语言,和其它程序设计语
言不一样的是,它是非过程的。SQL的语法非常容易掌握,功能却很强大,目前已
成为所有关系数据库的标准查询语言。Teradata支持标准的ANSI SQL,并在此基础
上作了部分扩展,这和大部分商用数据库是一样的。
2.1 2.1 2.1 2.1 Teradata中支持的数据类型
在Teradata环境中,数据是以8比特ASCII码形式存放的。当客户端采用
EBCDIC码时,Teradata能自动作数据的转换,因此对客户端没有任何影响。它所
支持的数据类型如表

类型 名字 字节长度 说明
数值型 DATE 4 YYMMDD,特殊的INTEGER类型
 DECIMAL(n,m) 1,2,4,8 n: 1~18, m: 0~n,可缩写成DEC。 如256.78可表示为DEC(5,2) 
 NUMERIC(n,m) 1,2,4,8 同上
 BYTEINT 1 128~+127 
 SMALLINT 2 32768~+32767 
 INTEGER 4 可缩写成INT 
 REAL 8 2 * 10307 ~ 2 * 10 +308
 FLOAT 8 同上
 DOUBLE PRECISION 8 同上
. 15 . 
字符型 CHAR(n) n n: 1~64000,也可写成CHARACTER 
 VARCHAR(n) n+2 n: 1~64000,变长,最前面两字节表示字符串
长度。也可写成CHAR VARYING(n) 
 LONG VARCHAR 32002 相当于VARCHAR(64000) 
二进制 BYTE(n) n n: 1~64000,无符号二进制整数
 VARBYTE(n) n+2 n: 1~64000,变长,最前面两字节表示长度
其它 GRAPHIC(n) n n: 1~32000,这三种数据类型可支持双字节日
本字符和汉字
 VARGRAPHIC n+2 n: 1~32000,变长,最前面两字节表示长度
 LONG VARGRAPHIC 相当于VARGRAPHIC(32000)
 

这里需要说明的是,对于GRAPHIC型数据,主要是用来支持双字节日本字符
和汉字的。利用这种特性,可以使数据库中各对象的名字都采用双字节字符,如将
某个表的各列取名为汉字。如果只是单纯为了存储和处理汉字信息、二进制数据文 件等,采用BYTE或CHAR类型都可以。因此,一般来说在安装Teradata数据库时都
使用所谓的国际通用(International)型选项。在这种情况下,Teradata可以存储各种
汉字或图形信息,但数据库各对象的名字不能使用汉字,而应采用标准的英文字 母。


Teradata中SQL命令分类
和标准ANSI-SQL一样,Teradata的SQL命令也分成以下几类:

数据定义语言Data Definition Language (DDL)
SQL语句 功能
CREATE 定义新的表、视图、宏、索引、触发器和存储过程
DROP 删除表、视图、宏、索引、触发器和存储过程
ALTER 表结构与保护机制的调整

数据操作语言Data Manipulation Language (DML)
SQL语句 功能
SELECT 执行关系查询操作(选择、投影、连接、合并、交
集等) 
INSERT 向表中插入一条新记录
UPDATE 修改表中记录的值
DELETE 删除表中指定的记录

SQL语句 功能
GRANT 给用户授予某种权限
REVOKE 删除用户某种权限
GIVE 转移用户所有权关系

基本上说来,SQL是一种基于集合进行操作的语言,它是非过程化的。举例来
说,要从雇员表中选取所有在401号部门工作的员工,列出他们的姓名、加入公司
日期及薪资情况,可以使用下面的SQL语句:
SELECT employee_number 
. 17 . 
 ,hire_date 
 ,last_name 
 ,first_name 
FROM employee 
WHERE department_number = 401 
; 
注意最后以分号结束,这表示一个SQL交易的结束。


Teradata中会话层的建立
当用户从前端访问Teradata时,首先要建立连接,即所谓的会话层(Session), 这可以通过两种方式来建立。一种是标准的ODBC连接,另一种是调用层接口CLI 
(Call Level Interface)。对于ODBC,这是目前数据库行业所遵循的一个事实上的标 准,绝大多数关系数据库系统和前端工具都支持它。而CLI是NCR公司自行开发的
一个数据库接口,和其它数据库的专用接口(如Oracle的SQL*Net)一样,CLI是
Teradata专用的一个编程接口,不能用于其它数据库。
 CLI的速度比ODBC快许多,Teradata中很多工具都是基于CLI开发的,如最常
用的查询工具BTEQ(详细说明参见附录一)、数据加载工具FastLoad和MultiLoad、
数据备份与恢复工具ASF2、数据输出工具FastExport等。
Teradata支持标准的ANSI SQL语法,同时也在此基础上作了适当的扩充和加 强。当通过CLI与系统建立对话时,有一些参数会影响Teradata处理交易的特征和 行为。下面简单地作一个描述。
利用BTEQ (假设是UNIX系统)登录到Teradata后,系统将提示下面的信息:
Teradata BTEQ 04.01.00.00 for UNIX5. Enter your logon or BTEQ command: 

此时可以通过下面的命令来观察有哪些会话层参数:

.show control; 

系统将返回类似下面的信息:
Default Maximum Byte Count = 4096 
Default Multiple Maximum Byte Count = 2048 
Current Response Byte Count = 4096 
Maximum number of sessions = 20 
Maximum number of the request size = 32000 
. 
. 
. 
[SET] ECHOREQ = ON 
[SET] ERRORLEVEL = ON 
[SET] FOLDLINE = OFF ALL 
[SET] FOOTING = NULL 
. 
. 
[SET] RETCANCEL = OFF 
[SET] RETLIMIT = No Limit 
[SET] RETRY = ON 
[SET] RTITLE = NULL 
[SET] SECURITY = NONE 
[SET] SEPARATOR = two blanks 
[SET] SESSION CHARSET = ASCII 
[SET] SESSION SQLFLAG = ENTRY 
. 18 . 
[SET] SESSION TRANSACTION = ANSI 
[SET] SESSIONS = 1 
[SET] SIDETITLES = OFF for the normal report. 
And, it is ON for results of WITH clause number: 1 2 3 4 5 6 7 8 9. 
[SET] SKIPDOUBLE = OFF ALL 
[SET] SKIPLINE = OFF ALL 
[SET] SUPPRESS = OFF ALL 
[SET] TDP = l5442 
[SET] TITLEDASHES = ON for the normal report. 
And, it is ON for results of WITH clause number: 1 2 3 4 5 6 7 8 9. 
[SET] UNDERLINE = OFF ALL 
[SET] WIDTH = 75

其中前面标有SET的都是可以通过SET命令进行设置的参数。与Teradata会话
有关的命令是以SET SESSION开头的几个,即SET SESSION CHARSET、SET 
SESSION TRANSACTION、SET SESSION SQLFLAG和SET SESSIONS。这里主要
讨论中间的两种。

 Teradata处理SQL交易请求时有两种方式,即所谓的BTET和ANSI,前者是
Teradata缺省的处理方式,后者则是针对ANSI的。在这两种模式下,Teradata对个
别交易的处理会表现出不同的结果。对于这种情况,本书后面的各章节中将结合具 体的例子加以说明。


改变交易处理模式的命令如下:
.SET SESSION TRANSACTION [ANSI|BTET] 
前面已经介绍过,Teradata对SQL语法在ANSI的基础上作了一部分的扩展。根 据ANSI组织的规定,在处理SQL交易请求时,如果该交易不符合标准的ANSI SQL


语法规定,数据库系统必须提供一种机制来显示或者加以说明。在Teradata中,这
是通过一个标志参数 SQLFLAG 来实现的。


.SET SESSION SQLFLAG [NONE|ENTRY|INTERMEDIATE] 
系统的缺省设置是NONE,这样,当一个SQL交易请求不符合ANSI SQL时,
系统不作任何提示。如果设置成ENTRY,当一个SQL交易请求不符合ANSI SQL的
ENTRY级时,Teradata将给出警告信息。同理,如果设置成INTERMEDIATE,则 当SQL语法不符合ANSI SQL的INTERMEDIATE级时,系统也将给出警告信息。

举例来说,如果SQLFLAG设置成ENTRY,执行下面的命令后,
select date; 
系统将给出下面的响应:
select date; 
$ 
*** SQL Warning 5836 Token is not an entry level ANSI Identifier or Keyword. 
select date; 
$ 
*** SQL Warning 5821 Built-in values DATE and TIME are not ANSI. 
select date; 
$ 
*** SQL Warning 5804 A FROM clause is required in ANSI Query Specification. 
Date 
-------- 
99/03/26


这是由于DATE不是ENTRY级ANSI SQL标准的函数和关键词才产生的警告信 息,另外,在ENTRY级ANSI SQL中也要求有FROM子句。 在Teradata中,对许多关键词都支持缩写。如SELECT可以缩写为SEL,这也不
符合ENTRY级ANSI SQL的语法规定。如果将上面的命令改成:
sel date; 
则系统返回下面的信息:
sel date; 
$ 
*** SQL Warning 5836 Token is not an entry level ANSI Identifier or Keyword. 
sel date; 
$ 
*** SQL Warning 5818 Synonyms for Operators or Keywords are not ANSI. 
sel date; 
$ 
*** SQL Warning 5821 Built-in values DATE and TIME are not ANSI. 
sel date; 
$ 
*** SQL Warning 5804 A FROM clause is required in ANSI Query Specification. 
Date 
-------- 
99/03/26 
其中第二条警告信息表示SEL不是ENTRY级ANSI SQL所支持的操作符。


需要注意的是,这两个SET命令都必须在用户登录(指建立连接)前执行才有效 果,事实上,所有SET SESSION的命令都是如此,其它SET命令则应在登录系统后
再执行。以BTEQ来说,当系统出现提示符后,即可执行SET命令来设置这两个会
话层参数


www.htsjk.Com true http://www.htsjk.com/teradata/45667.html NewsArticle TeradataSQL基础,SQL的语法非常容易 TeradataSQL基础结构化查询语言SQL是一种接近英文自然表达的查询语言和其它程序设计语言不一样的是它是非过程的。SQL的语法非常容易掌握功能却很强...
评论暂时关闭