TeraData常用语法

2023-12-15 15:08
文章标签 语法 常用 teradata

本文主要是介绍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标准中关于字符型数据定义了两类:CHAE和VARCHAR,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还扩展了BYTEINT和DATE

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 特殊整数,格式为YYMMDD或yyymmdd表示日期

6. 图形数据

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

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

long vargraphic 可变长的图形字符串

 

7. 算术运算符

**(求幂)

mod(取模)

 

8. 系统变量

date当前系统日期

time系统时间

user当前登陆的用户

database当前缺省的数据库

 

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

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

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

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

select 2*2593;

 

10. 日期计算

例:1997年3月31日的表达方式

year=(1997-1900)*10000=970000

month=(3*100)=300

day=31

date=970331

 

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

1.EXTRACT

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

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));

Teradata对CAST函数本身也作了扩展,比如为了将显示结果以大写表示,可以使用下面的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);

 

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

子查询必须用括号括起来

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

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

支持限定词all.any.some

支持like或not 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 ABORTwithin 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.

这篇关于TeraData常用语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496871

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板