走进Oracle

1、Oracle简介

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

2、Oracle与SQL Server

①采用模式:Oracle采用的是并行服务器模式,而Sybase SQL Server采用的是虚拟服务器模式

②开发性:Oracle 能在所有主流平台上运行(包括 windows),完全支持所有的工业标准,采用完全开放策略;SQL Server 只能在windows上运行,没有丝毫的开放性。

③性能:在对称多处理方面Oracle的性能优于Sybase的性能。

④操作性:Oracle 较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同; SQL Server 操作简单,但只有图形界面。

⑤客户端支持: Oracle 多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接;SQL Server C/S结构,只支持windows客户,可以用ADO、DAO、OLEDB、ODBC连接。

⑥风险性:Oracle 长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险; SQL server 完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容。

3、Oracle优点 

■ 可用性强
■ 可扩展性强
■ 数据安全性强
■ 稳定性强

4、Oracle用户和权限

Oracle中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自

身创建的数据库对象,因此用户的概念在Oracle中非常重要。Oracle的用户可以用CREATE USER命令来创建。其语法是:

语法结构:创建用户
CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]

其中,LOCK|UNLOCK创建用户时是否锁定,默认为锁定状态。锁定的用户无法正常的登录进行数据库操作。

尽管用户成功创建,但是还不能正常的登录Oracle数据库系统,因为该用户还没有任何权限。如果用户能够正常登录,至少需要

CREATE SESSION系统权限。Oracle用户对数据库管理或对象操作的权利,分为系统权限和数据库对象权限。

系统权限比如:CREATE SESSION,CREATE TABLE等,拥有系统权限的用户,允许拥有相应的系统操作。

数据库对象权限,比如对表中的数据进行增删改操作等,拥有数据库对象权限的用户可以对所拥有的对象进行对应的操作。

语法结构:授权

GRANT角色|权限 TO 用户(角色)

5、Oracle SQL语句

Ø  数据定义语言Data Definition Language(DDL) ,包括CREATE(创建)命令、ALTER(修改)命令、DROP(删除)命令等。

Ø   数据操纵语言 Data Manipulation Language(DML) ,包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT … FOR UPDATE(查询)等。

Ø   数据查询语言 Data Query Language(DQL),包括基本查询语句、Order By子句、Group By子句等。

Ø   事务控制语言 (TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

Ø  数据控制语言 (DCL),GRANT(授权)命令、REVOKE(撤销)命令。

目前主流的数据库产品(比如:SQL Server、Oracle)都支持标准的SQL语句。数据定义语言,表的增删改操作,数据的简单查

询,事务的提交和回滚,权限的授权和撤销等,Oracle与SQL Server在操作上基本一致。

6、创建表和约束

CREATE TABLE INFOS
(
  STUID VARCHAR2(7) NOT NULL,    --学号 学号=‘S’+班号+2位序号
  STUNAME VARCHAR2(10) NOT NULL,  --姓名
  GENDER VARCHAR2(2) NOT NULL,    --性别 
  AGE NUMBER(2) NOT NULL,        --年龄
  SEAT NUMBER(2) NOT NULL,        --座号
  ENROLLDATE DATE,      --入学时间
  STUADDRESS VARCHAR2(50) DEFAULT --住址
  CLASSNO VARCHAR2(4) NOT NULL    --班号班号=学期序号+班级序号 
)
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) --主键约束
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER 
CHECK(GENDER = '男' OR GENDER = '女') 
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT
CHECK(SEAT >=0 AND SEAT <=50)  
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE 
CHECK(AGE >=0 AND AGE<=100)  
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO 
CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR (CLASSNO >='2001' AND CLASSNO<='2999'))  
ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) --唯一约束

6、Oracle日期

在Oracle中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,因此为了程序便于移植,日期的输入要使用TO_DATE函数对日期格式化后输入,采用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的格式化字符如下:

yyyy 表示四位年份
mm 表示两位月份,比如3月表示为03
dd 表示两位日期
hh24 表示小时从0-23,hh12也表示小时从0-11
mi  表示分钟 
ss

表示秒

7、删除

TRUNCATE和DELETE都能把表中的数据全部删除,他们的区别是:

TRUNCATE是DDL命令,删除的数据不能恢复;

DELETE命令是DML命令,删除后的数据可以通过日志文件恢复。

如果一个表中数据记录很多,TRUNCATE相对DELETE速度快,但由于TRUNCATE命令比较危险,因此在实际开发中,

