Oracle数据库的使用与基本讲解

Oracle数据库的使用

一、VMware

VMware是一款功能强大的虚拟机软件,且深受广大程程序员喜爱,但是它是收费的
PS: 与之相似的软件virtualBox(免费的,但功能一般)

二、Oracle

1.Oracle的安装

2.Oracle的简介

  • 是Oracle公司出产测一款关系型数据库,且性能全球排名第一,且适应于大型商业项目,且是按点收费的,且默认的端口号是1521,且是支持pl/sql数据库脚本编程的
  • PS:Oracle分为客户端与服务端
  • ps: 在正常的商业项目开发中,作为程序员我们只是安装客户端,或者用强大的第三方查询分析器也可以实现不安装客户端

3.数据库语言的简介

SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)

3.1)DDL:

CREATE DATABASE(创建数据库)   
CREATE TABLE(创建数据库表格)  
ALTER TABLE(修改数据库表格)
DROP TABLE(删除数据库表格)    
CREATE VIEW

3.2) DCL : (Data Control Language)

是数据库控制语言,是用来设置或者更改数据库用户或者角色权限的语句,包括(grant,deny,revoke等)语句
		GRANT  授权 :  可以把语句权限或者 对象权限 授予给其他用户和角色
		
		DENY   拒绝授权  :  用于拒绝给当前数据库内的用户或者角色授予权限,
并防止用户或角色通过其组或角色成员继承权限
    
    	REVOKE 撤销授权   :  REVOKE语句是与GRANT语句相反的语句,它能够
将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用
户或者角色从其他角色中作为成员继承过来的权限

3.3)DML :

CRUD : 即是select 、 update 、insert 、delete

3.4)TCL:

事物控制语言
	SAVEPOINT  设置保存点 ,保存点”就像是一个标记,标记事务中的某个点以便
将来可以回滚,用来将很长的事务划分为若干个较小的事务,它与回滚一起使用以回滚
当前事务部分;
    简而言之就是:标记 
 	
 	ROLLBACK   回滚 用于事务出错时回滚数据; 
 	
 	COMMIT     提交

4.Oracle数据库.dmp数据文件的导入导出

4.1)导入

	1.Oracle数据库数据的导入可以通过.sql这一页的库表文件,当然也可以通过数
据泵的形式(本质上就是在黑窗体下通过命令行实现)
	2.Oracle数据库的库表文件可以是xxx.sql形式也可以是xxx.dmp形式
执行命令:

   种类一:imp userid=用户名/密码@orcl file=d:\nc60.dmp full=y ignore=y

      解释

        用户名 : 就是你的目标用户 。
        密码 : 就是你的目标用户登录密码。
        orcl : 是实例名称 就是数据库名。
        file : 就是你要导入的dmp文件全路径。
        full=y : 是否全部导入 只有当前用户是dba的时候 才能用此选项 。
        ignore=y : 有的表已经存在,然后他就报错,对该表就不进行倒入.在后面
加上Ignore=y就可以了。


   种类二:
       当别人在他机器上以abc用户导出一个db.dmp文件时 本地电脑用efg用户身份导入:
	imp user/pass@orcl file=db.dmp  fromuser=abc touser=efg ignore=y
	

4.2)导出

	导出工具exp

	它是操作系统下一个可执行的文件,存放目录/Oracle_Home/bin.

	exp导出工具将数据库中数据备份压缩成一个二进制系统文件,可以在不同的OS间迁移.
	
它有三种模式:

	a. 用户模式:导出用户所有对象以及对象中的数据.

	b.表模式: 导出用户所有表或者指定表.

	c.整个数据库: 导出数据库中所有对象.

例子(用户名system,密码manager):

1. 将数据库test完全导出,导出到D:tianma.dmp

    exp system/manager@test  file=d:\tianma.dmp full=y

2. 将数据库中的system用户与sys用户的表导出

	exp system/manager@orcl file=d:\tianma.dmp owner=(system,sys)

3. 将数据库中的表student,class导出

	exp system/manager@orcl file=d:\tianma.dmp tables(student,class)

4.将数据库中student表中filed字段以”00”开头的数据导出

	exp system/manager@test file=d:\tianma.dmp tables(student)
    	query=”where filed like ‘00%’”


PS:
	oracle数据库中的数据是可以导出成xxx.sql这样的库表文件,但是一般情况是不用,
为什么因为麻烦而且速度慢 

关键字       说明(默认)
---------------------
UserId    用户名/口令

Full      导出整个文件(N)

Buffer  数据缓冲区的大小

Owner 所有者用户名列表

File    输出文件(ExpDat.dmp)

Tables    表名列表

