一、卸载安装(来自百度经验)

完全卸载:

1. 停止相关服务

2. 运行Universal Installer,卸载产品

3. 清理注册表

4. 重启电脑,删除目录(Oracle文件夹和app文件夹)

安装:

1. 运行setup.exe

2.取消勾选“接收安全更新”选项

3. 选择创建和配置数据库

4. 桌面类

5. 企业版

6. 使用utf-8字符集

7. 口令管理,将Scott解锁,设置密码tiger

打开sql plus用设置好的账户登录测试一下

二、配置

1. 确保服务(service和listener)开启

2. 打开Net Manager配置listener和Oracle主目录

3. 打开net configuration assistant配置监听程序和本地网络服务名配置

三、配置PLSQL

1. tools-->preferences Oracle Home:Oracle主目录

2. 查看主目录/network/admin/下是否有tnsnames.ora文件和listener.ora

问题汇总:TNS无法解析制定的连接符标识https://www.cnblogs.com/justlove/p/8252779.html

可以试着把主机名改为本计算机名

四、SQL数据库用户操作语句

新建用户:create user [username] identified by [password]

分配表空间:alter user [username] default tablespace users temporary tablespace temp profile default

新建用户同时分配表空间:create user zhangsan identified by 123456 default tablespace users temporary tablespace temp profile default

赋予权限:grant connect to zhangsan; grant resource to zhangsan; 给查询权限:grant select on emp to zhangsan;

一次赋予多种权限用逗号隔开,如: grant connect,resource to zhangsan

删除用户:drop user zhangsan

去除权限:revoke connect from zhangsan

修改用户密码:alter user zhangsan identified by newpassword

锁定用户:alter user zhangsan account lock

五、Oracle中的数据类型

number(10)表示数字类型,长度为10

number(5,2)表示总长度为5,小数位占其中的2位

char(10)字符型,最多放2000个字符

varchar()或者varchar2()可变长度字符,最多放4000个字符

date日期类型,系统默认日期格式:2-3月-2019

timestamp日期精确到毫秒

blob大数据,存储二进制数据,最大4G

六、SQL表操作语句

创建表:

create table student(

  sid number(10),

  sname varchar(20),

  cid number(10),

  ......

)

修改表:

追加列:alter table student add(sex varchar(5))

修改列:alter table student modify(sname varchar(15))

删除列:alter table student drop column sex

修改列名:alter table student rename column sex to gender

修改表名:rename student to students

删除表:drop table student

约束 分为列级约束和表级约束

种类:主键primary key、唯一unique、非空not null、外键foreign key references、检查check

添加列级约束:

create table student(

  sid number(10) primary key,

  sname varchar(20) not null,

  cid number(10) references class,

  ......

)

添加表级约束:

create table student(

  sid number(10) ,

  sname varchar(20) ,

  cid number(10) ,

  ......

  constraint student_sid_pk primary key(sid),

  constraint student_cid_fk foreign key(cid) references class(cid),

  ......

)

或者alter table add constraint ...

七、数据处理

Crete table  表名

As

Select * from 表名

创建一个表,并将查询出来的数据插入到新的表中

去掉数据复制表结构

Create table 表名

As

Select * from 表名

Where 添加一个没有结果的条件  empno=null

八、查询语句

||连接查询结果

在sql中,所有的空值运算之后都为空

Nvl(comm,0)空值处理

Nvl处理空值   第一个参数为列,第二参数表示为如果列中的值为空,用0来代替

去掉重复 关键字:distinct

在sql语句中,字符、日期都必须用单引号引起来

数值的比较,字符串的比较,日期的比较,between…and….(在两者之间,包含两个边界),like(_,%)(模糊查询,关键字查询),in(匹配查询)

Is null表示空   is not null 表示非空

Between。。and。。格式: select * from 表明 where 列明 between  XX and  XX

比较符:> < >= <= !=或<> =   sql中的赋值符号:    :=  赋值符号

逻辑运算符: and 与     or或    not非

排序关键字:order by      asc 升序 为默认排序可以省略       desc 降序

九、函数

单行函数:只对一行数据影响的函数叫单行函数

单行函数:字符、数值、日期、转换、通用

字符函数:lower  将字符转换为小写;upper 将字符转换为大写

