您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库Oracle第2章
数据库应用技术第二章基本概念2.1SQL概述2.1.1SQL的发展1976年:IBM的E.F.Codd发表了一篇里程碑的论文“ASystemR:RelationalApproachtoDatabaseManagement”R系统:数据库关系理论,介绍了关系数据库理论和查询语言SQL。1976年11月:IBMJournalofR&D文章中,IBM使用StructuredEnglishQUeryLanguage(SEQUEL,结构化英语查询语言)。后来,发现以被一个英国飞机公司作为商标,改为SQL。2.1.1SQL的发展SQL-86(ANSI)SQL-89(ANSI,ISO)SQL-92(ANSI,ISO)SQL-99(ANSI,ISO)SQL-2003(ANSI,ISO)事实上,国际标准与各个厂商之间的不兼容,造成了不可移植性。如字符串链接||与+;引号;数据类型;函数;特殊语义等。2.1.2SQL的特点关系代数的实现类自然语言即时性上下文无关性非过程化、命令集合逻辑独立性2.1.2SQL的特点Embedded(内含)SQL过程控制SQLOracle:PL/SQLDB2:SQL/PLSQLServer:Transact-SQL2.1.3SQL分类DQLDataQueryLanguage数据查询语言,如SELECT。DMLDataManipulateLanguage数据操纵语言,如INSERT、DELETE、UPDATE。DDLDataDefinitionLanguage数据定义语言,如CREATE、DROP、ALTER等。DCLDataControlLanguage数据控制语言,如COMMIT、ROLLBACK等。2.2基本语法与数据类型2.2.1基本语法SQL语句不区分大小写,可以写在多行,各个单词之间使用分隔符(空格,回车,制表符)分隔。语句的结尾使用分号(Oracle)。SQL语句中的关键字属于保留字,不能用于其他地方。SQL中数字常量的写法和通常程序语言一致,字符串使用单引号包含,字符串中的单引号使用两个连续的单引号转义表示,不区分字符和字符串。在SQL语句中可以加入注释,多行注释使用/*…*/,单行用--(oracle)。2.2.1基本语法为便于书写和阅读,通常采用如下的书写规范:关键字大写,其他标识符小写;每个子句单起一行;使用制表符缩进。2.2.2数据类型Oracle提供了22种不同的SQL数据类型CHAR、NCHAR、VARCHAR2、NVARCHAR2、RAW、NUMBER、BINARY_FLOAT、BINARY_DOUBLE、LONG、LONGRAW、DATE、TIMESTAMP、TIMESTAMPWITHTIMEZONE、TIMESTAMPWITHLOCALTIMEZONE、INTERVALYEARTOMONTH、INTERVALDAYTOSECOND、BFILE、BLOB、CLOB、NCLOB、ROWID、UROWID。2.2.2数据类型——数值型NUMBER(P,S)。其中,P为Precision,意为数值的最大位数(十进制),P=38;S为Scale,意为小数点后的最多位数。如NUMBER(5,2),NUMBER(4),NUMBER(5,-2)。如果给出S,表示一个定点数,当S为正数时,意为小数点后的最多位数;为负数时,四舍五入到小数点前S位。如果不给出p和s,表示一个浮点数。要注意的是scale的值没有应用,也就是说scale的值不能简单的理解为0,或者其他的数。NUMBER有几种子类型,和ANSI/ISO的写法兼容定点数:DEC,DECIMAL,NUMERIC浮点数:FLOAT,DOUBLE整数:INTEGER,INT,SMALLINT2.2.2数据类型——字符型在Oracle中,分为定长字符串和可变长字符串两种字符类型,不区分字符和字符串。定长字符串:CHAR(S),S是字符串的固定长度,S=2000;可变长字符串:VARCHAR2(S),S是字符串的最大长度,S=4000;定长字符串在存储时使用固定长度,如果数据长度小,则在后面填充空格;可变长字符串按照真实长度存储数据,不填充空格,节省空间,但存储和运算时间略长。2.2.2数据类型——日期型在Oracle中,DATE是7字节定宽日期/时间数据类型,表示日期和时间,表示的内容包括:世纪、年、月、时、分、秒。最小单位为秒。时间范围可以从公元前4712年到公元9999年。在日期型数据进行比较时,后面的日期更大。在需要精确定时的情况下,可以使用TIMESTAMP类型,7字节或11字节的定宽日期/时间数据类型。TIMESTAMPWITHTIMEZONE:13字节的定宽TIMESTAMP,提供了时区支持。TIMESTAMPWITHLOCALTIMEZONE:7或11字节的定宽TIMESTAMP,对时区敏感,根据数据库时区对数据进行规范化。2.2.2数据类型——日期型INTERVAL用来表示一段时间长度(两个时间的差),如“半个小时”这样的概念。INTERVALYEARTOMONTH:5字节定宽INTERVALDAYTOSECOND:11字节定宽可以再日期运算中是一个DATE或TIMESTAMP类型增加或减少一段时间。2.2.2数据类型NCHAR:包含UNICODE格式数据的定长字符串。NVARCHAR2:包含UNICODE格式数据的变长字符串。RAW:变长二进制数据类型,存储的数据不会发生字符集转换。BINARY_FLOAT:32位单精度浮点数。Oracle10gRelease1后新增。BINARY_DOUBLE:64位双精度浮点数。Oracle10gRelease1后新增。LONG:能存储最多2GB的字符数据。只为保证向后兼容,建议采用CLOB。2.2.2数据类型LONGRAW:能存储最多2GB的二进制信息。只为保证向后兼容,建议采用BLOB。BFILE:可以在数据库列中存储一个Oracle目录对象(操作系统目录的一个指针)和一个文件名,并读取这个文件。只读方式访问数据库服务器上可用的操作系统文件。BLOB:Oracle10g后允许存储(4GB)*(数据库块大小)字节的数据。包含不需要进行字符集转换的“二进制”数据,如电子表格、字处理文档、图像文件等。CLOB:包含要进行字符集转换的信息,适合存储纯文本信息。NCLOB:存储用数据库国家字符集编码的信息,而且像CLOB一样,需要进行字符集转换。ROWID:数据库中一行的10字节地址,在磁盘上定位这一行,标识ROWID指向的对象。UROWID:通用ROWID,用于表,是行主键值的一种表示。根据指向对象的不同,大小会有所变化。INT、INTEGER、SMALLINT、FLOAT、REAL等是在前面类型的基础上实现的,同义词。2.2.3常用函数——日期型DATE类型数据的表示方式:在缺省情况下,使用美国式日期格式表示法,即DD-MON-YY,并且没有时间信息,如04-Apr-05。其他的格式表示法需要通过设定会话参数或者使用日期转换函数完成。如TO_CHAR(SYSDATE,'YYYY/MM/DDHI24:MI:SS)来显示所有的年月日、时分秒信息。当前时间若为2007年5月24日下午3点12分45秒,上面的函数返回字符串'2007/05/2415:12:45'2.2.3常用函数——数值型对于数值型,通常的+-*/等算术运算符都可以使用数值型函数是对数值进行操作的函数,包括我们常见的各种数学函数,如sin,cos等。下面两个函数是比较特别和有用的。符号函数SIGN(x):-1,x0;0,x=0;1,x0。四舍五入函数:xCEILFLOORROUNDTRUNC2.332222.63232-2.3-2-3-2-2-2.6-2-3-3-22.2.3常用函数——字符型字符型的连接运算符是||,可以将两个字符串连接在一起。ASCII转换:ASCII,CHR大小写:UPPER,LOWER,INITCAP查找/替换:INSTR,REPLACE长度:LENGTH填充/移除:LPAD,RPAD,TRIM取子串:SUBSTR2.2.3常用函数——日期型两个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常用函数——类型转换隐式类型转换:Oracle是弱类型语言,各个类型之间可以直接相互运算,系统自动转换为合适的类型,如:‘123’+5=128‘123’||5=‘1235’必要的时候,也可以使用显式的类型转换函数,类型转换函数有三个,即:TO_DATE,TO_CHAR,TO_NUMBER在转换时,可以使用必要的格式符说明格式细节,否则使用缺省格式。
本文标题:数据库Oracle第2章
链接地址:https://www.777doc.com/doc-14404 .html