### 一、体系结构
1. 数据库 : 只有一个数据库
2. 实例 : 后台运行的一个进程
3. 表空间: 逻辑存储单位
4. 数据文件: 物理存储单位
5. 用户:面向用户管理,由用户来管理表空间,用户向表空间中添加数据,最终存储到数据文件中 用户:sys 超级管理员
system:普通的管理员
```
### 二、表空间 ```
1. 创建表空间的语法
create tablespace 表空间名称
datafile '路径/xxx.dbf'
size 200M
autoextend on 开启自动扩展 / off
next 30M; 每次的扩展量
2. demo:
    create tablespace 666
datafile 'c:/666'
size 200M
autoextend on
next 30M;
3. 删除的语法
drop tablespace 表空间名称; -- 只能删除逻辑概念
drop tablespace 表空间名称 including contents and datafiles; -- 逻辑,物理同时删除
``` ### 三、用户 ```
1. 创建用户
create user 用户名 identified by 密码
default tablespace 表空间名称;
2. demo
create user rose identified by rose
default tablespace 666;
3. 权限
connect :基本权限:create session
resource :开发人员权限
dba:管理
select * from session_privs;--查询当前用户的所有权限
4. 赋予权限
grant 权限列表 to 用户列表;
5. 回收权限
revoke 权限列表 from 用户列表;
``` ### 四、表的管理 ```
1. 数据类型
字符串
char(4000): 定长字符串 , char(10) , 取出的时候,不顾的用空格补齐
varchar:变长字符串 varchar(10)
varchar2():变长字符串, 向后兼容
long : 最大存储量:2G ,使用clob取代
日期
date:mysql 中的datetime
timestamp: 时间戳类型, 精确到秒后9位
数值
number(11) : 整数
number(m,n) : 浮点数:m :总的位数 n: 小数点后的位数 555.55
大数据类型
clob: 字符大数据类型, 最大存储量 4G
blob:字节大数据类型,
2. 创建表
create table 表(
字段名 类型 约束,
....

3. 修改表
添加列
alter table 表名 add 列名 类型 约束;
alter table customer add address varchar2(200); 删除列
alter table 表名 drop column 列名;
alter table customer drop column address; 修改列属性
alter table 表名 modify 列名 类型 约束;
alter table customer modify custName varchar2(400); 重命名列名
alter table 表名 rename column 原列名 to 新列名;
alter table customer rename column custName to cname;
4. 约束
主键,外键,非空,默认,唯一,检查
create table customer(
custId number primary key ,
custName varchar2(200) not null unique,
age number default 18 check(age between 1 and 120),
sex char(2) check(sex in ('男','女'))
)
5. 事务
特性: 原子性,隔离性,一致性,持久性
隔离级别: read uncommited
read commited
repeatable read
serializable
mysql: 支持四个隔离级别, 默认的是 repeatable read
oracle: 支持的read commited, serializable, read only,默认的是:read commited
6. sql语句的分类
DCL: 数据控制语言 :grant , revoke
DQL:数据查询语言 :select
DDL:数据定义语言 : create drop , alter
DML: 数据操作语言: insert update ,delete
7. DML语句
insert into 表名 values(值,....)
insert into 表(字段,...) values(值,....)
update 表 set 字段=值, 字段=值,... where 条件
delete from 表 where 条件;
truncate table 表; -- 删除表中的所有数据, 效率极高,
8. 序列
最常用语法
create sequence 序列名;
属性: nextval : 下一个值
currval: 当前值: 必须先执行一次nextval,才能获取当前值
dual --虚表,为了完善语法结构
select c_seq.nextval from dual;
select c_seq.currval from dual;
完整的语法
create sequence 序列名
start with 1 起始值
increment by 1 自增量
maxvalue 9999 /nomaxvalue /minvalue 1 /nominvalue
cycle 循环
cache 20;
``` ### 五、scott下的表 ```
1. soctt : oracle公司的第一位程序员, pointbase
2. 默认有一个用户scott ,密码是tiger
3. 解锁:
alter user 用户名 account unlock; / lock
alter user scott account unlock;
4. 重置密码:
alter user 用户名 identified by 密码;
alter user scott identified by tiger;
5. emp ,dept ,salgrade
``` ### 六、函数(单行,多行) ```
1. 单行函数
一行记录返回一行结果
字符串函数
upper lower
select * from emp where upper(ename) like upper('%Ia%');
日期函数
两个日期相减 == 天
select sysdate - hiredate from emp
两个日期相减/7 == 周
select (sysdate - hiredate) /7 from emp
月差
select months_between(sysdate ,hiredate) from emp;
数值函数
round: 四舍五入
select round(2.777) from dual;
trunc: 截取
select trunc(2.777, 1) from dual;
mod : 模运算符
select mod(3 , 10) from dual;
通用函数
--在Oracle中空+任何数值=空
nvl(p1, p2)
select sal * 12 + nvl(comm,0),sal , comm from emp;
转换函数
to_char(p1 ,p2) 将日期转换为字符串
p1 : 将要转换的日期
p2 : 格式
to_date(p1 ,p2) 将字符串转换为日期
p1 : 将要转换的字符串
p2 : 格式 insert into emp(empno ,hiredate) values(5000,to_date('2018-8-24','yyyy-mm-dd')) select sysdate,to_char(sysdate ,'yyyy-mm-dd hh24:mi:ss day') from dual; select '2018-08-24 11:16:45 friday' ,
to_date('2018-08-24 11:16:45 friday','yyyy-mm-dd hh24:mi:ss day')
from dual;
2. 多行函数(聚合函数)
多行记录返回一行结果
select count(*) from emp;
count ,sum ,avg ,max ,min
``` ### 七、分组举例 ```
0. 分组后能查询的列
聚合函数, group by中出现列
1. 查询人数大于5的部门信息
select * from dept where deptno in
(select deptno from emp group by deptno having count(1) > 5) --select中 deptno, count(1)不能颠倒 select t.deptno ,t.num,d.dname ,d.loc
from dept d ,(select deptno,count(1) num from emp group by deptno) t
where d.deptno = t.deptno and num > 5 select e.deptno ,count(1),d.dname,d.loc
from emp e,dept d
where e.deptno = d.deptno
group by e.deptno ,d.dname,d.loc
having count(1) > 5;
``` ### 八、多表查询 ```
1. 内连接: 只能显示符合条件的记录
-- 查询员工的领导信息
select e.empno,e.ename ,m.empno ,m.ename
from emp e,emp m
where e.mgr = m.empno;
-- 在上面的基础上,查询员工的部门名称
select e.empno,e.ename,d.dname ,m.empno ,m.ename
from emp e,emp m ,dept d
where e.mgr = m.empno
and e.deptno = d.deptno;
-- 在上面的基础上,查询领导的部门名称
select e.empno,e.ename,d1.dname ,m.empno ,m.ename ,d2.dname
from emp e,emp m ,dept d1,dept d2
where e.mgr = m.empno
and e.deptno = d1.deptno
and m.deptno = d2.deptno;
-- 在上面的基础上,查询领导和员工的工资等级
select e.empno,e.ename,d1.dname,s1.grade ,m.empno ,m.ename ,d2.dname,s2.grade
from emp e,emp m ,dept d1,dept d2,salgrade s1 ,salgrade s2
where e.mgr = m.empno
and e.deptno = d1.deptno
and m.deptno = d2.deptno
and e.sal between s1.losal and s1.hisal
and m.sal between s2.losal and s2.hisal;
2. 外连接: 能显示基准表中所有的记录
左外连接: left join on
右外连接 : right join on
特殊外连接 : (+):以对方表为基准表
demo:查询员工的领导信息(没有领导也要显示)
select e.empno,e.ename ,m.empno ,m.ename
from emp e left join emp m
on e.mgr = m.empno; select e.empno,e.ename ,m.empno ,m.ename
from emp m right join emp e
on e.mgr = m.empno; select e.empno,e.ename ,m.empno ,m.ename
from emp e,emp m
where e.mgr = m.empno(+);
``` ### 九、子查询 ```
1. 什么是子查询
一个查询语句包含另一个查询语句
外查询,内查询
2. demo
-- 查询与7369工作的一致的员工
select job from emp where empno = 7698;
select * from emp where job = (select job from emp where empno = 7698);
-- 查询高于本部门平均薪水的员工
select e.ename ,e.sal ,e.deptno ,t.avgsal ,t.deptno
from emp e,(select avg(sal) avgsal,deptno from emp group by deptno) t
where e.deptno = t.deptno and e.sal > t.avgsal -- 查询存在员工的部门信息
-- 只要在员工出现过的部门编号
select * from dept where deptno in (select distinct deptno from emp);
3. 小结
返回一行一列: = > < != <>
返回多行多列: 作为表使用
返回一列多行: in =any =some
``` ### 十二、分页查询 ```
1. rownum : 伪列, 行号,从1开始,依次递增 , 在加载时生成行号
2. select rownum ,e.* from emp e;
-- 查询前三条记录
select rownum ,e.* from emp e where rownum <= 3
-- 查询4 - 6 条记录
select rownum ,e.* from emp e where rownum between 4 and 6;
先生成行号,作为表,再条件筛选
select t.*
from (select rownum rn,e.* from emp e) t
where t.rn between 4 and 6;
-- 查询工资最高的前三名 nulls last nulls first
先排序,取前三名
select t.*,rownum from (select e.* from emp e order by sal desc)t
where rownum <= 3;
-- 查询工资较高的4-6名
select m.*
from (select t.*,rownum rn from (select e.* from emp e order by sal desc)t) m
where m.rn between 4 and 6;
```

oracle入门(一)的更多相关文章

  1. Oracle入门4-REF Cursor

    Oracle入门4-REF Cursor 转自:http://blog.sina.com.cn/s/blog_55dbebb00100gxsc.html 自:http://blog.csdn.net/ ...

  2. Oracle入门

    一.Oracle数据库简介 Oracle数据库的主要特点 :支持多用户.大事务量的事务处理:数据安全性和完整性控制:支持分布式数据处理:可移植性. Oracle数据库基于客户端/服务器技术:数据库服务 ...

  3. oracle入门必备

    //................创建表空间 \  赋予角色  \ 创建数据表  \  插入数据  \  创建序列  \ 添加注释   ........................... --创 ...

  4. Oracle入门学习笔记

    参考文献 中文教程     http://wenku.baidu.com/view/b425f404e87101f69e319566.html 经典教程     http://wenku.baidu. ...

  5. Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件

    一.数据库的逻辑结构是从逻辑的角度分析数据库的组成.Oracle 的逻辑组件包括: 1.表空间 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统 ...

  6. Oracle入门知识

    在客户端里PL/sql里面 记得用commint 回滚 所写得SQL语句才真的有效  如插入7千万个数据 没有执行commint 就等于没有 将数据真正的存入数据库服务器里面去 所以当其他前端链接上 ...

  7. oracle入门之分页查询

    oracle的分页查询共三种方法 1.根据ROWID来分页(速率一般) SQL>select * from emp where rowid in (select rid from (select ...

  8. oracle入门之对表数据查询(三)

    oracle表复杂查询--子查询 什么是子查询? 子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询. 单行子查询 单行子查询是指只返回一行数据的子查询语句. 请思考:如果显示与smit ...

  9. oracle入门之对表数据查询(二)

    oracle表复杂查询 在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句 数据分组-max,min,avg,sum,count 如何显示所 ...

  10. oracle入门之对表数据查询(一)

    此文中用到的表是Scott用户中自带的三张表: 基本select语句 基本语法: select [distinct] *|{columnl,column2,column3..} from table ...

随机推荐

  1. windows 2003 安装 MVC 环境 404错误,无法找到该页

    在windows server 2003 IIS6 系统安装 DotNet 4.0 + MVC3 环境后, .cshtml 文件依然无法运行,404错误 解决方案:查看处理程序隐射,如果没有.csht ...

  2. js权威指南学习笔记(二)表达式与运算符

    1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如:       2 2           1 var arr = [1,,,,,6]; 2 ...

  3. chrome中常用的快捷键

    ctrl+n 新建窗口ctrl+shift+n 无痕模式新建窗口ctrl+t 打开新标签页ctrl+shift+t 打开最近关闭的标签页ctrl+tab 标签页之间切换ctrl+w/ctrl+F4 关 ...

  4. 03_Adaptive注解

    [Adaptive注解] package com.alibaba.dubbo.common.extension; import com.alibaba.dubbo.common.URL; import ...

  5. 数组多功能splice()方法的插入,删除,替换

    多功能splice()插入.删除.替换 <script type="text/javascript"> var arr=['A','B','C','D','E','F' ...

  6. 如何编写自定义hive UDF函数

    Hive可以允许用户编写自己定义的函数UDF,来在查询中使用.Hive中有3种UDF: UDF:操作单个数据行,产生单个数据行: UDAF:操作多个数据行,产生一个数据行. UDTF:操作一个数据行, ...

  7. 如何在Windows中安装GitHub

    1.使用Git 在Git官网下载Git安装包,双击开始安装即可.安装完毕之后,在Windows中会具有一个Git Bash命令行工具以及一个Git GUI客户端工具. 点击Download即可下载. ...

  8. Json 和 Jsonlib 的使用

    什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解 ...

  9. GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处

    http://blog.csdn.net/maopig/article/details/6803141 在不少人的心目中,显卡最大的用途可能就只有两点——玩游戏.看电影,除此之外,GPU并没有其他的作 ...

  10. UVa 1262 - Password(解码)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...