爱问 爱问共享资料 爱问分类
首页 > > > SQL语言基础课件3.ppt

SQL语言基础课件3.ppt

SQL语言基础课件3.ppt

上传者: 千声不语
7次下载 0人收藏 暂无简介 简介 2011-06-21 举报

简介:当前资料暂无简介!

nullSQL语言基础SQL语言基础人民银行郑州培训学院信息部潘汉杰2005.10.23数据存储和检索基础数据存储和检索基础一个快速练习建立一个表CREATETABLEtest_tab1(first_nameCHAR(15),last_nameCHAR(20));数据存储和检索基础数据存储和检索基础插入记录INSERTINTOtest_tab1VALUES(‘Jane’,‘Smith’);INSERT命令一次一个地将记录放入表中。数据存储和检索基础数据存储和检索基础选择记录SELECT*FROMtest_tab1;删除表DROPTABLEtest_tab1;删除表需要一系列的步骤。这个操作是不可逆的!只在绝对肯定不再需要表中所含记录时才能使用这个命令。数据存储和检索基础数据存储和检索基础建立表表和列的命名准则应该尽量记住这些规则,以免以后不小心给出不符合这里的一条或多条规则的名称时而手忙脚乱。表或列名的最大长度为30个字符。表或列名可包含字母、数字以及下划线字符(_)。表或列名必须以字母开头。名称可以包含数字或下划线,但必须以字母开头。表和列名不区分大小写。数据存储和检索基础数据存储和检索基础表和列的命名准则表或列名不能包含空格。Oracle中的表被分配用户。缺省时它们被分配给建立它们的用户。每个用户的表必须具有一个有别于该用户拥有的其他表的名称。也就是,一个用户不能拥有两个具有相同名称的表。(但是不同的用户可以建立具有相同名称的表。)在一个表中,每个列必须具有唯一的名字。有的词代表Oracle的命令和参数,因此不能用作表名和列名,这些词为Oracle保留字。数据存储和检索基础数据存储和检索基础建立更复杂的表Oracle怎样存储文本CHAR和VARCHAR2的区别CHAR定长字符串,VARCHAR2变长字符串。CHAR(n)定长字符串,n字节,n的取值范围:1~2000字节。VARCHAR2(n)可变长的字符串,定义时应指明最大长度,取值范围:1~4000字节。数据存储和检索基础数据存储和检索基础Oracle怎样存储数值数值类型说明:NUMBER(m,n)数字位长度为m,其中n位小数。m中不包括小数点和符号位。CREATETABLEtest_tab1(product_nameVARCHAR2(20),product_pricenumber(4,2));数据存储和检索基础数据存储和检索基础向表中插入数据:INSERTINTOtest_tab1VALUES(‘product_name1’,23.5);INSERTINTOtest_tab1VALUES(‘product_name2’,54.65);INSERTINTOtest_tab1VALUES(‘product_name3’,87.65);INSERTINTOtest_tab1VALUES(‘product_name4’,99.8);select*fromtest_tab1;droptabletest_tab1;数据存储和检索基础数据存储和检索基础Oracle怎样存储日期Oracle支持儒略日,如果一个系统使用儒略日,它指定某个开始日期为第一天;下一个日期为第2天,如此往下。这种日历很适合日期计算。Oracle的开始日期为:公元前4712年的1月1日。Oracle会自动在我们能够理解的日期模式与儒略日期格式间进行转换。我们只要用熟悉的文本表示插入日期,Oracle会将它们在内部转换为等价的儒略日期。数据存储和检索基础数据存储和检索基础试验日期型:CREATETABLEtest_tab1(product_nameVARCHAR2(20),product_priceNUMBER(4,2),purchase_dateDATE);日期型格式:’15-6月-05‘’20-6月-2005‘数据存储和检索基础数据存储和检索基础insertintotest_tab1values(‘name1’,34.56,’23-10月-05‘);insertintotest_tab1values(‘name2’,54,’23-9月-05‘);select*fromtest;droptabletest;数据存储和检索基础数据存储和检索基础查看表结构DESCtable_nameNULL和NOTNULL列在创建表时就应该确定哪些列是必须要求填写的,而哪些列是可填写或可不填写的。在CREATETABLE命令内,可通过在列名和数据类型后放置“NOTNULL”来指定某个列是必须要填写内容的。数据存储和检索基础数据存储和检索基础CREATETABLEtest_tab1(product_nameVARCHAR2(20)NOTNULL,product_priceNUMBER(4,2)NOTNULL,purchase_dateDATE);数据存储和检索基础数据存储和检索基础插入数据怎样插入包含NULL值的记录(1)在INSERT语句中给出值的地方使用NULL。INSERTINTOtest_tab1values(‘name_a’,12,NULL);用SELECT命令查看该表内容,记录的第三列是空的。数据存储和检索基础数据存储和检索基础(2)使用了INSERT命令的一个变种。在这个变种中,明确地给出了要插入数据的每个列。INSERTINTOtest_tab1(product_name,purchase_date)VALUES(‘nameb’,15);INSERTINTOtest_tab1(product_name,purchase_date)VALUES(‘namec’,5);数据存储和检索基础数据存储和检索基础怎样插入包含单引号的数据在想插入单引号的地方放置两个单引号。INSERTINTOtest_tab1values(‘FifthProduct’’sName’,25,NULL);数据存储和检索基础数据存储和检索基础查看数据选定特定的列SELECTproduct_nameFROMtest_tab1;该命令为在关系test_tab1上指定列的投影,相当于:πproduct_name(test_tab1)SELECTproduct_name,product_priceFROMtest_tab1;相当于:πproduct_name,product_price(test_tab1)数据存储和检索基础数据存储和检索基础利用表中的数据进行计算DROPTABLEtest_tab1;CREATETABLEtest_tab1(product_nameVARCHAR2(20),product_priceNUMBER(4,2),product_countNUMBER(4),sales_taxNUMBER(4,2));数据存储和检索基础数据存储和检索基础INSERTINTOtest_tab1VALUES(‘name_a‘,12,7,null);INSERTINTOtest_tab1VALUES(‘name_b‘,43,4,null);INSERTINTOtest_tab1VALUES(‘name_c‘,13,9,null);INSERTINTOtest_tab1VALUES(‘name_d‘,20,5,null);INSERTINTOtest_tab1VALUES(‘name_e‘,10,12,null);SELECTproduct_name产品名称,product_price单价,product_count数量,product_price*product_count小计FROMtest_tab1;数据存储和检索基础数据存储和检索基础上面的SELECT命令,不但使用表中数据进行运算,同时也对列指定了别名。将两个或多个文本连接在一起在Oracle的SELECT语句中,可在列名之间放置两条竖线来指出将两个列并置。SELECTproduct_name||product_price||product_countFROMtest_tab1;SELECTproduct_name||‘---’||product_price||‘---’||product_countFROMtest_tab1;Oracle的数据类型Oracle的数据类型字符类型CHAR(n)定长字符串,n字节,n的取值范围:1~2000字节。VARCHAR2(n)可变长的字符串,定义时应指明最大长度,取值范围:1~4000字节。LONG可变长字符列,最大长度限制2GB,一种较老的数据类型,逐渐被BLOB、CLOB、等大对象数据类型所取代。数字类型NUMBER(m,n)可变长的数值列,m有效数字的位数,n小数点以后的位数。Oracle的数据类型Oracle的数据类型日期类型DATE从公元前4712年1月1日到公元4712年12月31日。定义中还包括时间,时、分、秒。默认格式为:DD-MON-YY,如:07-11月-05表示2005年11月7日。大对象类型大对象类型数据主要有3种,分别是BLOB、CLOB、NCLOB。最大长度4GB,主要用来保存各种较大的文件,如:WORD文件、音频文件、视频文件等。Bfile数据类型在数据库外部保存的大型二进制文件,最大长度是4GB。Oracle9i可以读取、查询Bfile,但是不能写入。Oracle的运算符Oracle的运算符数字运算符和比较运算符数字运算符:+-*/比较运算符:=!=<><><=>=以emp表说明各符号的用法:ANY/SOME比较其中任意值,该符号前必须是比较运算符(=!=<><=>=)。SQL>selectename,salfromempwheresal<=any(860,1100);Oracle的运算符Oracle的运算符ALL比较列出来的每一个值,前面的比较符必须是=!=<><=>=。SQL>selectename,salfromempwheresal<=all(860,1100);[NOT]NETWEENmANDN如果值大于或等于m且小于或等于n,则返回TRUE。SQL>selectename,salfromempwheresalbetween1000and1500;Oracle的运算符Oracle的运算符[NOT]EXISTS如果子查询里至少返回一行则EXISTS为TRUE。SQL>selectename,salfromempwhereexists(select*fromempwheresal>8000);m[NOT]LIKEn用来返回列内容跟传送给函数的常量相似的所有行。SQL>selectename,salfromempwhereenamelike'S%‘;Oracle的运算符Oracle的运算符IS[NOT]NULL用来测试所要操作的值是否为空。SQL>selectename,salfromempwheresalisnull;逻辑运算符NOT用来对结果取反。SQL>selectename,salfromempwherenot(sal=800);Oracle的运算符Oracle的运算符逻辑运算符AND用来限制条件,当两个条件同时成立时返回TRUE,否则返回FALSE。SQL>selectename,salfromempwheresal>1200ANDSAL<2500;OR当两个条件有一个成立时返回TRUE,否则返回FALSE。SQL>selectename,salfromempwheresal>3000ORSAL<900;Oracle的高级数据操纵Oracle的高级数据操纵限定所选择的记录语法:SELECTcolumnFROMtable_nameWHEREcondition(s)基于数值过滤记录基于单个值选择记录SELECTename,salFROMempWHEREsal=800;Oracle的高级数据操纵Oracle的高级数据操纵SELECTename,salFROMempWHEREsal>1000;基于值范围选择记录SELECTename,salFROMempWHEREsal>=1000ANDSAL<=3000;Oracle的高级数据操纵Oracle的高级数据操纵排除记录使用OR连接两个条件使用NOTBETWEEN排除记录使用!=或<>排除记录SELECT*FROMempWHEREsal>2000ORsal<1000SELECT*FROMempWHEREsalNOTBETWEEN1000AND2000Oracle的高级数据操纵Oracle的高级数据操纵基于一组可接受的值选择记录。使用集合操作符INSELECTename,salFROMempWHEREenameIN(‘SMITH’,’JONES’,’BLAKE’);Oracle的高级数据操纵Oracle的高级数据操纵基于文本过滤记录使用LIKE操作符。使用通配符%,%通配符表示文本可以是任何数量的字符。使用通配符_,下划线(_)通配任何一个字符。SELECT*FROMempWHEREenameLIKE‘S%’;SELECT*FROMempWHEREenameLIKE‘%S_I%’;Oracle的高级数据操纵Oracle的高级数据操纵基于日期过滤记录类似于基于数值的选择。由于比较值是日期,因此切记用单引号将所指定的日期括起来。SELECT*FROMempWHEREhiredate=‘17-12月-80’;SELECT*FROMempWHEREhiredate>‘17-12月-80’;Oracle的高级数据操纵Oracle的高级数据操纵基于空值选择记录通过在WHERE子句中放置ISNULL来检查空值。insertintodeptvalues(12,'asdf',null);SELECT*FROMdeptWHERElocisnotnull;Oracle的高级数据操纵Oracle的高级数据操纵改变记录顺序按单列排序使用ORDERBY子句。默认按升序,降序时需加DESC。SELECTename,salFROMempORDERBYename;SELECTename,salFROMempORDERBYsalDESC;按多列排序即第一排序字段、第二排序字段。SELECTename,sal,hiredateFROMempORDERBYsal,hiredate;Oracler的高级数据操纵Oracler的高级数据操纵显示唯一值去掉列中重复的值。使用子句:DISTINCT或UNIQUE。SELECTdistinctsalfromemp;SELECTuniquesalfromemp;Oracle的高级数据操纵Oracle的高级数据操纵从DUAL中选择DESCDUAL;SELECT*FROMDUAL;select45*0.24fromdual;selectsqrt(25)fromdual;DUAL表包含一列和一行。DUAL表的数据从不直接使用,只用于支持类似上面所进行的临时查询。Oracle的高级数据操纵Oracle的高级数据操纵更改表中数据执行UPDATE操作即可很容易地修改表中的数据。语法如下:UPDATE表名SET列名=新值WHERE条件;UPDATEempSETsal=2600WHEREename=‘SMITH’;Oracle的高级数据操纵Oracle的高级数据操纵删除表中的记录处理表时所需要的最后一个基本技术是删除记录的能力。DELETE命令的语法如下:DELETEFROM表名WHERE条件;insertintodeptvalues(89,'dsf','dsfasdf');deletefromdeptwheredeptno=89;使用此命令时一定要考虑指定条件!!不指定条件将删除表中的所有行。Oracle的高级数据操纵Oracle的高级数据操纵截断一个表该命令的优点是速度快。当Oracle执行此命令时,它不读取表中已有的记录,而是直接截掉这些记录,并且还自动释放被截断的记录以前所占用的表空间,该操作是不可逆的。TRUNCATETABLE表名Oracle的高级数据操纵Oracle的高级数据操纵事务处理控制事务的概念完成一项任务可能需要若干步的操作,我们把执行这若干步操作的过程看作一个整体,称为事务。完成并注意观察操作的结果:CREATETABLEtest(namevarchar2(10),agenumber(2));INSERTINTOtestvalues(‘name1’,18);INSERTINTOtestvalues(‘name2’,26);INSERTINTOtestvalues(‘name3’,24);Oracle的高级数据操纵Oracle的高级数据操纵SELECT*FROMtest;ROLLBACK;SELECT*FROMtest;DROPTABLEtest;ROLLBACK所提供的功能是一个很有用的撤消机制,并且不限制为一个级别的撤消。通过将ROLLBACK与另一个命令SAVEPOINT(保存点)配对使用,指定ROLLBACK命令可返回的任何数量的位置点。完成、观察、思考以下操作的结果:Oracle的高级数据操纵Oracle的高级数据操纵CREATETABLEtest(namevarchar2(10),agenumber(2));INSERTINTOtestvalues(‘name_a’,19);SAVEPOINTa;INSERTINTOtestvalues(‘name_b’,26);SAVEPOINTsp_2;INSERTINTOtestvalues(‘name_c’,23);SAVEPOINTthird;INSERTINTOtestvalues(‘name_d’,21);SAVEPOINTfinal_sp;Oracle的高级数据操纵Oracle的高级数据操纵SELECT*FROMtest;ROLLBACKTOfinal_sp;SELECT*FROMtest;ROLLBACKTOthird;SELECT*FROMtest;ROLLBACKTOsp_2;SELECT*FROMtest;ROLLBACKTOa;SELECT*FROMtest;ROLLBACK;SELECT*FROMtest;DROPTABLEtest;Oracle的高级数据操纵Oracle的高级数据操纵提交事务COMMIT使用COMMIT命令将使对表的更改永久保存。由于COMMIT命令使Oracle将你所做的更改写入数据库的表中,使回退不再可能,因此在提交前所出现的任何保存点都被清除。完成、观察、思考以下操作的结果:CREATETABLEtest(namevarchar2(10),agenumber(2));INSERTINTOtestVALUES(‘name1’,23);SAVEPOINTa;INSERTINTOtestVALUES(‘name2’,30);SAVEPOINTb;INSERTINTOtestVALUES(‘name3’,28);COMMIT;ROLLBACKTOb;Oracle的高级数据操纵Oracle的高级数据操纵使用数据为其他人所用由于COMMIT命令引起了数据的更改被写入到与所有其他用户共享的数据库中,因此提交工作将影响到其他用户查看这些数据。当了布COMMIT命令时,它使你的更改为其他用户所见。但是,在你提交所做的那些更改之前,它们是不会为其他用户所见的这些更改可能是插入一千行新记录,又更改一千行记录,然后删除另一千记录,除非你提交了这些工作,否则这些更改不会影响其他用户的SELECT语句。Oracle的高级数据操纵Oracle的高级数据操纵隐式和显式的COMMIT某些Oracle命令自动执行一个COMMIT,而不用等待你去发出该命令,换句话说,COMMIT是隐式执行的。任何DDL命令在执行其功能前(如CREATETABLE或DROPTABLE)都将隐式提交所有未保存的数据。另外,退出Oracle(或关闭SQL*PLUS)前将自动提交更改。完成、观察、思考以下操作的结果:Oracle的高级数据操纵Oracle的高级数据操纵DROPTABLEtest;CREATETABLEtest(nameVARCHAR2(10),ageNUMBER(2));INSERTINTOtestVALUES(‘name_x’,21);INSERTINTOtestVALUES(‘name_y’,22);SELECT*FROMtest;CREATETABLEtest2(nameVARCHAR2(10);ROLLBACK;SELECT*FROMtest;

SQL语言基础课件3.ppt

SQL语言基础课件3.ppt

上传者: 千声不语
7次下载 0人收藏 暂无简介 简介 2011-06-21 举报

简介:当前资料暂无简介!

1 S S Q Q L L 人民银行郑州培训学院 信息部潘汉杰 2005.10.23

第1页

  • 相关资料
  • 该用户的其他资料
  • 名称/格式
  • 下载次数
  • 资料大小

用户评论

0/200
暂无评论
上传我的资料

资料阅读排行

关闭

请选择举报的类型

关闭

提示

提交成功!

感谢您对爱问共享资料的支持,我们将尽快核实并处理您的举报信息。

关闭

提示

提交失败!

您的举报信息提交失败,请重试!

关闭

提示

重复举报!

亲爱的用户!感觉您对爱问共享资料的支持,请勿重复举报噢!

全屏 缩小 放大
收藏
资料评价:

/ 49
所需积分:2 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!