TERADATA数据库操作
1、创建一个数据库的命令举例:
Create database testbase as perm=200000000,spool=100000000;
注释:该命令创建了一个测试数据库testbase,其永久表空间为200mb,spool空间不能超过100mb。在teradata数据库系统的缺省方式下,是不区分大小写字母的。
2、修改数据库的命令举例:
Modify database testbase as perm=300000000;
注释:该命令将testbase的永久表空间修改为300mb,spool空间定义不变。
3、创建用户的命令实例:
Create user testuser as perm=200000000,spool=100000000,password=testpassword;
4、修改一个用户的命令实例:
Modify user testuser as password=newpassword;
5、转让拥有权的命令实例:
Give appl1 to admin2;
注释:通过DBC或ADMIN登录系统,可以将appl1的拥有权从admin1转让给admin2。
拥有权可以转让,创建者是不可以改变的,一旦一个用户A创建了一个用户B或者数据库B,那么A就永远是B的创建者。
6、检查一个用户或数据库具有哪些父辈或后代的命令实例:
Select parent from dbc.children where child=’APPL1’;
注释:检查用户APPL1的所有父辈。
Select child from dbc.children where parent=’USERADMIN’;
注释:检查用户USERADMIN的所有后代。
7、
Grant select on usera to userb with grant option;
注释:表示将usera中对象的select权限授予给userb,这样userb就可以读usera中的表、视图等对象了。由于带有with grant option,因此userb还可以把它接收的权限再转授给其他用户或数据库。
8、
revoke select on usera from userb;
注释:表示把对usera的select权限从userb收回,这样userb就不能读取usera中的各种对象了。
9、拥有权
用户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命令。
10、自动权限:
自动权限是指创建一个用户或其他对象时,由系统自动授予的权限。
自动权限并不包括:1、GRANT权限(通过WITH GRANT OPTION来完成),2、对被创建者而言,它在它自己空间CREATE/DROP用户或数据库的权限。
11、检查用户有具有的任何权限:
1 Select databasename (format ‘x(10)’),
2 Tablename (format’x(10)’),
3 Accessright,
4 Allnessflag from dbc.allrights
5 Where username=’USERA’;
注释:检查用户USERA所具有的任何权限。
12、大小写规范:
1)所有的SQL语句中的保留字均采用全部大写,表别名也要大写。例如:
ALL AS CASE CREATE OUT DATABASE DELETE FROM IN INSERT JOIN LEFT NO NOT NULL SELECT TABLE TITLE UPDATE VIEW WHERE等。
2)表名、视图名、宏和存储过程名:全部小写。
3)字段名:每个单词的首字母大写,其余部分小写,如:Acct_Id,Type_Id等。
13、获取表的字段列表:
Select columnname,trim(columntitle) from dbc.columns
Where databasename=’数据库名’ and tablename=’表名’
Order by columnid;
14、常用的历史表取数方法:
1)提取某日数据
Select * from tablea
Where start_dt<=’某日日期’
And end_dt>’某日日期’
2)提取某日之前的所有数据
Select * from tablea
Where start_dt<=’某日日期’
3)提取某日之后的所有数据
Select * from tablea
Where end_dt>’某日日期’
4)提取甲日和乙日之间的所有数据
Select * from tablea
Where start_dt<’乙日日期’
And end_dt>’甲日日期’
5)提取当前有效数据
Select * from tablea
Where end_dt=’20111013’
15:Help
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命令的使用方法
16: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;
17:EXLPLAIN
EXPLAIN SELECT * FROM department;
注释:利用EXPLAIN命令,可以了解Teradata执行一个SQL交易请求的详细过程和计划,这对于更进一步地理解Teradata的查询处理机制有很大的帮助。另一方面,对于复杂SQL交易的调试来说,这也是不可或缺的一个工具。
利用EXPLAIN解释一个SQL交易的方法很简单,就是在原来SQL语句的前面加上EXPLAIN即可,其他完全不变。
18:日期函数
SELECT DATE;
SELECT EXTRACT(YEAR FROM DATE);
SELECT EXTRACT(MONTH FROM DATE+30);
SELECT EXTRACT(DAY FROM DATE+2);
SELECT TIME;
SELECT EXTRACT(HOUR FROM TIME);
SELECT EXTRACT(MINUTE FROM TIME);
SELECT EXTRACT(SECOND FROM TIME);
SELECT ADD_MONTHS(DATE,2);
SELECT ADD_MONTHS(DATE,12*8);
SELECT ADD_MONTHS('2002-03-19',12);
19、