Teradata使用笔记(2)--数据库操作

资料来源: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; 

相关链接:

Teradata数据库使用笔记(1)–Teradata安装
Teradata使用笔记(2)–数据库操作

  • 4
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值