SQL(Teradata版).doc
《SQL(Teradata版).doc》由会员分享,可在线阅读,更多相关《SQL(Teradata版).doc(55页珍藏版)》请在咨信网上搜索。
1、Teradata SQL基础教程第一章 数据定义语言DDL(Data Definition Language)Databases数据库CREATE DATABASE创建数据库MODIFY DATABASE修改数据库定义DROP DATABASE删除数据库Users 用户CREATE USER创建用户MODIFY USER修改用户DROP USER删除用户Tables 表CREATE TABLE创建表ALTER TABLE修改表定义DROP TABLE删除表Indexes 索引CREATE INDEX 创建索引DROP INDEX 删除索引1.1 创建表CREATE TABLE语句创建新表,定义
2、新表的列、索引和其他属性。新表创建后,表结构定义存放在Teradata的数据字典中。CREATE TABLE语句的语法如下:CREATE TABLE ;其中:Create Table Options表选项定义表的物理属性FallbackJournalingFreespaceDatablocksizeColumn Definitions字段定义定义表的各个字段Table-level Constraints表级约束定义约束Primary keyUniqueCHECK条件Foreign keyIndex Definitions索引定义定义表索引1.1.1 创建表的可选项(Create Table O
3、ptions)Teradata DDL允许在创建表时指定表的物理属性,包括:是否允许重复记录:SET 不允许记录重复(默认)CREATE SET TABLE table1 MULTISET 允许记录重复(建议:Teradata中都用 MultiSet)CREATE MULTISET TABLE table1 数据保护:数据保护要结合FALLBACK和JOURNAL (流水或日志)。FALLBACK是Teradata的一种数据保护机制,数据表的每一条记录都同时存放两份。FALLBACK 使用FALLBACK保护机制NO FALLBACK 不使用FALLBACK保护机制日志有BEFORE和AFTE
4、R两种,分别保存了一条记录变化前后的状态。当系统出错时,可以利用日志进行恢复。1.1.2 字段定义Teradata的表可定义多达256个字段,每个字段的定义包括如下五项:字段名,在同一数据库中必须唯一。字段数据类型。例: CREATE TABLE emp_data(employee_number INTEGER NOT NULL,last_name CHAR(20) NOT NULL WITH DEFAULT,street_address VARCHAR (30) TITLE Address,city CHAR (15) DEFAULT Boise,state CHAR (2) WITH DE
5、FAULT,birthdate DATE FORMATmm/dd/yyyy,salary_amount DEC(10,2),sex CHAR (1) UPPERCASE);字段数据类型属性。可定义如下属性:DEFAULT 当字段无数据时用默认值来替代NULLWITH DEFAULT 用字段的系统默认值替换NULLFORMAT 缺省的显示格式TITLE 缺省的列标题NOT NULL 不允许空值CASESPECIFIC 字母大小写敏感UPPERCASE 字母大小写不敏感,内部用大写字母存储数据存储属性。包括下面各项:COMPRESS 压缩值为NULL的字段存储空间为0COMPRESS NULL 同
6、上COMPRESS 压缩值为NULL和指定值的字段存储空间为0字段约束定义。Teradata支持字段级约束,即限制字段的值满足某些条件,如某个字段取值是否唯一、是否为主键或外键等。对字段的约束总结如下:CONSTRAINT name 约束名称-可选PRIMARY KEY非空,无重复值UNIQUE无重复值CHECK 指定合法值的范围REFERENCES与其他字段的相关性(外键)例: CREATE TABLE employee_badge(emp_id INTEGER NOT NULLCONSTRAINT primary_1 PRIMARY KEY,id_badge_number INTEGERC
7、ONSTRAINT unique_1 UNIQUE,salary INTEGERCONSTRAINT check_1 CHECK (salary0),job_code INTEGERCONSTRAINT ref_1 REFERENCES job (job_code);最后一项定义了在EMPLOYEE_BADGE表中的JOB_CODE必须和JOB表中的JOB_CODE对应,即前一个表中该字段的值必须在第二个表中有对应的项。这实际上是一种所谓的参照完整性。另外要注意的是,具有主键(Primary Key)约束的字段一定要定义为非空(NOT NULL)。1.1.3 表级约束定义表级约束 意义唯一性定
8、义CONSTRAINT name约束名UNIQUE所指定的多个字段的组合值在表中不能重复PRIMARY KEY这些列将用作主索引或次索引参照定义CONSTRAINT name约束名,配合外键的定义FOREIGN KEY ()所列举的字段为外键,它对应于另一个表(父表)中相同的字段REFERENCES ()定义父表或引用表中的主键所包含的字段Check定义CONSTRAINT name约束名CHECK 对表中指定字段的值进行约束表级约束与字段级约束的主要区别是:在表级约束中可以指定当前表的多个字段或其组合,而字段级约束只能引用当前字段。我们来看一个表级约束的例子。CREATE TABLE emp
9、loyee_badge(emp_id INTEGER NOT NULL,id_badge_num INTEGER NOT NULL,salary INTEGER,job_code INTEGER,CONSTRAINT primary_1 PRIMARY KEY (emp_id),CONSTRAINT unique_1 UNIQUE (id_badge_num),CONSTRAINT check_1 CHECK (salary 0 ANDjob_code BETWEEN 100000 AND 499999),CONSTRAINT ref_1 FOREIGN KEY (job_code)REFER
10、ENCES job (job_code);比较字段级约束和表级约束的例子,可以看到:字段级约束必须写在每个字段定义的后面,而表级约束是在字段定义结束后再进行的。在表级约束中,一个约束可以同时定义多个字段。 1.1.4 索引定义PK Primary Key 主键PI Primary Index 主索引UPI Unique Primary Index唯一性主索引NUPI Non Unique Primary Index非唯一性主索引USI Unique Secondary Index 唯一性次索引索引可以在CREATE TABLE时就加以定义,同时还可以定义主键。如果创建表时不定义主索引,Tera
11、data就按照下面的规则缺省来建立主索引,因为没有主索引的话,Teradata就无法进行数据的分配。没有在CREATE TABLE时指定PI:IF 定义了PK,THEN PK = UPIELSE IF 存在定义为UNIQUE的字段,THEN 第一个NIQUE的字段为UPIELSE 表中定义的第一个字段作为NUPICREATE TABLE时指定了PI:IF 定义了PK,THEN PK作为USI AND为每一个定义为UNIQUE的字段建立一个USI下面是一个比较复杂的创建表的例子,注意学习。创建该表后用SHOW TABLE观察一下内部的表达方式。CREATE MULTISET TABLE emp_
12、data,FALLBACK,NO BEFORE JOURNAL,NO AFTER JOURNAL,FREESPACE = 30,DATABLOCKSIZE=10000 BYTES (employee_number INTEGER NOT NULL,department_number SMALLINTCONSTRAINT dep_checkCHECK (department_number BETWEEN 100 AND 999)REFERENCES Department (department_number),job_code INTEGER COMPRESS,last_name CHAR(20
13、) NOT NULL,first_name VARCHAR (20),street_address VARCHAR (30) TITLE Address,city CHAR (15) DEFAULT BoiseCOMPRESS Boise,state CHAR (2) WITH DEFAULT,birthdate DATE FORMAT mm/dd/yyyy,salary_amount DECIMAL (10,2),sex CHAR (1) UPPERCASE,CONSTRAINT emp_keyPRIMARY KEY (employee_number) INDEX (department_n
14、umber);1.2 删除表可以使用DROP TABLE语句删除表,该语句将删除表中的所有数据和在数据字典中的表结构定义。例:删除前面例子中创建的雇员数据表。DROP TABLE emp_data; 删除了表emp_data中的所有数据,并删除了emp_data在数据字典中的定义。如果希望再使用这个表,必须重新创建。例:DELETE FROM emp_data;或DELETE emp_data;删除了表emp_data中的所有数据。表定义仍然存在,可以增加数据。1.3 修改表当一个表已经创建后,可以使用ALTER TABLE语句来修改其定义。表定义的一些属性是不可修改的(如PI),如果要改变这
15、些属性,常用方法是建立一个满足新属性的新表,然后使用Insert-Select语句把数据从原来的表转移到新表,然后再修改新表的名称。ALTER TABLE完整的语法可参见Teradata SQL手册,这里通过几个例子来加以说明。例:增加或删除字段 ALTER TABLE emp_dataADD educ_level CHAR(1), ADD insure_type SMALLINT;ALTER TABLE emp_dataDROP educ_level, DROP insure_type;例:修改已有字段的属性 ALTER TABLE emp_dataADD birthdate FORMAT
16、mmmBdd,Byyyy;例:对没有FALLBACK的表建立FALLBACK保护ALTER TABLE emp_data, FALLBACK;例:同时修改表的多个属性 ALTER TABLE emp_data, NO FALLBACKDROP insure_type, ADD educ_level CHAR(1);例:修改约束定义 增加约束 ALTER TABLE emp_dataADD CONSTRAINTCHECK (sex = F OR sex = M);修改约束: ALTER TABLE emp_dataMODIFY CONSTRAINT sal_rangeCHECK ( salary
17、_amount 0 AND s注意:表中已有数据如果不符合新的约束条件,约束的增加或修改不能成功。 删除约束: ALTER TABLE emp_dataDROP CONSTRAINT sal_range; alary_amount 1000000);1.4 次索引前面已经讨论过索引,并且说明,创建表时就应定义主索引,同时也可以定义次索引。事实上,次索引也可以使用单独的CREATE INDEX语句来定义。换言之,主索引只能在CREATE TABLE时定义,而次索引既可以在创建表时定义,也可以使用CREATE INDEX来定义。例:为雇员表创建下面两个次索引。为雇员名字建立命名的唯一次索引USI
18、CREATE UNIQUE INDEX fullname (last_name, first_name) ON emp_data;为工作代码建立非唯一性次索引NUSI,不命名NUSICREATE INDEX (job_code) ON emp_data;从这个例子可以看到,次索引可以命名,如第一个USI的名字为FULLNAME;也可以不命名,如第二个NUSI就没有取名。定义好索引或次索引后,可以利用HELP INDEX 来显示指定表的所有索引定义,如果索引是未命名的,索引名称显示为NULL。当次索引创建后,也可以利用DROP INDEX来删除它们。注意,只有次索引可以被删除,主索引是不能被删除
19、的。当删除命名索引时,可以只指定索引名称,也可以指定索引定义。而删除未命名索引时,必须指定索引定义。例:删除雇员表的所有次索引 删除命名索引 DROP INDEX FullName ON emp_data;删除未命名索引 DROP INDEX (job_code) ON emp_data;第二章 数据操作语言(Data Manipulation Language)2.1 INSERTINSERT语句用于向表中添加一行或多行记录。插入一行记录的命令格式为:INSERT INTO (列名1,列名2,.,列名n)VALUES (列值表达式1,列值表达式2, .,列值表达式n);例:在雇员表中添加一新
20、雇员信息:INSERT INTO employee (last_name, first_name, hire_date, birthdate,salary_amount, employee_number)VALUES( arcia, aria,861027,541110,76500.00,1291);如果添加整条记录,即给每个字段都有相应的值,则表名后的字段名可以省略。如上面的例子可以改写成:INSERT INTO employeeVALUES (1210,NULL,401,41201, mith, ames,890303,460421,41000);Teradata对INSERT作了扩充,增
21、加了一个称为INSERT-SELECT的功能。它以子查询的方式将一个表的数据抽取并插入到另一个表中。举例来说,假设表emp_copy与表emp的结构相同,下面的语句可以把表emp的所有行添加到表emp_copy中,即复制表emp。INSERT INTO emp_copySELECT * FROM emp;INSERT-SELECT也可以将不同结构表的记录添加到目标表中。例我们创建一张雇员生日表:CREATE TABLE birthdays(empno INTEGER NOT NULL, lname CHAR(20) NOT NULL, fname VARCHAR(30), birth DATE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Teradata
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。