TRUNCATE命令慎用。

 8、关系运算和逻辑运算

Oracle中Where子句经中经常见到关系运算和逻辑运算,常见的关系运算有:


逻辑运算符有三个:AND、OR、NOT、ALL、ANY、SOME、BETWEEN、EXISTS、IN、LIKE

9、通配符

在一些查询时,可能把握不准需要查询的确切值,比如百度搜索时输入关键字即可查询出相关的结果,这种查询称为模糊查询。

模糊查询使用LIKE关键字通过字符匹配检索出所需要的数据行。

% 包含0个或多个字符的任意字符串
_ 任何单个字符
[ ] 指定范围或集合中的任何单个字符,eg where name like '[王,刘]__'表示姓王或刘的三个字的姓名
[^] 不属于指定范围或集合中的任何单个字符

10、Oracle函数

Oracle SQL提供了用于执行特定操作的专用函数。这些函数大大增强了SQL语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。Oracle数据库中主要使用两种类型的函数:

①单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果。常用的单行函数有字符函数、数字函数、转换函数、日期函数

字符函数 函数说明
ASCII(x) 返回字符x的ASCII码
CONCAT(x,y) 连接字符串x和y
INSTR(x, str [,start] [,n) 在x中查找str,可以指定从start开始,也可以指定从第n次开始
LENGTH(x) 返回x的长度
LOWER(x) x转换为小写
UPPER(x) x转换为大写
LTRIM(x[,trim_str]) 把x的左边截去trim_str字符串,缺省截去空格
RTRIM(x[,trim_str]) 把x的右边截去trim_str字符串,缺省截去空格
TRIM([trim_str FROM] x) 把x的两边截去trim_str字符串,缺省截去空格
REPLACE(x,old,new) 在x中查找old,并替换为new
SUBSTR(x,start[,length]) 返回x的字串,从staart处开始,截取length个字符,缺省length,默认到结尾

数字函数

说明

示例

ABS(x)

x绝对值

ABS(-3)=3

ACOS(x)

x的反余弦

ACOS(1)=0

COS(x)

余弦

COS(1)=1.57079633

CEIL(x)

大于或等于x的最小值

CEIL(5.4)=6

FLOOR(x)

小于或等于x的最大值

FLOOR(5.8)=5

LOG(x,y)

x为底y的对数

LOG(2,4)=2

MOD(x,y)

x除以y的余数

MOD(8,3)=2

POWER(x,y)

x的y次幂

POWER(2,3)=8

ROUND(x[,y])

x在第y位四舍五入

ROUND(3.456,2)=3.46

SQRT(x)

x的平方根

SQRT(4)=2

TRUNC(x[,y])

x在第y位截断

TRUNC(3.456,2)=3.45

转换函数 示例
to_char(date,'fmt') 把日期类型的数据按照某个格式转换为字符串,eg to_char(sysdate,' yyyy''年''mm''月''dd''日'' ' from dual
to_char(num,'fmt') to_char(12345.67899,'fmL999G999G999G999D99') from dual 结果为$12,345.68
  G表示分组,D表示小数点,fm表示去除多余空格,L表示货币符号
to_number(str) 把字符串转换为数字
to_date(str,'fmt') 把str转换为日期,eg to_date('1990-08-10','yyyy-mm-dd'),结果1990-

日期函数

函数说明


ADD_MONTHS(d,n)

在某一个日期d上,加上指定的月数n,返回计算后的新日期


LAST_DAY(d)

返回指定日期当月的最后一天


ROUND(d[,fmt])

返回一个以fmt为格式的四舍五入日期值,d是日期,fmt是格式模型(解释1


EXTRACT(fmt FROM d)

提取日期中的特定部分(解释2


解释1

如果fmt为“YEAR”则舍入到某年的1月1日,即前半年舍去,后半年作为下一年。

如果fmt为“MONTH”则舍入到某月的1日,即前月舍去,后半月作为下一月。

默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天作为第二天。

如果fmt为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下一周周日。

解释2

fmt为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。其中YEAR、MONTH、DAY可以为DATE类型匹配,也可以与TIMESTAMP类型匹配;但是HOUR、MINUTE、SECOND必须与TIMESTAMP类型匹配。

②聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果,常与GROUP BY连用。

聚合函数 函数说明
AVG 求平均值
SUM 求和
COUNT 数据统计
MAX、MIN 求最值


猜你喜欢

转载自blog.csdn.net/x_dmword/article/details/80846603