instr(列,str1)  查询字符   str1在列中的字符

--concat  连接   将两个字符连接    类似于||

select concat(ename,job) from emp

--length 返回字符串的长度

select length(ename) from emp

数值函数:

--dual 这个表没有具体的数据,只是在查询的时候,我们查询的格式为 select  from 表名,当不需要用到表而用到查询结构的时候用dual占位

Turnc() 数字截断

round()四舍五入

mod()   求余

日期函数:  sysdate   分为日期和时间

Months_between  获得两者之间的月份数

--获得1987/4/191981/2/20这个日期间的月份差

select months_between('19-4月-1987','19-4月-1981') from dual

add_months   向指定的日期中添加若干月份

last_day 获得本月的最后一天

round (日期,年/月/日)   日期同样有四舍五入

trunc     日期的截断

转换函数:  分为两种形式:隐式转换   显示转换

隐式转换:自动类型转换

显示转换:对数据用方法进行转换

To_char 转换为字符

To_number 转换为数字

To_date 转换为日期

To_char(date\number,’字符格式’)

将日期转换为字符串  to_char(sysdate,’yyyy-mm-dd’);

将数字转换为字符串  to_char(sal,’00000.00或者9999.99’);

格式中的9的位数,一定要大于等于要转换的数字的位数

如果是货币可以在前面加上$或者L(本地货币)为字符串

To_date(‘字符’,‘日期格式’)

yyyy  代表年   mm代表月  dd代表日  hh时  mi分 ss秒

--插入一条数据到数据库表emp   将日期转换为指定格式

insert into emp values(7856,'lisi','SALESMAN',7698,to_date('1982-12-12','yyyy-mm-dd'),6000,200,10)

To_number(‘字符’,’数字格式’)

--将¥1234.55转换为数字

select to_number('¥1234.55','L999999999.000') from dual

如果字符含有货币符号,那么格式中也必须有货币符号

通用函数:

Nvl(参数1,参数2)处理空值

Nvl2(参数1,参数2,参数3)  参数1列中的数据,如果不为空执行参数2,如果为空执行参数3

Case  参数  when 列值 then 返回数据

[when  列值2  then 返回数据2

。。。。。]

Else 返回数据

End [别名]

通过每一列查出的值作为参数匹配when后面的值,入果匹配上了则返回then后面的值,如果都没匹配上 则返回else中的值,整个函数只是一列

Decode(参数,列值1,返回值1,列值2,返回值2,列值3,返回值3,返回值)

分组函数:min、max、avg、sum、count

十、高级查询

分组查询:通过关键字group by分组的查询

规则:select中出现的非组函数列,在group by 中必须出现

  group by 中出现的列,select中可以没有

  order by 放在最后排序

having:针对已分组的数据再次过滤,可以使用组函数,而where不能!

多表查询:两张表及两张表以上的查询叫多表查询。

内连接:inner join 效率高于等值查询

外连接:outer join 分为左外连接和右外连接查询。

满连接:full outer join

子查询:查询的嵌套,用括号扣起来的查询语句。分为单行子查询和多行子查询。

in:匹配任意一个结果

any:用于否定?(有点懵逼)

all:匹配所有?(有点懵逼)

合并查询:union并集、union all不取消重复行、intersect交集、minus差集

分页查询:

select * from emp

delete from emp where empno=7999
--在Oracle查询中系统会为每张表提供一个rownum的伪列,rownum是一个永远从1到最大条数的有序排列
--rownum只能从1开始,所以如果数据不从一开始,需要先将rownum查询出来成为一个独自列
--如果分页查询的时候需要排序,一定要在查询rownum之前排序
select *
from (select e.*,rownum r from (
select * from emp order by sal
) e
where rownum<=3*5)
where r>(3-1)*5

此处查询第三页数据,五条数据为一页

十一、事务管理

隐式提交:DDL语句(操作表结构)自动保存

显式提交:commit手动提交

隐式回滚:异常关闭数据库,自动回滚

显示回滚:rollback  回滚到前一个提交点

savepoint 创建保存点

rollback to 保存点名字

十二、视图

虚表,数据来源于表,一般用于查看

create or replace view as...

十三、序列

主要用于提供主键值

create sequence 序列名

[Increment by n]  --序列的步长,默认值为1