Compress  导入一个范围(Y),实现压缩,相当于用winzip把dmp文件很好的压缩。

Recordlength IO   记录的长度

Grants   导出权限(Y)

Inctype   增量导出类型

Indexs   导出索引(Y)

Record 跟踪增量导出(Y)

Rows    导出数据行(Y)

Parfile   参数文件名

Constraints  导出约束(Y)

Consistent  交叉表一致性

Log  屏幕输出的 日志文件

Statistics  分析对象(Estimate)

Direct  直接路径(N)

Triggers  导出触发器(Y)

FeedBack  显示每x行(0) 的进度

FileSize   各转出文件的最大尺寸

Query  选定导出表子集的子句

 
下列关键字仅用于可传输的表空

Transport_Tablespace    导出可传输的表空间元数据(N)

Tablespace      将传输的表空间列表

5.PL/SQLDeveloper

是一款Oracle的查询分析器且是收费的,但功能强大,并支持pl/sql数据库脚本的编写和执行的,且是可以通过它和Oracle的客户端实现连接Oracle的服务端
	pl/sql:也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。
PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,
所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、
循环等操作实现复杂的功能或者计算的程序语言。
	可以简单的理解为辅助sql的且是写在数据库端的可以编程的脚本语言
	所以pl/sql就是过程化语素和sql语句的混合语言
	
PS: PLSQL就是一种用来增加sql语句功能的在oracle数据库端的编程语言

6.plsql基本语素

--1.创建一张表
    create table test20210202(
    qid   varchar2(10) primary key,
    qname varchar2(20)

    );
	select * from test20210202;


--2.pl/sql的基本使用自:基本壳的简单使用
declare  --定义

begin   --标识出当前是plsql语句的主题内容
  delete test20210202;
  commit;--提交:提交事务,如果在plsql中只是执行了delete,
  		--没有执行commit的话那就是意味着并没有真实的去删除这张表,
  		--但是在plsqldeveloper工具中通过select是查询不出效果的
end;--结束plsql语句的标识
select * from test20210202;


--3.plsql的控制台输出
declare
begin
  dbms_output.put_line('hello world');--pl/sql中的基本输出语句

end;


--4.变量的声明和赋值
declare
  hi  varchar2(400):='hello';
  --这里的单引号相当于java中的双引号的作用 ,  :=相当于=的作用意思为赋值
  src varchar2(400):=null;
  --相当于是Java中的 String  src=null; 赋初值为null这样的一个空对象
begin
   src:='Jack';
   dbms_output.put_line(''||hi||','||src||''); 
   --||即连字符 相当于java中的(""+id+","+name+"")   
end;


--5.循环语句 
--5.1 for循环 九九乘法表
declare
  
begin
      for i in 1..9 loop
              for j in 1..i loop
                 dbms_output.put(j||'x'||i||'='||(j*i)||'  '); 
                 end loop;
               dbms_output.put_line(''); 
      end loop;
end;


--5.2 while循环
--floor():oracle数据库中的一个函数,其意思为向下取整
declare 
 num number:=10;--number:指的是当前变量num的数据类型是数字型
begin
  while num>=1 loop
    num:=floor(num/2);
    dbms_output.put_line(num); 
    end loop; 
end;


--5.3 do while循环
declare 
num number :=100;
begin 
   loop
        num:=ceil(num/2);
        dbms_output.put_line(num);  
        exit when num<=5;
    end loop; 
end;


--6.if选择
--PS:to_char():将数据类型转换为char类型
declare
  now date:=sysdate+1;--date:是oracle数据库中的一种数据类型,且意思为日期类型
begin
  
if to_char(now,'mm')='03' then 
   dbms_output.put_line('28/29天');
   elsif to_char(now,'mm')='01' then
     dbms_output.put_line('31天');
     else 
     dbms_output.put_line('32天');
     end if;
end;

7.数学类的内置函数

--1.1abs()取绝对值
	select abs(-100)  from dual;
	--dual是oracle的内置的一张空表并没有规定好的行和列

--1.2ceil():向上取整
	select ceil(3.1)  from dual;

--1.3floor():向下取整
	select floor(3.9) from dual;

--1.4mod():取余数
	select mod(10,3)  from dual;

--1.5POWER()  返回n1的n2次方:幂运算
	select power(2,10) from dual;

--1.6SIGN  取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 :其实就是取结果的符号值
	select sign(1-3)  ,sign(3-1)  ,sign(3-3)  from dual ;

--1.7ROUND(四舍五入)
	select round(55.9)  ,round(55.4)  from dual;

--1.8trunc():只舍不入
	select trunc(55.9) ,trunc(55.4)  from dual;

