SQL语言基础.ppt
《SQL语言基础.ppt》由会员分享,可在线阅读,更多相关《SQL语言基础.ppt(64页珍藏版)》请在咨信网上搜索。
1、SQL语言基础DDL和DML是什么以及使用它们的实例。怎样注册到SQL*Plus。最常见的参数设置。怎样从数据库中检索数据。怎样使用SQL*Plus格式化数据。怎样更新和删除数据库中的数据。怎样创建表和将数据插入表中。怎样变更表SQL语言oSQL语句有两大类:DDL数据定义语言和DML数据操纵语言。oDDL(DataDefinitionLanguage)数据定义语言是SQL中定义数据库中数据结构的语言。使用DDL定义数据结构时,将在Oracle的数据字典中生成相应的数据项。常见的DDL关键字是create、revoke、grant和alter。oDML(DataManipulationLang
2、uage)是数据操纵语言,在数据库中用来操纵数据(而非定义数据,定义数据由DDL完成)。常见的DML关键字为select、insert、update和delete。DDLo数据定义语言使用户能完成下列任务:n创建数据库对象。n删除数据库对象。n更改数据库对象。n为数据库对象授权。n回收已授给数据库对象的权限。当用户执行DDL语句时,在每一条DDL语句执行前后,Oracle都将提交当前的事务,理解这一点很重要。因此,如果用户使用insert命令插入记录到数据库中后,执行了一条DDL语句,如create table,此时来自insert命令的数据将被提交到数据库。DDL数据定义语言是一组SQL命令
3、,用于创建和定义数据库对象,并且将对这些对象的定义保存在数据字典中。部分DDL语句列表SQL命令功能Alterprocedure重编译存储过程Altertable增加表列、重定义表列、更改存储分配analyze收集数据库对象的性能统计值并送入基于代价的优化器Altertableaddconstraint在已有的表上增加约束Createtable创建表Createindex创建索引Dropindex删除索引Droptable删除表grant将权限或角色授予用户或其他角色truncate删除表中所有行revoke从用户或数据库角色回收权限DMLo数据操纵语言允许用户对数据库中的数据进行insert
4、、update、delete和select等操作。正如名字所示,用户可以通过DML语句来操纵数据库中的数据内容。部分DML语句列表SQL命令功能insert增加数据行到表delete从表中删除数据行update更改表中数据select从表或视图中检索数据行Commitwork把当前事务所做的更改永久化(写入磁盘)rollback作废上次提交以来的所有更改SQL*Plus入门o1)从开始菜单,单击programs|Oracle-Ora81|ApplicationDevelopment|SQLPlus。在connect对话框中按提示输入用户名和口令。o注意因为用Ora81作为ORACLE_HOME
5、,所以开始菜单的选项为Oracle_Ora81;如果用户设置了不同的ORACLE_HOME,开始菜单的选项就有可能不同。o2)从DOS窗进入:o输入命令sqlplus polly/gone,Oracle8i将打开一个单独的DOS窗口。登录o如果在登录到SQL*Plus时只提供用户名,即使用命令sqlplus polly,那么将被提示输入口令。o如果在登录到SQL*Plus时什么也不提供,即使用命令sqlplus,那么将被提示输入用户名和口令。o在进入SQL*Plus后,就会看到SQL*Plus的提示符SQL。创建语句o由于创建数据库对象的工作是由DDL语句来完成的,所以建立数据库应用总是从DD
6、L语句开始的。首先,创建四个表:Customer、state、X和Y。示例o注意在上面的清单中,SQL提示符以下的数字无需用户输入。当用户按回车键进入下一行时,SQL*Plus会自动加入这些数字。需用一对圆括号括起表中各个列的定义。数据类型o上述create table语句中,有几项是必需的。用户不仅要给出表的名称(如customer),还必须列出表中所有的列或域(如last_name、stat_cd以及sales)。此外,还要定义数据库表中各个列或域的数据类型。例如,表列Sales中存放数字型信息。Oracle数据库支持多种不同类型的数据。数据类型说明char(size)存放定长字符数据,最
7、长2000个字符nchar(size)与char型类似,不过其最大长度由数据库所用的字符集(如EasternEuropean、Korean或AmericanEnglish)决定varchar2(size)存放可变长字符数据,最大长度为4000字符nvarchar(size)类似于varchar2Varchar目前等同于charnumber(l,d)存放数值型数据,l代表总位数,d代表小数点后位数Blob二进制大对象,其最大长度为4GBraw(size)纯(Raw)二进制数据,最大长度为2000字节Date存放日期,范围从公元前4712年的1月1日到公元后9999年的12月31日Long存放可变
8、长字符数据,最大为2GB(gigabytes)提示o用长度和小数点后的位数定义数值型表列时,长度定义十进制数字个数,其中包括整数部分和小数部分数字的位数。例如:number(4,2),定义的最大数值为99.99。o切记,Oracle数据库是由表的集合所组成的,而各表中的表列或字段定义了该表。这些表列或字段都有一个属性,属性表明可保存何种数据。数据库系统根据数据类型决定对其内容的操作,这些操作都有相应的函数,如“处理数字型数据的函数”、“处理字符型数据的函数”以及“处理日期型数据的函数”等等。例如:Oracle可对数值型数据进行加、减乘、除操作。后面将顺序介绍。空值与非空值(Null和Not N
9、ull)o进一步考察创建customer表的语句,用户会看到last_name表列后跟一个限定符“not null”,这表示数据库不允许没有此表列数据的数据行被添加到customer表中。换句话说,使用了限定符not null的表列是强制性字段,在表customer和state中,如果想要在该表中插入一行,那么last_name和state_cd表列(字段)必须含有值。o提示:not null(非空值)可用词mandatory(强制性)理解,即非空表列中的数据绝不能为空值。空值(Null Value)o空值(Null value)是指不含数据的表列。可以将null value理解为长度为0的字
10、符串。很多时候若不知道某表列的数据类型或数据值则可以给它赋一空值。但人们最容易犯的一个错误就是将空值加载到一个数值型表列中,由于“1+null=null”!因此,如果用户偶然将空值加载至数值型域中,那么产生的统计报表肯定不正确。o提示:不要用null表示数值型域中的0,如果要对数值表列进行算术运算,那么该空值一定要用0来代替。描述语句oOracle对SQL最重要的改进之一就是增加了描述(describe)命令。使用describe命令,用户可以快速掌握表及其中所有表列的概要。在下一章中,将介绍存储的PL/SQL包和存储过程。odescribe命令可以列出存储的PL/SQL包中所有的过程和这些过
11、程所使用的输入/输出参数。如命令describe customer得出下列有关客户表输出:oNameNull?Typeo-oLast_namenotnullVARCHAR2(50)oState_cdnotnullCHAR(2)oSalesNUMBER插入语句o现在我们已建立了一些表,下面将从customer表开始,介绍DML语句的使用方法。语句Insert into customer values(Teplow,MA,23445.67);以及语句insert into customer values(Abbev,GA,6969.96);在Customer表中建立了两行。每条insert语句执行
12、后,Oracle以下述信息响应insert命令建立的每行信息:o1rowcreated.o每次成功地完成一条insert语句后,均返回行创建信息,该信息通知用户已建立的行数。多条INSERT的执行插入指定列o这些命令中,将指定存放数据的表列。这在处理非常大的表时很有用,因为用户可能没有指定该表中每一表列的数据。查询语句o查询(select)命令用于从Oracle数据库中检索数据。用户利用select命令告诉数据库要检索什么样的信息。select是用户最常用的SQL语句,select命令由四个基本部分构成:o1)select后跟用户需要检索的信息(如下一部分将要提到的表中表列的名字),这是sel
13、ect命令必不可少的部分。o2)from后跟检索对象(如存放数据的一个或多个表的名称),from部分也是必不可少的。o3)where后跟检索条件(如限制检索内容的条件),where部分是可选的。o4)order by后跟分类准则(如控制数据如何给出的第一部分的表列名称表),order by部分是可选的。视图o视图可看作一个或多个表的子集,是特殊的数据库对象,用于限制对表中指定的表列或数据行的访问。处理视图与处理表类似,在大多数情况下,也可以对视图进行update或insert操作。可用视图来限制部门经理,使他只能了解其部门内员工薪水情况。这是为什么要用视图的一个极好的例子。o提示:视图是一个特
14、殊的数据库对象,可用来创建限制访问表中特定的表列或数据行。o选择指定的列与前一节中使用星号不同,可以在select关键字后跟一个或多个表列名。星号表示Oracle显示表中的所有表列where子句o如果用户只想看特定的数据行,怎么办呢?这就需要用where子句来解决了。例如:我们想要查看state_cd值为MA的所有用户,可以用命令oSelect last_name,state_cd,sales from customer where state_cd=MA;Orderby子句o执行命令select*from customer order by last_name;查询结果将按升序排列;若执行命
15、令select*from customer order by state_cd desc,last_name;则进行多级排序。该命令首先按state_cd的降序进行排序,在state_cd相同的情况下,再按照last_name的升序排列客户。o提示:在order by子句中未指定升序或降序时,Oracle按升序排列。数值型数据o用户可以执行所有标准的算术运算:加、减、乘、除。在Oracle中,除了这些标准运算符外,还有许多函数函数o函数在SQL语句中用于处理表列内容。在SQL语句中使用函数时,被函数作用的表列的值将发生改变,并将在结果中返回改变后的值。显示数值表列的绝对值是使用函数的一个很好的
16、例子,值为-321的表列的绝对值为321。在SQL*Plus中,求绝对值的表达式由关键字“abs”后跟一对括号以及括号中的表列名称三部分组成,如abs(ytd_sales)。因此SQL语句oselect abs(ytd_sales)from customer;o将显示值321,而不论ytd_sales表列中的数据为-321或是+321。数值函数函数返回值样例显示ceil(n)大于等于数值n的最小整数selectceil(10.6)fromdual;11floor(n)小于等于数值n的最大整数selectfloor(10.6)fromdual;10mod(m,n)m除以n的余数,若n=0,则返回
17、mselectmod(7,5)fromdual;2power(m,n)m的n次方selectpower(3,2)fromdual;9round(n,m)将n四舍五入,保留小数点后m位selectround(1234.5678,2)fromdual;1234.57sign(n)若n=0,返回0;否则n0,返回1;n0,返回-1selectsign(12)fromdual;1sqrt(n)n的平方根selectsqrt(25)fromdual;5字符型数据o字符型数据是create table语句中定义为char、varchar或varchar2的域中存放的数据。字符型数据可以表示所有的字符、数字
18、或可以从键盘输入的特殊字符。Oracle8i中有一系列的用于处理字符型数据的函数。字符函数函数返回值样例显示initcap(char)把每个字符串的第一个字符换成大写Selectinitcap(mr.teplow)fromdual;Mr.Teplowlower(char)整个字符串换成小写Selectlower(Mr.TterryBeaker)fromdual;mr.terrybeakerreplace(char,str1,str2)字符串中所有str1换成str2selectreplace(Scott,S,Boy)fromdual;Boycottsoundex(char)字符串的语音表示,常
19、用于名字的模糊查询,可查找发音相似拼写不同的字符串selectlast_namefromemployeewheresoundex(last_name)=soundex(SMYTHE);Abbeysubstr(char,m,n)取出从m字符开始的n个字符的子串selectsubstr(ABCDEF,2,1)fromdual;CDlength(char)求字符串的长度selectlength(Anderson)fromdual;8并置运算符o在联结两个字符域时,它非常有用。虽然我们将其列为函数,但它实际上是个运算符。用两竖线“|”表示并置运算符。执行语句oselect ABC|DEF from d
20、ual;o返回文本ABCDEF。若某行的last_name值为John,执行语句oselect Dear|last_name|:from customer;o将返回文本“DearJohn:”日期型数据o日期型数据是Oracle数据库中第三种常见的数据类型。在建立customer表时,可以很容易地增加一个名为sale_date的日期域,如下所示:create table customer(sale_date date);o在Oracle中,日期型数据实际含有两个值:日期和时间。由于Oracle总是将日期和时间存放在一起,因此在比较两个日期时要加以注意。Oracle中日期的缺省格式为:DD-MON
21、-YY,oDD代表日,MON代表月,YY代表以两位数字表示的年。o注意:Oracle提供了一种特殊的世纪日期格式标记DD-MON-RR,它是用来在输入两字符的年份时维护世纪数字的。详细内容请参阅Oracle8i Server SQL Reference。o提示:为保证进入21世纪不出问题,请尽可能地使用四位数字的年份DD-MON-YYYY日期型函数函数返回值样例显示Sysdate当前日期和时间Selectsysdatefromdual;28-FEB-02February 28,2002Last_day本月最后一天Selectlast_day(sysdate)fromdual;31-MAR-02
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语言 基础
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。