oracle数据库自学笔记(持续更新中……)
以前的项目都是使用mysql数据库开发的,如今进了新的公司,开始接触到了Oracle数据库,而自己以前没有接触过,就自己挤时间来学习一下。
一.关系型数据库的概念
关系型数据理论由E.F.Codd博士在1970年提出;
Codd制定了一个数据库产品成为关系型数据库所必备一系列相关标准;
它是RDBMS(关系型数据库管理系统)的基础;
关系型数据库需要包含下面三个方面:
1.对象或关系的集合;
2.基于关系的操作集合;
3.因数据精确性和一致性二带来的数据的完整性;
关系型数据库是关系的集合或二维表的集合;
每个表有行和列组成;
可以通过Structured Query Language(SQL)来操作表中的数据;
表中的每一行数据可以通过主键即Primary Key(PK)来唯一标识;
表与表之间可通过外键即Foreign Key(FK)来关联;
关系型数据库中的对象:
1.表:存储的基本单元,有行和列组成;
2.视图:从一个或多个表的数据自己的一逻辑表示
3.序列:用来产生主键;
4.索引:提高查询的速度;
5.同义词:一个对象的别名;
6.编程单元:包括过程、函数或包,以及PL/SQL中的声明。
二.ORACLE简介
oracle是一个最大的数据库厂商提供的关系型数据库产品
oracle的RDBMS也称为oracle服务器
1.一个存储数据的地方;
2.能快速的获得数据;
3.数据库安全性;
4.分布式的数据库;
5.客户端和服务器的配置;
SQL——结构化的查询语言,通过它能以一种标准化的方法来对关系型数据库种的数据进行访问和操作。
SQL*Plus——是最简单的数据库开发工具。它允许用户从提示行上以交互方式输入SQL语句和PL/SQL语句块。这些语句被直接发给数据库,而结果会返回到屏幕上。通常,SQL*Plus与oracle服务器集成在一起,是标准oracle安装的一部分。SQL/Plus是字符模式环境,window版本包括了需对GUI操作,主要用于连接数据库和设置SQL*Plus选项。
PL/SQL——是用于从各种环境中访问oracle数据库的一种比较复杂的编程语言。它与数据库服务器集成在一起,也是标准数据库安装的一部分。
SQL命令:
1.取值语句:
SELECT
2.数据操作语句Data manipulation language(DML):
INSERT UPPDATE DELETE
3.数据定义语句Data definition language(DDL):
CREATE ALTER DROP RENAME TRUNCATE
4.事务控制语句Transaction control:
COMMMIT ROLLBACK SAVEPIONT
5.数据控制语句Data control language(DCL):
GRANT REVOKE
三.SELECT语句
语法:SELECT [DISTINCT] {*,column [alias],......} FROM table;
说明:
1.SELECT 后面可以跟上列名、列别名、通配符;
2.FROM 子句后面跟上要查找的表名;
3.DISTINCT 查找不重复的记录
4.SELECT语句可以写成一行或多行,不区分大小写;
5.通配符*显示表中所有的列
select * from department;
6.查询指定列时,SELECT语句中列与列之间用逗号分割
select d_id,d_name from department;
7.查询出来的数值或日期可以进行加减乘除运算,如果某一项为NULL,那么运算结果也为NULL
select salary*12 from department;
可以使用括号改变优先权,如:
select salary*12+100 from department;
和
select 12*(salary+100)from department;
8.采用NVL函数将NULL转换成某个值,如NVL(列名,‘字符串’)或NVL(列名,数值)
9.列别名是可选的,一个列别名包含了空格、特殊字符、或者要区分大小写,那就要给它加上双引号
select last_name "Employees" from department;
四.排序和条件查询
ORDER BY 子句:
1.order by 子句在整个SQL语句最后;
2.ORDER BY 后面可以是列名、列别名、表达式、列出现在SELECT关键词后的序号。
select name,salary from department order by salary;
等同于:
select name,salary from department order by 2;
3.ORDER BY后面可以跟多列,先按第一列排序,如果第一列相同再以第二列排序,一次类推。。。
4.ASC表示升序,是默认的,可以省略,DESC是降序排列;
5.NULL永远是最大的。
WHERE 子句:
1.紧跟在from子句之后,对返回数据进行筛选
2.条件由一个或多个表达式、比较符或字面值组成
3.所有字符串和日期都要用单引号包起来,数字不需要
4.日期在oracle数据库有特定形式,‘DD-MON-YY’(具体看日期显示格式),否则视作字符串
5.WHERE子句的运算符:=等于、 >大于、 >=大于等于、 <小于、 <=小于等于、 !=不等于、 <>不等于、 BETWEEN...AND...包括起止值、 IN(list)限定内容、 LIKE模糊查询、 IS NULL为空(不能使用=null)、 NOT BETWEEN不在...之间、 NOT IN不再集合里、 NOT LIKE不包含、 IS NOT NULL不为空、 NOT、 AND、 OR;
五.单行函数
Oracle数据库的函数作用:对数据进行计算、数据统计、修改数据显示、数据类型转换等
函数分类:单行函数和多行函数(组函数)
单行函数:字符函数、数值函数、日前函数、转换函数;
单行函数的使用:作用在单行(单挑记录)上,每行都可以返回一个结果,可操作数据项,接受参数并返回结果,修改数据类型,还可以嵌套使用。
函数使用方式:
function_name(column|expression,[arg1,arg2,...])
1.字符函数:
lower:转换成小写;
upper:转换成大写;
initcap:首字母大写,其余的都小写;
concat:字符串连接;
substr(str,start,end):字符串截取;
length:求字符串长度;
nvl:空值置换
示例:
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAPP('SQL Course') Sql Course
CONCAT('good','string') goodstring
SUBSTR('String',1,3) Str
LENGTH('String') 6
2.数值函数
round:四舍五入
trunc:截取,不进行四舍五入
mod:求余,取模
示例:
ROUND(45.923,2) 45.92
ROUND(45.923,0) 46
ROUND(45.923) 46
ROUND(45.923,-1) 50
TRUNC(45.923,2) 45.92
TRUNC(45.923) 45
TRUNC(45.923,-1) 40
MOD(1600,300) 100
3.日期函数
MONTHS_BETWEEN(date1,date2) 两个日期之间的月数
ADD_MONTHS(date,n) 指定日期上添加月数
NEXT_DAY(date,'friday') 指定日期的下一天(如:下一个星期五)是哪一天
LAST_DAY(date) 指定日期的最后一天
ROUND(date,'year') 对指定日期四舍五入,逢16日往月进一,逢7月往年进一
TRUNC(date,'year') 对指定日期进行截取
说明:oracle日期包括世纪、年、月、日、时、分、秒、毫秒,默认显示DD-MON-YY,函数SYSDATE、SYSTIMESTAMP可以返回相同时间,通过DUAL表可以使用这两个函数来查看系统时间。
MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 19.774194
ADD_MONTHS('11-JAN-94',6) '11-JUL-94'
NEXT_DAY('01-SEP-95','FRIDAY') '08-SEP-95'
LAST_DAY('01-SEP-95') '30-SEP-95'
ROUND('25-MAY-95','MONTH') 01-JUN-95
ROUND('25-MAY-95','YEAR') 01-JAN-95
TRUNC('25-MAY-95','MONTH') 01-MAY-95
TRUNC('25-MAY-95','YEAR') 01-JAN-95
4.转换函数
TO_CHAR 将日期转换成字符串,TO_CHAR(date,‘fmt’)使用format定时日期格式,使用fm来去除空格或0,使用逗号分割
日期格式模型的元素:
year:英文年份
month:英文月份
mon:英文月份缩写
day:星期几的英文单词
DY:星期几的前三个字母
ddap:英文拼写的天
ddspth:英文拼写的第几天
d:一个星期的数字表示,周日为1,周六为7
dd:一个月的第几天
ddd:一年的第几天
yyyy:四位年
mm:二位月
hh24:24小时制的时
mi:分钟
ss:秒
AM:上午
PM:下午
RR日期格式:
RR:0-49代表本世纪,50及以上代表上世纪(默认)
YY:代表和当前时间所处的同一世纪
TO_CHAR 将数值转换成字符串,TO_CHAR(number,‘fmt’)
0:强制0填充未满数据位数
9:代表数字
$:设置一个浮点型的美元符号
L:使用本地货币符号
示例:
SELECT 'Order'||TO_CHAR(id)||'was filled for a total of'||TO_CHAR(total,'fm$9,999,999') FROM table WHERE date='21-SEP-95';
TO_NUMBER 将一个数值字符串转换成数字
TO_DATE 将一个日期字符串转换成日期
好了,今天就更新到这里,下次更新内容是夺标查询。
oracle数据库自学笔记(持续更新中……)的更多相关文章
- oracle学习 一 (持续更新中)
首先你需要创建一个表空间,然后,再创建一个用户名,用户名要给他指定一个表空间,并且给这个用户赋予权限, DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构. RESOURCE:拥有 ...
- oracle学习 二(持续更新中)
oracle数据库的启动停止 以oracle用户身份登录 登录后输入以下命令: oracle-> sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Pro ...
- oracle学习 四(持续更新中)无法为表空间 MAXDATA 中的段创建 INITIAL 区
解决建立表的时候出现的 ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 出现这个问题是因为表空间的大小不足,可以给他扩容这样的话也会多出来一个数据文件.具体写法如下 ...
- oracle学习 三(持续更新中)
关于ora 01219问题的解决 之前学习oracle的时候练习去建立表空间,建了很多之后手动删除了,之后再使用自己创建的用户名登陆数据库就会造成数据库 ORA-01031: ORACLE initi ...
- react-navigation 使用笔记 持续更新中
目录 基本使用(此处基本使用仅针对导航头部而言,不包含tabbar等) header怎么和app中通信呢? React-Navigation是目前React-Native官方推荐的导航组件,代替了原用 ...
- VB导入Excel到数据库软件(持续更新中。)
1.选择Excel文件版本 电脑上用的 Office2010 引用:Mircosoft Excel 14.0 Object Library 2.选择Excel文件 '选择文件公共变量 Public D ...
- GOF 的23种JAVA常用设计模式 学习笔记 持续更新中。。。。
前言: 设计模式,前人总结下留给后人更好的设计程序,为我们的程序代码提供一种思想与认知,如何去更好的写出优雅的代码,23种设计模式,是时候需要掌握它了. 1.工厂模式 大白话:比如你需要一辆汽车,你无 ...
- oracle 常用指令(持续更新中....)
1. 查看所有表空间大小 select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_nam ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
随机推荐
- iis相关概念和操作
iis相关 iis是什么? 它是互联网信息服务的缩写,是网页服务组件(即多种服务器集成) iis为什么存在,作用是什么? 方便于网络上发布信息. 如何使用等等? 1)打开win7的 ...
- layui 单选项 点击显示与隐藏
同一个页面有多个单选按钮:https://blog.csdn.net/haibo0668/article/details/86220767
- android源码编译出现No private recovery resources for TARGET_DEVICE解决方法
mmm或mm出现以下提示的解决方法:Terminal log:No private recovery resources for TARGET_DEVICE xxxxxxmake: Entering ...
- Spring 学习——Spring AOP——AOP配置篇Advice(无参数传递)
声明通知Advice 配置方式(以前置通知为例子) 方式一 <aop:config> <aop:aspect id="ikAspectAop" ref=" ...
- [译]RabbitMQ教程C#版 - 主题
先决条件 本教程假定 RabbitMQ 已经安装,并运行在localhost标准端口(5672).如果你使用不同的主机.端口或证书,则需要调整连接设置. 从哪里获得帮助 如果您在阅读本教程时遇到困难, ...
- Java基础知识盘点(二)- 集合篇
List和Set区别 List和Set都是继承Collection接口 List特点:元素有放入顺序,元素可重复 Set特点:元素无放入顺序,元素不可重复 Set和List对比: Set:检索元素效率 ...
- Visual Studio 2017 注册码
Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Visual Studio 2017(VS201 ...
- IBase<T>
public interface IBase<T>//基类 { IEnumerable<T> SelectAll();//查询所有 T FindById(int ID);//根 ...
- mysql 基本sql使用总结-电商项目
一.增加 1. 设置插入数据后自动返回主键 主键返回策略只适用于单个对象的插入: 主键返回策略: (1) 单独参数 直接用set方法 (2) map 对象名.id (3) 多参数列表 对象名.id( ...
- [原][飞行仿真]helios与dcs world安装,详尽教程
可以参考的博客: http://www.insky.cn/bbs/forum.php?mod=viewthread&tid=58175 http://www.insky.cn/bbs/foru ...