--1.8.1trunc(v1,v2):通过v2的值设定trunc的舍弃的标准,即是如果v2是
--正数代表小数点后几位,负数代表小数点前几位
	select trunc(126.187,-2), trunc(123.987,2)  from dual;
	

8.日期类的内置函数

--2.1SYSDATE:获取系统的当前日期
	select sysdate from dual;

--2.2向前推算即减去,向后推算即加上
	select sysdate -1*7 from dual;


--2.3ADD_MONTHS(sysdate,-1) 增加或减去月份  负数减去  正数增加
	select add_months(sysdate,-1) from dual;


--2.4求两个日期的差  单位是天  直接加减处理就可以
	select  floor(  abs( (to_date('2-3月-20')-sysdate) ))/7 from dual;

--2.5 MONTHS_BETWEEN(date2,date1)  给出date1与date2间隔的月份数
	select months_between(to_date('2-5月-20'),sysdate) from dual;

--2.6trunc():舍弃日期
	select sysdate, trunc(sysdate)  ,trunc(sysdate,'y'),
    	trunc(sysdate,'hh')  from dual;

--2.7 last_day(date)个月的最后一天
	select last_day(sysdate) from dual;

--2.8next_day(date,'星期五')
	select next_day(sysdate,'星期五') from dual;

9.字符串类的内置函数

--3.1CHR  给出字符的ascii码  返回该字符
	select ascii('A')  ,chr(65)  from dual;

--3.2INITCAP  驼峰
 --3.2.1让给定的字符串首字母变大写 中间包含特殊字符的间隔开来 特殊字符后
 --的字符串首字母大写
   	select initcap('siMth*aPPle')  from dual;
 
 --3.2.2如果没有特殊字符则正常的情况是只是首字母变为大写的
   	select initcap('siMthaPPle')  from dual;
   
--3.3LOWER  返回字符串,并将所有的字符小写
    select lower('abcEFG') from  dual;
    
--3.4 UPPER  返回字符串,并将所有的字符大写
    select  upper('abcE') from  dual;

--3.5RPAD和LPAD  RPAD 在列的右边粘贴字符 LPAD 在列的左边粘贴字符
     --在给定的字符串左边或者右边填充字符,填充给定位数的字符
     --如果超出给定位数 会自动按给定位数截取下来
     select rpad('gao',6,'*') , rpad('gaoooooooo','5','*')   from dual;
          
--3.6 
	--去除空格
	select trim('    abc  ')   from  dual;
	
	--去除左边的空格
	select ltrim('  abc')  from dual;

	--如果加上第二个参数就是截取的意思
	select ltrim('abcef',  'abpt') from dual;

	--因为从左边开始没有与第二个参数匹配的所以就没有变化,也就是没有截取
	select ltrim ('abcef','efg')  from dual;

	--ltrim(x,y) 函数是按照y中的字符一个一个截掉x中的字符,
	--并且是从左边开始执行的,只要遇到y中有的字符, x中的字符都
	--会被截掉, 直到在x的字符中遇到y中没有的字符为止函数命令才
	--结束,rtrim()意思是与之相反
   
   
--3.7LENGTH  返回字符串的长度
   	select length('123')  from dual;
  	--3.7.1拓展函数lengthb  英文算1个长度 中文算2个长度
   	select lengthb('abc') ,lengthb('中国你好')  from dual; 
   
--3.8INSTR(C1,C2,I,J)  在一个字符串中搜索指定的字符,返回发现指定的字符的位置; 
  --C1 被搜索的字符串 
  --C2 希望搜索的字符串 
  --I 搜索的开始位置,默认为1 负值代表从右往左找
  --J 出现的位置,默认为1
  --给定搜索位置是负数的时候  从右向左找
  --但是截取的方向还是从左向右方向截取
  --出现的位置不能为负数  否则找不到
  select instr('oracle training','r',1,1), 
  		instr('oracle training','r',-1,1) from dual;
   
--3.9SUBSTR(string,start,count)  取子字符串,从start开始,取count个
   --start负值 从右往左数  从左往右取
    select substr('123456789',2,3),  substr('123456789',-5,3)  from dual;
   
   
--3.10REPLACE(  string 希望被替换的字符或变量 
               -- s1 被替换的字符串 
                --s2 要替换的字符串 )  
   select replace('the ,there, theme' ,'he','i')  from dual;     
   

10.基本函数类型转换

--4.1to_date():将字符型转换为之日期型
	select to_date('29-3月-19')  from dual;

--4.2to_char():将日期型转换为字符型
	select to_char(sysdate,'yyyy-dd-mm') from dual;
	
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值