Teradata学习笔记

 

1. LIKE用法

select first_name,last_name from employee where last_name like all('%E%','%S%');

select first_name,last_name from employee where last_name like any/some('%E%','%S%');

 

Teradata缺省不区分大小写,如果要区分,可以使用其扩展参数CASESPECIFIC

select first_name,last_name from employee where last_name(CASESPECIFIC) like '%Ra%';

 

通配符作为一般字符使用

:

LIKE "%A%%AAA__" ESCAPE"A"

在这个表达式中,讲字母A定义为ESCAPE字符,其中:

第一个%为通配符:

第一个A和其后的%联合表示字符%

第三个%为通配符

第二个A和其后的A联合表示字符A;

第四个和其后的'_'联合表示字符_

最后一个'_'为通配符

 

2. NULL的使用

当进行升序排列时,NULL在数字列排列在负数前,在字符排列在空格前

 

优先级和括号

逻辑运算符的缺省优先级顺序从高到低为:NOT.AND.OR

 

3. NOT

NOT既可以否定操作符,也可以否定条件表达式

否定操作符:

select first_name,last_name,employee_number from employee where department_number not =301;

否定条件:

SELECT first_name,last_name,employee_number FROM employee WHERE NOT(department_number=301);

 

4. 字符型数据

ANSI标准中关于字符型数据定义了两类:CHAEVARCHAR,Teradata除了上述两类基本字符数据外,还扩展了LONG VARCHAR类型,它等同于VARCHAR(64000),是最长的字符串

char(size)固定长度的字符串最大长度:64000字节

varchar(size)

char varying(size)

character varying(size) 这三个是可变长度字符串,最大长度:64000字节

long varchar 等同于varchar(64000)

5. 二进制数据

二进制数据类型是Teradata的扩展,ANSI标准没有此类型

BYTE(size) 固定长度的二进制串默认值:(1)最大值:64000字节

varbyte(size) 可变长的二进制串默认值:(1)最大值:64000字节

数字型数据

ANSI标准中关于数字型数据定义了四类:SMALLINT.INTEGER.FLOAT.DECIMAL,Teradata还扩展了BYTEINTDATE

smallint 整数 范围:-32768~32767

integer 整数 范围:-2147483648~2147483647

decimal(size,dec) 小数 最大:18

numeric(precision,dec)  decimal的同义词

float  表示浮点数

float[(precision)] float

real  float

double precision 双精度浮点数

byteint 有符号整数 范围-128~127

date 特殊整数,格式为YYMMDDyyymmdd表示日期

6. 图形数据

graphic[(n)] 固定长度的图形字符串默认长度:1

vargraphic(n) 可变长的图形字符串

long vargraphic 可变长的图形字符串

 

7. 算术运算符

**(求幂)

mod(取模)

 

8. 系统变量

date当前系统日期

time系统时间

user当前登陆的用户

database当前缺省的数据库

 

9. 字符常量.数字常量和计算模式

字符文字在ANSI方式下区分大小写,而在Teradata缺省模式下不区分大小写

数字型常量最多可以包含15个数字,数字前面的零是无意义的

计算模式是指在SQLSELECT语句中直接进行数学计算,如下:

select 2*2593;

 

10. 日期计算

:1997331的表达方式

year=(1997-1900)*10000=970000

month=(3*100)=300

day=31

date=970331

 

11. 于日期有关的数据函数

1.EXTRACT

ANSI标准中EXTRACT函数允许选取日期和时间中任意段或任意间隔的值,TeradataEXTRACT函数支持日期数据中选取年...从时间数据中选取小时.分钟和秒

SELECT DATE;  96/11/07

SELECT EXTRACT(YEAR FROM DATE);    1996

SELECT EXTRACT(MONTH FROM DATE+30); 12

SLEECT EXTRACT(DAY FROM DATE+2);  09

SELECT TIME;  14:52:32

SELECT EXTRACT(HOUR FROM TIME); 14

SELECT EXTRACT(SECOND FROM TIME+30);  INVALID TIME

2.ADD_MONTHS

 

12. 利用CAST作数据转换

1. ANSI标准中利用CAST函数将一种数据类型转换成另一种数据类型

select cast(salary_amount as integer) from employee;

select cast(salary_amount as dec(6,0)) from employee;

select cast(last_name as char(5)) from employee where department_number=401;

Teradata也可以利用CAST函数来完成上面的操作,另外,它也作了扩充.为了完成上面相同的操作,也可以使用下面的表达方式

select salary_amount(integer);

select salary_amount(dec(6,0));

select last_name(char(5));

TeradataCAST函数本身也作了扩展,比如为了将显示结果以大写表示,可以使用下面的SQL语句

