资料来源:http://blog.csdn.net/thy822/article/details/49423765
数据库客户端:DbVisualizer
数据库用户:dbc
三 数据库操作
3.1 创建 database
/**
* 该命令创建了一个测试数据库testbase
* 其永久表空间为200mb,spool空间不超过100mb,语句中单位为bit
* 在 Teradata 数据库系统的缺省方式下,是不区分大小写字母的。
*/
create database testbase as perm=200000000,spool=1000000000;
/**
* 改数据库的命令举例
* 该命令将 testbase 的永久表空间修改为300mb,spool空间不变
*/
modify database testbase as perm=300000000;
3.2 创建 user
/**
* 创建数据库用户,创建一个user即会创建一个同名的database
*/
create user testuser as perm=200000000,spool=100000000,password=testpassword;
/**
* 修改用户密码
*/
Modify user testuser as password=newpassword;
3.3 权限操作
3.3.1 权限说明
(1) 拥有权
用户DBC拥有用户ADMIN,ADMIN中有一个表TABLEC,那么,ADMIN是TABLEC的直接拥有者,而DBC则是TABLEC的间接拥有者,ADMIN和DBC均具有对TABLEC的拥有权。
当以DBC登陆系统时,它可以授予它自己对TABLEC的任何权限。在未显示地授予之前,DBC不能对TABLEC执行类似SELECT、INSERT之类的操作。
DBC对TABLEC隐含地具有CHECKPOINT、DUMP和RESTORE的权限,但是,隐含权不包括执行任何形式的CREATE命令,例如:DBC不能在ADMIN中创建用户、数据库或其他对象。 事实上,如果DBC不将CREATE USER的权限授予ADMIN,则ADMIN登陆后也不能在它自己的空间上创建用户。
一个用户并不拥有它自己,ADMIN创建用户USERA,USERA不能对它自己执行GRANT/REVOKE命令,以及执行CHECKPOINT、DUMP和RESTORE命令。
/**
* 转让拥有权示例:将 testbase 的拥有权从dbc转让给testuser
*/
give testbase to testuser;
(2) 自动权限
自动权限是指创建一个用户或其他对象时,由系统自动授予的权限。
自动权限并不包括:1、GRANT权限(通过WITH GRANT OPTION来完成),2、对被创建者而言,它在它自己空间CREATE/DROP用户或数据库的权限。
(3) 查询用户或数据库的关系树
/**
* 检查一个用户或数据库具有哪些父辈或后代
*/
select parent from dbc.children where child='testbase';
select child from dbc.children where parent='dbc';
3.3.2 权限操作
/**
* 将 usera(testbase) 中对象的select权限授予给userb(testuser),这样userb(testuser)就可以读usera(testbase)中的表、视图等对象了。
* 由于带有with grant option,因此userb还可以把它接收的权限再转授给其他用户或数据库。
*/
grant select on usera to userb with grant option;
grant select on testbase to testuser with grant option;
/**
* 移除权限
*/
revoke select on usera from userb;
revoke select on testbase from testuser;
/**
* 查询用户具有的所有权限
*/
select * from dbc.allrights where username='testuser';
3.4 日期函数
语句 | 输出结果 | 说明 |
---|---|---|
SELECT DATE;(select current_date;) | 2017-07-25 | 当前日期 |
SELECT CURRENT_TIMESTAMP; | 2017-07-25 21:10:18 | 当前日期及时间 |
SELECT EXTRACT(YEAR FROM DATE); | 2017 | 当前年份 |
SELECT EXTRACT(MONTH FROM DATE+30); | 8 | 日期加30天后的月份 |
SELECT EXTRACT(DAY FROM DATE+2); | 27 | 日期加上2天后的日期 |
SELECT TIME; | 210403.25 | 当前时间为21:04:03.25 |
SELECT CURRENT_TIME; | 21:05:46 | 当前时间为21:05:46 |
SELECT EXTRACT(HOUR FROM TIME); | 21 | 当前为21点 |
SELECT EXTRACT(MINUTE FROM TIME); | 5 | 当前为05分 |
SELECT EXTRACT(SECOND FROM TIME); | 59.71 | 当前为59.71秒 |
SELECT ADD_MONTHS(DATE,2); | 2017-09-25 | 当前日期加两个月后的日期 |
SELECT ADD_MONTHS(DATE,12*8); | 2025-07-25 | 当前日期加12*8个月后的日期 |
SELECT ADD_MONTHS(‘2002-03-19’,12); | 2003-03-19 |
四 Teradata 的帮助系统
4.1 HELP 命令
显示数据库中各个目标的相关信息,当前对话连接的特性,并能提供SQL语法的联机帮助。
命令 | 说明 |
---|---|
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命令的使用方法 |
4.2 SHOW 命令
如果知道一些数据库对象是用什么样的DDL命令创建的,则要使用SHOW命令。
SHOW TABLE tablename;
SHOW VIEW viewname;
SHOW MACRO macroname;
SHOW INDEX Tablename;
SHOW JOIN INDEX join_indexname;
SHOW TRIGGER Triggername;
SHOW PROCEDURE Procedurename;
4.3 EXLPLAIN 命令
利用EXPLAIN命令,可以了解Teradata执行一个SQL交易请求的详细过程和计划,这对于更进一步地理解Teradata的查询处理机制有很大的帮助。另一方面,对于复杂SQL交易的调试来说,这也是不可或缺的一个工具。
利用EXPLAIN解释一个SQL交易的方法很简单,就是在原来SQL语句的前面加上EXPLAIN即可,其他完全不变。
//示例
EXPLAIN SELECT * FROM department;