
数据库Oracle第2章.pptx
26页数据库应用技术第二章 基本概念2.1 SQL概述2.1.1 SQL的发展v1976年:IBM的E. F. Codd发表了一篇里程碑的论文“A System R: Relational Approach to Database Management ”R系统:数据库关系理论,介绍了关系数据库理论和查询语言SQLv1976年11月:IBM Journal of R&D文章中,IBM使用Structured English QUery Language (SEQUEL,结构化英语查询语言)后来,发现以被一个英国飞机公司作为商标,改为SQL2.1.1 SQL的发展vSQL-86(ANSI)vSQL-89(ANSI,ISO)vSQL-92(ANSI,ISO)vSQL-99(ANSI,ISO)vSQL-2003(ANSI,ISO)v事实上,国际标准与各个厂商之间的不兼容,造成了不可移植性如字符串链接|与+;引号;数据类型;函数;特殊语义等2.1.2 SQL的特点v关系代数的实现v类自然语言v即时性v上下文无关性v非过程化、命令集合v逻辑独立性2.1.2 SQL的特点vEmbedded(内含)SQLv过程控制SQLOracle:PL/SQLDB2:SQL/PLSQL Server:Transact-SQL2.1.3 SQL分类vDQLData Query Language数据查询语言,如SELECT。
vDMLData Manipulate Language数据操纵语言,如INSERT、DELETE、UPDATEvDDLData Definition Language数据定义语言,如CREATE、DROP、ALTER等vDCLData Control Language数据控制语言,如COMMIT、ROLLBACK等2.2 基本语法与数据类型2.2.1 基本语法vSQL语句不区分大小写,可以写在多行,各个单词之间使用分隔符(空格,回车,制表符)分隔语句的结尾使用分号(Oracle)vSQL语句中的关键字属于保留字,不能用于其他地方SQL中数字常量的写法和通常程序语言一致,字符串使用单引号包含,字符串中的单引号使用两个连续的单引号转义表示,不区分字符和字符串v在SQL语句中可以加入注释,多行注释使用/*/,单行用-(oracle)2.2.1 基本语法v为便于书写和阅读,通常采用如下的书写规范:关键字大写,其他标识符小写;每个子句单起一行;使用制表符缩进2.2.2 数据类型vOracle提供了22种不同的SQL数据类型CHAR、NCHAR、VARCHAR2、NVARCHAR2、RAW、NUMBER、BINARY_FLOAT、BINARY_DOUBLE、LONG、LONG RAW、DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND、BFILE、BLOB、CLOB、NCLOB、ROWID、UROWID。
2.2.2 数据类型数值型vNUMBER(P, S)其中,P为Precision,意为数值的最大位数(十进制),P=38;S为Scale,意为小数点后的最多位数如NUMBER(5, 2),NUMBER(4),NUMBER(5,-2)如果给出S,表示一个定点数,当S为正数时,意为小数点后的最多位数;为负数时,四舍五入到小数点前S位如果不给出p和s,表示一个浮点数要注意的是scale的值没有应用,也就是说scale的值不能简单的理解为0,或者其他的数vNUMBER有几种子类型,和ANSI/ISO的写法兼容定点数:DEC,DECIMAL,NUMERIC浮点数:FLOAT,DOUBLE整数:INTEGER,INT,SMALLINT2.2.2 数据类型字符型v在Oracle中,分为定长字符串和可变长字符串两种字符类型,不区分字符和字符串v定长字符串:CHAR(S),S是字符串的固定长度,S=2000;v可变长字符串:VARCHAR2(S),S是字符串的最大长度,S=4000;v定长字符串在存储时使用固定长度,如果数据长度小,则在后面填充空格;可变长字符串按照真实长度存储数据,不填充空格,节省空间,但存储和运算时间略长。
2.2.2 数据类型日期型v在Oracle中,DATE是7字节定宽日期/时间数据类型,表示日期和时间,表示的内容包括:世纪、年、月、 时、分、秒最小单位为秒时间范围可以从公元前4712年到公元9999年v在日期型数据进行比较时,后面的日期更大v在需要精确定时的情况下,可以使用TIMESTAMP类型,7字节或11字节的定宽日期/时间数据类型TIMESTAMP WITH TIME ZONE:13字节的定宽TIMESTAMP,提供了时区支持TIMESTAMP WITH LOCAL TIME ZONE:7或11字节的定宽TIMESTAMP,对时区敏感,根据数据库时区对数据进行规范化2.2.2 数据类型日期型vINTERVAL用来表示一段时间长度(两个时间的差),如“半个小时”这样的概念INTERVAL YEAR TO MONTH:5字节定宽INTERVAL DAY TO SECOND:11字节定宽v可以再日期运算中是一个DATE或TIMESTAMP类型增加或减少一段时间2.2.2 数据类型vNCHAR:包含UNICODE格式数据的定长字符串vNVARCHAR2:包含UNICODE格式数据的变长字符串。
vRAW:变长二进制数据类型,存储的数据不会发生字符集转换vBINARY_FLOAT:32位单精度浮点数Oracle 10g Release 1后新增vBINARY_DOUBLE:64位双精度浮点数Oracle 10g Release 1后新增vLONG:能存储最多2GB的字符数据只为保证向后兼容,建议采用CLOB2.2.2 数据类型vLONG RAW:能存储最多2GB的二进制信息只为保证向后兼容,建议采用BLOBvBFILE:可以在数据库列中存储一个Oracle目录对象(操作系统目录的一个指针)和一个文件名,并读取这个文件只读方式访问数据库服务器上可用的操作系统文件vBLOB:Oracle 10g后允许存储(4GB)*(数据库块大小)字节的数据包含不需要进行字符集转换的“二进制”数据,如电子表格、字处理文档、图像文件等vCLOB:包含要进行字符集转换的信息,适合存储纯文本信息vNCLOB:存储用数据库国家字符集编码的信息,而且像CLOB一样,需要进行字符集转换vROWID:数据库中一行的10字节地址,在磁盘上定位这一行,标识ROWID指向的对象vUROWID:通用ROWID,用于表,是行主键值的一种表示。
根据指向对象的不同,大小会有所变化vINT、INTEGER、SMALLINT、FLOAT、REAL等是在前面类型的基础上实现的,同义词2.2.3 常用函数日期型vDATE类型数据的表示方式:在缺省情况下,使用美国式日期格式表示法,即DDMONYY,并且没有时间信息,如04Apr05其他的格式表示法需要通过设定会话参数或者使用日期转换函数完成如 TO_CHAR(SYSDATE, YYYY/MM/DD HI24:MI:SS) 来显示所有的年月日、时分秒信息v当前时间若为 2007年5月24日下午3点12分45秒,上面的函数返回字符串2007/05/24 15:12:452.2.3 常用函数数值型v对于数值型,通常的+ - * /等算术运算符都可以使用v数值型函数是对数值进行操作的函数,包括我们常见的各种数学函数,如sin, cos等下面两个函数是比较特别和有用的符号函数SIGN(x):-1,x0四舍五入函数:xCEILFLOORROUNDTRUNC2.332222.63232-2.3-2-3-2-2-2.6-2-3-3-22.2.3 常用函数字符型v字符型的连接运算符是 | ,可以将两个字符串连接在一起。
ASCII转换:ASCII,CHR大小写:UPPER,LOWER,INITCAP查找/替换:INSTR,REPLACE长度:LENGTH填充/移除:LPAD,RPAD,TRIM取子串:SUBSTR2.2.3 常用函数日期型v两个DATE类型的数据可以作减法,结果是一个浮点小数,表示时间相差的天数如今天12点减去昨天12点等于1;如今天6点减去今天12点等于-0.25;一个时间也可以加减一个数,表示在此时间点向后或向前推若干天SYSDATE:返回系统当前时间此函数不用写括号其他日期型函数大多用来进行不规则的日期运算,如:MONTHS_BETWEEN:计算两个日期之间相差的月份ADD_MONTHS:日期加上月份2.2.3 常用函数日期型NEXT_DAY:下一个特定的日期,如星期几LAST_DAY:返回月份的最后一天ROUND和TRUNC函数也能对日期类型进行计算,按照规定的格式符四舍五入或者截断到某个日期单位(如年、月、日)2.2.3 常用函数类型转换v隐式类型转换:Oracle是弱类型语言,各个类型之间可以直接相互运算,系统自动转换为合适的类型,如:123 + 5 =128123 | 5 = 1235v必要的时候,也可以使用显式的类型转换函数,类型转换函数有三个,即:TO_DATE, TO_CHAR, TO_NUMBERv在转换时,可以使用必要的格式符说明格式细节,否则使用缺省格式。
演讲完毕,谢谢观看!。