[start with n]     --序列初始位置,不能小于最小值

[minvalue n] --最小值

[maxvalue n] --最大值

[cycle/nocycle] --序列是否可以循环再取

[cache n] --序列的缓存

十四、触发

create trigger 触发器名称

--序列:可以供多个用户来产生唯一数值的数据库对象,提供有规律的数值
create sequence emp2_seq
increment by 1 --设计序列的步长
minvalue 1 --最小值
maxvalue 9999999 ---最大值
start with 1 --起始值
nocycle --是否循环
cache 20 --缓冲 一般设置为20
--使用序列
--获取序列的下一个值 通过 序列名.nextval
insert into emp2 values(null,'MORRIS','CLREK',7499,'10-2月-1981',1100,50,10)
select * from emp2
--获取序列的当前值
select emp2_seq.currval from dual

--触发:在执行某一动作的时候,触发其他动作的执行
create or replace trigger emp2_trg --创建触发
before insert on emp2 --在emp2表插入之前触发
for each row --循环每一行
declare
begin
select emp2_seq.nextval into:new.empno from dual; --查询序列中的下一个值,into赋值给新的主键
end emp2_trg;

十五、索引

--创建索引
create index ename_index on emp(ename)

--删除索引

drop index ename_index

十六、PLSQL基础

赋值符号:  :=

引用类型:  V_name table_name.column_name%type

声明式记录类型:  Type record_name is record(

          v_name type(number),

          ......

       );

引用式记录类型:v_emp emp%rowtype;

选择结构:

  if...then...

  elsif...then...

  else....

  end if;

case结构:

  case ... when...then ...

  when...then...

  else...

  end case;

循环结构:

  loop...exit when...end loop;

  while... loop...end loop;

  for v_i (计数器) in [reverse] 下限...上限 loop...end loop;

goto顺序结构:

  通过标签跳转,一般用于结束循环

  注意:标签不能紧邻end;

十七、游标

显式游标:

  1. 声明游标:cursor 名字(参数...) is 查询语句(where条件);
  2. 打开游标:open 名字(参数...);
  3. 提取游标数据:fetch 名字 into 记录类型变量/变量列表;
  4. 关闭游标:close 名字;

例子: declare

      cursor emp_cur is select * from emp;

      vemp emp%rowtype;

   begin

      open emp_cur;

      fetch emp_cur into vemp;

      while emp_cur%found loop

        dbms_output.put_line(vemp.empno||"  "||vemp.ename);

        fetch emp_cur into vemp;

      end loop;

      close emp_cur;

      end;

带返回值的游标:

带参带返回值:

declare

cursor emp_cur(vjob varchar2)

 return emp%rowtype   --设置返回值类型,用于规定select查询结果

is select * from emp

where job=vjob;

vemp emp%rowtype;

begin

open emp_cur('CLERK');

loop

fetch emp_cur into vemp;

exit when emp_cur%notfound;

if vemp.sal <1200 then

update emp set sal=sal+50 where empno = vemp.empno;

end if;

end loop;

end;

FOR循环游标:

for 接收变量 in 游标名字(参数...) loop

..........

end loop;

接收变量不需要声明!不需要打开游标!

declare

cursor emp_cur(vdname varchar2) is select * from emp where deptno =

(select deptno from dept where dname=vdname);

begin

-- open emp_cur('SALES'); 隐含打开游标啊

for vemp in emp_cur('SALES') loop

--隐含提取游标

dbms_output.put_line('员工编号为:'||vemp.empno||',姓名为:'||vemp.ename||',职位为:'||vemp.job||',工资为:'||vemp.sal);

--隐含关闭游标

end loop;

end;

begin

for vemp in (select * from emp) loop

dbms_output.put_line('员工编号为:'||vemp.empno||',姓名为:'||vemp.ename||',职位为:'||vemp.job||',工资为:'||vemp.sal);

end loop;

end;

 隐式游标:

begin

update emp set comm=500 where empno=7499;

-- if sql%found then

--DBMS_OUTPUT.PUT_LINE('更新数据成功!');

--end if;

if sql%rowcount>0 then

DBMS_OUTPUT.PUT_LINE('更新数据'||sql%rowcount||'条成功!');

end if;

end;

游标变量:

定义:type 类型名 is ref cursor [返回类型]

