Oracle数据库函数
数据库设计过程
选择数据库
- Oracle 大规模的访问
- MySQL 小规模的访问
- SQL server 运行速率较慢
需求分析
- 收集用户的信息要求、处理要求、安全性与完整性要求。
- 自顶向下的分析方法,structured analysis (SA方法)
- 逐层分解的方式分析系统
- 数据流图(看懂)、ER图、数据字典
概念结构设计
- 将需求分析得到的用户需求抽象为
- 设计概念结构的四类方法:自顶向下、自底向上、逐步扩张、混合策略
- 混合策略:将自顶向下和自底向上相结合,用自顶向下的策略设计一个全局概念结构的框架,以它为骨架集成自底向上策略中设计各局部概念结构。
视图的集成
- 属性冲突
- 命名冲突
- 机构冲突
数据模型的优化
- Oracle
- win10 装12C
数据库的实施
- 用DDL定义数据库结构
- 组织数据入库
- 编制与调试应用程序
数据库的运行与维护
Oracle服务器
- 数据库及其实例
实例名
- 大写英文字母,不能包含特殊字符。
内存结构
- 块缓冲区、重做日志缓冲区、共享池、固定SGA、大池、Java池
oracle的使用
安装及连接
- 不要安装实例方案
- 创建过程中需要关闭防火墙
- 启动数据库方式:
- dos命令:
sqlplus 用户名/密码
- 超级管理员::
sqlplus 用户名/密码 as sysdba
- sqlplus:主机字符串
SQLPLUS.EXE
- dos命令与图形化操作的转换:
- dos命令:
- 查看当前帐号:
show user
- 连接数据库:
conn 用户名/密码
- 加锁、解锁:
alter user 用户名 account lock|unlock
- 断开数据库:
disc
- set linesize 500
- 设置页面大小:
set pagesize 20
编辑缓冲区
- run:执行缓冲区并显示缓冲区内容
- /:不显示缓冲区内容
- list显示缓冲区
- 修改密码:password 用户名
- 密码失效:alter user 用户名 PASSWORD expire
文件操作
创建脚本文件
- save d:\abc.sql
- select ename,sal from emp;
- save 文件 append
- save 文件 replace
载入sql脚本文件
- 装载:
get 文件.sql 展示脚本文件的内容
- 装载:
get 文件.sql nolist 不显示缓冲区内容
- 脚本文件的装载+执行:
start 文件.sql 装载并且执行
或者@文件名.sql
- 如果是.sql结尾的文件,可以不写后缀名,但如果是其他格式,需要写。
注释
- 单行:
--
或者remark
只能放在头 - 多行:
/**/
清除屏幕
clear screen
- 清除屏幕缓冲区:快捷键
SHIFT+DELETE
Clear SCR
CLEA SCR
CLE SCR
CLE SCREE
CLE SCRE
帮助指令
help 命令
环境变量的设置与显示
show --显示
set --设置
其他
autocommit:是否自动提交DML语句
autocommit on/off
COLSEP:设置列之间的间隔符。
feedback:显示反馈信息的最低行数,默认值是6。
heading:是否显示列标题。
time:命令提示符前面显示时间。
timing:显示执行slq语句的时间。
环境变量的备份
store set 文件
arraysize:设置从数据库中提取的行数,默认值是15。
SQL语句
1. 查询
SELECT 列名 FROM 表名;
- 查询所有信息
SELECT empno,ename,job,mg FROM emp;
SELECT * FROM emp;
2. 算术运算符
+,-,*,/
3. 空值:无效的,未定义的。空值不是0
4. 连接
-
||
列与列之间的合并,列与字符串的合并。
5. 去重
-
DISTINCT
:只能放在第一列的前面。
6. 排序
SELECT 列名1 【as】 列别名1, 列名2 【as】 列别名2,。。。。
FROM 表名
ORDER BY 排序列名1 【ASC】|DESC, 排序列名2 【ASC】|DESC,….;
7. 过滤查询
SELECT 列名1 [as] 列别名1, 列名2 [as] 列别名2,。。。。
FROM 表名
WHERE 条件
ORDER BY 排序列名1 [ASC]|[DESC], 排序列名2 [ASC]|[DESC],….;
8. 比较运算符
=
>
<
>=
<=
<> ,!=
BETWEEN AND
IN
9. 模式匹配(LKIE
语句)
LIKE
%: 任意个数的任意字符
_: 表示一个字符
10. 逻辑运算符
AND, OR, NOT
11. 函数
-
- 单行函数:字符、数值、日期、转换、通用
-
- 多行函数:
12. 字符函数
-
- 大小写控制函数(LOWER、upper、initcap)
-
- 字符控制函数(concat、substr、length、instr、lpad、rpad、trim)
- 数值(round、trunc、mod)
12. 日期 (sysdate)
- 日期的算术计算:
- 日期+(-)数字=日期
- 日期-日期=天数
MONTHS_BETWEEN (date1, date2)
- 用于计算date1和date2之间有几个月。
SELECT MONTHS_BETWEEN(to_date('2014-1-10','yyyy-mm-dd'), to_date('2014-3-21','yyyy-mm-dd')) MONTHS
ADD_MONTHS(date, integer)
- ADD_MONTHS返回日期日期加上INT月份。 date参数可以是datetime值或可以隐式转换为DATE的任何值。 INT参数可以是整数或可以隐式转换为整数的任何值。如果始终是该月的最后一天,或者如果结果月份有更多的日期,或者结果月份是日期的月份组成部分的更多日期,则结果是结果月份的最后一天。结果与日期具有相同的日期组件。
SELECT TO_CHAR(
ADD_MONTHS(hire_date,1),
'DD-MON-YYYY') "Next month"
FROM employees
WHERE last_name = 'Baer';
Next Month
-----------
07-JUL-1994
NEXT_DAY(date, char)
- 返回
date
后面的第一个由char
描述的日期,返回值为date
类型。char
描述的日期必须是Monday, Tuesday, Wednesday, Thirsday, Friday, Saturday, Sunday
中的一个。 - Example: Returns the date of the next Tuesday after February 2, 2001
SELECT NEXT_DAY('02-FEB-2001','TUESDAY') "NEXT DAY"
FROM DUAL;
NEXT DAY
-----------
06-FEB-2001
LAST_DAY(date)
- 返回
date
所在月的最后一天,date
是日期类型,返回值也是date
类型。 - Example: The following statement determines how many days are left in the current month.
SELECT SYSDATE,
LAST_DAY(SYSDATE) "Last",
LAST_DAY(SYSDATE) - SYSDATE "Days Left"
FROM DUAL;
SYSDATE Last Days Left
--------- --------- ----------
30-MAY-01 31-MAY-01 1
- Example: The following example adds 5 months to the hire date of each employee to give an evaluation date:
SELECT last_name, hire_date, TO_CHAR(
ADD_MONTHS(LAST_DAY(hire_date), 5)) "Eval Date"
FROM employees;
LAST_NAME HIRE_DATE Eval Date
------------------------- --------- ---------
King 17-JUN-87 30-NOV-87
Kochhar 21-SEP-89 28-FEB-90
De Haan 13-JAN-93 30-JUN-93
Hunold 03-JAN-90 30-JUN-90
Ernst 21-MAY-91 31-OCT-91
Austin 25-JUN-97 30-NOV-97
Pataballa 05-FEB-98 31-JUL-98
Lorentz 07-FEB-99 31-JUL-99
. . .
EXTRACT
- 语法结构:
转换函数
-
TO_CHAR
: -
TO_DATE
: -
TO_NUMBER(expr [, fmt [, 'nlsparam' ] ])
:
通用
NVL(expr1, expr2)
- 如果
expr1
非空,返回expr1
,如果expr1
为空,返回expr2
。