select cast(last_name as char(5) uppercase) from employee where department_number=401;

 

13. 简单的宏

(Macro)的基本特征是:

可以包含一条或多条SQL语句

可以包含多个BETQ语句

可以包含注解

存储在数据字典中

 

宏的定义

create macro birthday_list as

(select last_name,first_name,birthdate from employee where department_number=201 order by birthdate;

);

 

宏的执行

exec birthday_list;

 

宏的删除

drop macro birthday_list;

 

宏的显示和改变

show macro birthday_list

使用replace macro命令可以改变宏的定义

 

子查询

 

基本子查询

 

复杂子查询

在子查询中可以使用一些限制符,如下所示:

=any  等于 in

not=all 等于 not in

=some 等于 in

 

EXISTS在子查询中的使用

EXISTS可以使用在自查询中,用来表示查询至少返回一行.如果前面加上否定词not,则表示查询时无记录存在.exists可以代替in,not exists可以代替not in

select 'YES' where exists(select department_number from department where department_number not in(select department_number from employee));

select true where exists(select * from employee where department_number=600);

 

关于子查询的一些基本规则

子查询必须用括号括起来

子查询可以是innot in字句的操作目标

也可以是existsnot exists字句的操作目标

支持限定词all.any.some

支持likenot like

子查询中可以指定匹配多个字段

子查询结果均为唯一值,即自动去除重复记录,相当于自动加上distinct关键词

order by不能用于子查询内

子查询最多可以指定64个表或视图

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/challwang/archive/2008/08/31/2856138.aspx

 

 

14.  ANSI模式设置:Teradata SQL Assistant 12.0  ODBC中配置:

在命令行:注意最前点。

.SET SESSION TRANSACTION ANSI  (在登陆之前设置)

可以将下述写入一个文件中:.run file  文件名

.SET SESSION TRANSACTION ANSI

LOGON demo/poc_bdsp,POC_BDSP;

 

 

15. The following SQL statements cannot be specified as dynamic SQL in stored procedures:

? ALTER PROCEDURE

? CALL

? CREATE PROCEDURE

? DATABASE

? EXPLAIN modifier

? HELP

? OPEN

? PREPARE

? REPLACE PROCEDURE

? SELECT

? SET ROLE

? SET SESSION ACCOUNT

? SET SESSION COLLATION

? SET SESSION DATEFORM

? SET TIME ZONE

? SHOW

? Cursor statements, including:

? CLOSE

? FETCH

? OPEN

16. Td的锁机制:

ORACLE的锁理解的还可以,但是好象TERADATA的锁是反过来的,比如WRITE LOCK是可写的,READ LOCK是可读的.而官方教材上的介绍我越看越糊涂,谁能详细的给解惑一下呢?

Exclusive– prevents any other type of concurrent access
Write– prevents other reads, writes, exclusives
Read– prevents writes and exclusives
Access– prevents exclusive onlyThere

Exclusive排他锁,阻止其他任何并发访问
Write–
写锁,阻止其他任何读,写或者排他锁

--(这里理解为阻止创建排他锁的语句执行,如执行write的时候,在其他用户端是不支持表结构修改的)
Read
-读锁,阻止其他写锁和排他锁,但不阻止其他读锁
Access
-访问锁,只阻止排他锁

 

四种类型的锁:

 

Exclusive–prevents any other type of concurrent access

 

Write–prevents other reads, writes, exclusives

 

Read–prevents writes and exclusives

 

Access–prevents exclusive only

 

锁被应用的级别:

 

Database–applies to all tables/views in the database

 

Table/View–applies to all rows in the table/views

 

Row Hash–applies to all rows with same row hash

 

基于 SQL 命令自动获得的锁类型:

 

SELECT–applies a Read lock

 

 

UPDATE–applies a Write lock

 

 

CREATE TABLE–applies an Exclusive lock

 

程序中经常用的就是三种锁

锁类型

创建该锁操作类型

排他类型

支持并发操作

Exclusive lock

DDL,如drop,create,alter

任何其它操作

Read    lock

Dml , select

Write,创建exclusive lock 的操作

Read

Write   lock

Dml, insert,update,delete

Write,read, 创建exclusive lock 的操作

基本无

具体说明可参考《1093.pdf

Bteq 模式下,基本采用的是隐式事物提交,即一个作为一次事务提交了。所以这些加锁机制就显现不出了,但如果调整为 “use manual commit mode for ansi session”,效果就明显了。

 

 

可以通过下面命令降低或者提高锁等级,可以提高所有等级的锁,降低锁等级只可以把Read 降为Access,其它等级不能降低,例,

LOCKING ROW FOR ACCESS SELECT * FROM Table_A;