声明:变量名 类型名

打开:open...

提取:fetch ...into...

关闭:close...

十八、异常处理

分为:系统异常和手动异常

手动异常:

declare

too_data_nofind exception; --声明异常  关键字exception

begin

update emp set sal=sal+1 where deptno=50;--一个没有不能找到的条件

if sql%notfound then

raise too_data_nofind;--抛出异常,关键字raise

end if;

--抛出异常后代码不会被执行

dbms_output.put_line('今天天气不错,适合游泳!');

exception

when too_data_nofind then --匹配异常

dbms_output.put_line('找不到此部门中的人!!');

end;

十九、存储过程及函数

区别就是存储函数有返回值。

create [or replace] procedure/function 名字(参数...)

[return...]

as -- 相当于declare

begin

  ...........

  [return ...]

end 名字;

执行存储过程:exec 名字;

       或者begin 名字 end;

参数有in、out、in out之分。

Oracle数据库知识要点的更多相关文章

  1. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  2. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  3. Oracle 数据库 基础学习 (一) SQL基本知识

    Oracle 从零开始,不知所措.要掌握一种技能,最好的方式是先学会怎么使用它,然后再深入学习,先有样子,再有技术.   一,什么是数据库? 为什么需要数据库? 数据库实质上是一个信息的列表,或者是一 ...

  4. Oracle数据库的后备和恢复————关于检查点的一些知识

    当我们使用一个数据库时,总希望数据库的内容是可靠的.正确的,但由于计算机系统的故障(硬件故障.软件故障.网络故障.进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使 ...

  5. ORACLE数据库 DBA常用知识

    <常用命令参考> 个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off ...

  6. Oracle数据库入门——基础知识

    1.安装完成Oracle数据库后,使用sqlplus客户端登录数据库管理系统,只输入用户名,没有输入密码时,会提示口令为空,登录被拒绝. 请输入用户名:system 输入口令: ERROR:ORA-0 ...

  7. oracle11g之管理oracle数据库笔记(理论基础知识)

                                                                  第三章 管理oracle数据库 1.启动数据库步骤;(创建启动实例--> ...

  8. Oracle数据库,基础知识

    1.Oracle的五大约束条件: 1 主键  primary key2 外键  foreign key,3 唯一  unique,4 检测  check5 非空  not null 实例运用: -- ...

  9. Oracle数据库基本知识-原理,实例,表空间,用户,表

    1.数据库原理及sql 数据库:是人们存放数据,访问数据,操作数据的存储仓库. DB:数据库,按存储结构来组织,存储和管理的数据仓库 DBMS:数据库管理系统,管理数据库的软件 SQL:结构化查询语言 ...

随机推荐

  1. Spring MVC 的 XML 配置方式

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml solution/webapi/pom.xml solution/mapper/ ...

  2. Codeforces Round #483 (Div. 2) D. XOR-pyramid

    D. XOR-pyramid time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...

  3. jQuery-01:on live bind delegate

    摘自:https://www.cnblogs.com/moonreplace/archive/2012/10/09/2717136.html moonreplace这位大牛的 当我们试图绑定一些事件到 ...

  4. How to untar a TAR file using Apache Commons

    import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress ...

  5. ReactNative(三)——WebStorm的基本配置

    设置.js文件默认以jsx的语法打开 在没有进行设置的情况下,每次打开WebStorm的时候打开包含jsx语法的.js文件都会有以下提示: 当然我们点击转换后就可以了,但是每次都会提示,所以还是来一个 ...

  6. AJAX from S3 CORS fails on preflight OPTIONS with 403

    解决办法: 将 <!-- Sample policy --> <CORSConfiguration> <CORSRule> <AllowedOrigin> ...

  7. serialPort操作结构体Hashtable的使用

  8. 值得注意的CSS属性

    文本TEXT letter-spacing 字符间距 word-spacing 字间距 line-height 行高 text-decoration 修饰(下划线) text-indent 首行缩进 ...

  9. 你不知道的JavaScript--Item7 函数和(命名)函数表达式

    1.函数声明与函数表达式 在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier ...

  10. selenium--unittest 框架/selenium--常见异常

    selenium常见异常 from selenium import webdriver from selenium.webdriver.common.by import By from seleniu ...