L04_Oracle数据库编程_QUST.pdf
SQL语言基础SQL语言概述SQL StructuredQueryLanguage 结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 集数据查询、数据操纵、数据定义和数据控制于一体发展历程核心SQL支持和增强SQL支持3600页SQL/2003是SQL92的扩展1700页SQL/99ISO公布了新的SQL标准622页SQL/92ISO提出了具备完整性特征的SQL120页SQL/89美国ANSI公布最早的SQL标准SQL/86SQL支持的三级模式结构用户SQLViewV1ViewV2BasetableB1BasetableB2BasetableB3BasetableB4StoredfileS1StoredfileS2外模式模式内模式SQL特点 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供多种使用方式 语言简洁、易学易用SQL特点综合统一集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)于一体,可以独立完成数据库生命周期中的全部活动:定义关系模式,插入数据,建立数据库 对数据库中的数据进行查询和更新 数据库重构和维护 数据库安全性、完整性控制等用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据运行数据操作符统一SQL特点 高度非过程化 非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径 SQL只要提出“做什么”,无须了解存取路径 存取路径的选择以及SQL的操作过程由系统自动完成SQL特点 面向集合的操作方式 非关系数据模型采用面向记录的操作方式,操作对象是一条记录 SQL采用集合操作方式 操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组的集合SQL特点 以同一种语法结构提供多种使用方式 SQL是独立的语言 能够独立地用于联机交互的使用方式 SQL又是嵌入式语言 SQL能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用SQL特点 以同一种语法结构提供多种使用方式DBConnection db=newDBConnection();ResultSet rs;Statementstmt;Connectionconn=db.getConnection();stmt=conn.createStatement();rs=stmt.executeQuery(SELECT*FROMTABLE;);while(rs.next()/*/rs.close();stmt.close();SQL特点 语言简洁,易学易用 SQL功能极强,完成核心功能只用了9个动词 语言接近于英语口语SQL功能动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKESQL数据类型SQL数据类型 数据类型(datatype)是列(column)或存储过程中的一个属性 三个基本种类 字符数据类型 数值数据类型 表示其它数据的数据类型字符数据类型数据类型参数描述char(n)n=1-2000字节定长字符串,n为字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)varchar2(n)n=1-4000字节可变长的字符串,具体定义时指明最大长度n可以放数字、字母以及ASCII码字符集中所有符号如果数据长度没有达到最大值n,会根据数据大小自动调节字段长度如果你的数据前后有空格,会自动将其删去VARCHAR2是最常用的数据类型varchar(n)由于兼容性的原因,所以仍然在 Oracle数据库中保留着 VARCHARnchar(n)nvarchar(n)国际语言支持,NLS(NationalLanguageSupport),Unicode字符集数值数据类型数据类型参数描述number(m,n)m=1to38n=-84to127可变长的数值列,允许0、正值及负值m是所有有效数字的位数n是小数点以后的位数如:number(5,2)则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32integer-就是NUMBER中不带小数位的整型日期数据类型描述date从公元前4712年1月1日到公元4712年12月31日的所有合法日期Oracle在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒缺省格式为DD-MON-YY,如21-JUN-07表示2000年6月21日timestamp是DATE数据类型的扩展精确到秒后面六位小数并分为上午、下午大对象类型(LargeObject,LOB)数据类型描述三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如MicrosoftWord文档,以及音频、视频等非文本文件,最大长度是4GBLOB类型取决于使用的字节的类型,Oracle实际将这些数据存储在数据库内部保存可以执行读取、存储、写入等特殊操作blobBinaryLargeObject,用来存储无结构的二进制数据(类似于row和longrow)clobCharacterLargeObject,用于存储对应于数据库定义的字符集的字符数据(类似于long类型)nclob保存本地语言字符集数据NULLNULL值是关系数据库的重要特征之一NULL不代表任何值,它表示没有值 NULL值不等于0或其他任何值,所以测试某个数据是否为NULL值只能通过关系运算符ISNULL来进行 如果要创建表的一个列,而这个列必须有值,那么应将它指定为NOTNULL,表示该列不能包含NULL值任何数据类型都可以赋予NULL值NULL值引入了SQL运算的三态逻辑,如果比较的一方是NULL值,那么会出现3种状态:TURE、FALSE以及两者都不是SQL书写规则大写字母或小写字母 SQL关键字不区分大小写,既可以使用大写格式,也可以使用小写格式,或者混用大小写格式,完全取决于个人喜好 对象名和列名也不区分大小写,它们既可以使用大写格式,也可以使用小写格式,或者混用大小写格式大写字母和小写字母语句终止符 通常使用分号作为SQL语句的终止符 如果只是单行语句,SQLDeveloper就不需要语句终止符 但单行语句在SQL*Plus中需要语句终止符,通常也使用分号排版与可读性 如果SQL语句的文本很长,可以 通过使用制表符进行缩进排版 将语句的不同子句分离到不同的行来提高可读性 将复杂的表达式分成单独的行,在开发时SQL解释器抛出的错误格式通常是:“ERRORatlineN”,这使得对错误的定位更精确,使得调试变简单ORACLE中的SQL演示Oracle的数据类型SQLDeveloper中的SQLSCOTT 在Oracle的数据库产品中,一直有个默认用户SCOTTHR HR用户是示例用户结束