LOCKING TABLE Table_B FOR EXCLUSIVE UPDATE Table_B SET A = 2007;

LOCKING TABLE Table_C FOR WRITE NOWAIT UPDATE Table_C SET A = 2008;

 

总之:针对 update ,insert ,deleteSQL语句一定要及进commit

针对表的查询尽量用视图屏蔽其锁机制。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fanxiaoliang83/archive/2009/10/20/4705205.aspx

 

 

 

17. 游标的中不能有事务提交语句

A FOR CURSOR loop does not permit a COMMIT, ROLLBACK, or ABORT within the

FOR loop. If the system detects a COMMIT, ROLLBACK, or ABORT during compile

time, it returns an error and does not create the stored procedure.

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 数据仓库基本概念 1 1.1 背景介绍 1 1.2 OLTP与OLAP 2 1.3 数据仓库系统的查询特点 3 1.4 详细数据与小结数据(DETAIL DATA与SUMMARY DATA) 5 1.5 数据仓库与数据集市(DATA WAREHOUSE与DATA MART) 7 1.6 TERADATA的出现 10 1.7 如何衡量数据仓库引擎 11 1.7.1 TPC-D 12 1.7.2 TPC-H/R 20 1.8 NCR可扩展数据仓库方法论与实施框架 22 1.8.1 NCR可扩展数据仓库方法论 22 1.8.2 NCR可扩展数据仓库框架 26 1.8.3 NCR可扩展数据仓库合作伙伴 28 第二章 TERADATA关系型数据库管理系统概要 30 2.1 TERADATA数据库的设计思想 30 2.2 TERADATA数据库的体系结构 30 2.2.1 Teradata V1/DBC体系结构 31 2.2.2 Teradata V1/NCR 3600体系结构 34 2.2.3 开放的Teradata V2/SMP体系结构 40 2.2.4 Teradata V2/MPP体系结构 45 2.3 TERADATA 的 并 行 处 理 机 制 51 2.4 WINDOWS平台的TERADATA数据库 53 2.5 TERADATA多媒体数据库 54 第三章 TERADATA数据库的数据分配机制 57 3.1 哈希算法、主索引、与数据分配 57 3.2 TERADATA数据分配示例 59 3.3 主索引与表的创建 61 3.4 哈希冲突与不唯一主索引 62 3.5 TERADATA数据库系统的在线升级 64 第四章 TERADATA数据库的数据访问机制 66 4.1 基于主索引的数据访问 66 4.2 基于唯一次索引USI的数据访问 67 4.3 基于非唯一次索引NUSI的数据访问 70 4.4 全表扫描 74 4.5 总结 75 第五章 如何选择主索引 78 5.1 TERADATA数据库中的AMP与PDISK 78 5.2 数据记录的分配 79 5.3 选择主索引的基本原则 83 第六章 数据库的空间管理、用户管理、访问权限 84 6.1 TERADATA中的用户与数据库 84 6.1.1 数据库 84 6.1.2 用户 87 6.2 TERADATA数据库的层次型结构 87 6.3 拥有者(OWNER)与创建者(CREATOR) 91 6.4 TERADATA数据库的访问权限 93 6.4.1 访问权限概述 93 6.4.2 显示权限 101 6.4.3 监控权限 101 6.4.4 如何检查一个用户或数据库的权限 102 6.4.5 GRANT命令的操作 105 6.4.6 REVOKE命令的操作 106 第七章 数据保护与恢复 108 7.1 锁(LOCK) 108 7.2 优先权(PRIORITY) 112 7.3 交易完整性(TRANSACTION INTEGRITY) 113 7.4 临时流水(TRANSIENT JOURNAL) 114 7.5 永久流水(PERMANENT JOURNAL) 114 7.6 FALLBACK保护 115 第八章 客户端访问TERADATA数据库的方法 119 8.1 概述 119 8.2 TERADATA数据库的编程接口 121 8.2.1 调用层接口CLI 121 8.2.2 嵌入式预处理器 122 8.2.3 ODBC 122 8.3 TERADATA应用工具 123 8.3.1 BTEQ 123 8.3.2 FastLoad 124 8.3.3 MultiLoad 125 8.3.4 FastExport 126 8.3.5 TPump 126 第九章 使用TERADATA的主要客户分析 127 9.1 零售业 128 9.2 消费品制造与零售业供货商 129 9.3 货运业 130 9.4 客运业 131 9.5 电信业 132 9.6 健康保险业 133 9.7 金融业 135 9.8 共用事业类 137 9.9 其它行业 138 附录一 CLIENT/SERVER结构下的TERADATA数据库 151 附录二 TERADATA ODBC驱动程序设置 153 附录三 QUERYMAN介绍 156 附录四 WINDDI介绍 162

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值