Oracle 基础

一.新建用户

a.创建表空间

create tablespace _表空间名

datafile '__储存路径 '

size 20m 初始大小(自定义 单位:兆(m),(kb))

b.创建用户,将表空间分配给用户

create user 用户名 identified by ” _密码“

default table space _表空间名

c.登录(需要授权)

代码授权: grant connect , resource to 用户名

收回权限: revoke resource from 用户名

d.账号被管理员封了该怎么解封

  • 界面版

     

登陆超级管理员界面(sysdba)编辑scott解锁

  • 代码版

alter user 用户名 account unlock ---解锁

alter user 用户名 account lock ---上锁

二.oracle sql基础(数据管理)

Oracle 不区分大小写,与sql server不同的是Oracle只有一个数据库

a.数据类型

  • 1.字符 char,varchar2,long                                                                                                char: 固变 1~2000字节                                                                                              varchar2:可变长度 1~4000字节                                                                                          long: 可变长度 2GB长度(一般不用)

  • 2.数值 number:即是整数又是小数,默认整型                                                          number[(p[,s])] ==p精度,s小数位                                                                              number(5,2) == 共5位,其中小数位2位                                                                                    只要整型:number(5)

  • 3.日期时间 Date:存储日期、时间类型。                                                                               日期转换函数:to_date('2016-02-02','yyyy-mm-dd') 例:

    insert into tb_name(mydate) values(to_date('2016-02-02','yyyy-mm-dd hh:mi:ss'));
  • 4.储存二进制数据,比如图片、视频、声音文件等                                                                  Raw或Raw Long                                                                                                                  LOB (常用,就是所谓的大数据,最大4GB)                                                                      Clob:                                                                                                                                      Blob:                                                                                                                                  Bfile:                                                                                                                                   (一般不把图片、视频等存在数据库中,只是把它们存放在硬盘地址保存到硬盘。 存在数据库里,要转换,资源消耗多)

b.数据定义语言DDL

create table -- 创建表 

alter table -- 修改表

truncate table -- 删除表(删除数据,保留结构)

drop table -- 删除表(删除结构和数据)

c.数据操纵语言DML

insert -- 与sql server一致

delete -- 与sql server一致

update -- 与sql server一致

select -- 与sql有些不一样

d.事务控制语言TCL

commit -- 提交

rollback -- 回滚

savepoint -- 回滚的点

e.数据控制语言DCL

grant -- 授权

revoke -- 撤销授权

f.SQL操作符

1.算术运算符 + , - , * , /

SQL server语句: select sid,sname,sex+'生' from tb_name --看这案例,在SQL Server中这句话没问题 在oracle中会报错:ORA-10722:无效数字 在Sql Server中“+”既有算术作用,也有字符串拼接作用; 但在Oracle中,“+”就只有算术作用。

2.比较运算符 = ,!= ,< ,> , <= , >= ,between and ,in , ike , is null

3.逻辑运算符 not ,and, or

4.集合运算符 union行合并,union all

5.连接操作符 || 用来连接字符串

g.伪表dual与伪列rowid,rownum

  1. 伪表: select 'a' from dual;

  1. 伪列: select * from tb_name --如果结果集中出现三列,其实它有五列,还有两个列:rowid、rownum --rowid:唯一标识符,这是系统给的,不是我们自己定义的 --rownum:有点类似sql中的row_number()方法

    怎么查看? select t.,rowid from tb_name t; select t..rownum from tb_name t;

    注意:在Oracle项目中,一般都使用rownum做分页。

    --这两个可以同时用吗?可以
    select t.*,rowid,rownum from tb_name t
    --求前两条记录(Oracle不支持top)
    select a.*,rownum from emp a
    where rownum<3
    ​
    --求第3、4条记录(注意:rownum只能作用于小于号)
    --解决办法:rownum是a表的伪列,把这伪列变成实列
    select * from
    (
        select a.*,rownum rid from emp a
    ) t where rid>2 and rid<5

三.函数

a.数字函数

  1. 四舍五入 round() 

    select round(54.345,2) from dual;
    54.35 精确到小数点后2位 
  2. 取整 trunc() 

    select trunc(45.67) from dual;
     45 没有四舍五入功能 

  3. 求模 mod() 与java中的%一样                                                                                           select mod(11,7) from dual;

  4. 开方 power() 

    select power(5,2) from dual; 
    --25 求5的2次方
  5. 开根号 sqrt()                                                                                                                      select sqrt(4) from dual;

  6. 判断值的正负数 sign() 正数返回1,0返回0,负数返回-1(以后常用) 

    select sign(10) from dual;
    --返回值是1

b.日期函数

  1. 获取系统当前时间 systimestamp

    select systimestamp from dual; 

    结果比较长,格式是格林乔治时间

  2. 取月份实现加月份 add_months() 

    select add_months(sysdate,3) from dual;
    -- 在当前系统时间月份上加3
    select add_months(to_date('2015-12-12','yyyy-mm-dd'),3) from dual; 
    --在2015-12-12的月份上加3
  1. 取(年月日) extract() 

    select extract(day from sysdate) from dual; 
    --取当前系统的日
    select extract(month from sysdate) from dual; 
    --取当前系统的月

c.字符串函数

  1. 字符串截取 substr()

     select substr('abcdefg',2,4) from dual;
    -- 结果:bcde 从第2位开始截,截4个; 
    --注意,java中字符串下标是从0开始,Sql和oracle中字符串下从标是1开始
  2. 求字符串长度(个数) length() 与中英文所占字节无关 

    select length('abc') from dual;
    -- 结果:3
  3. 查找字符位置 instr() 从第几位开始找哪个字符,类似于java中的charindex(),SQL Server中的indexof()

     select instr('abcadefag','a',4) from dual; 
    --结果:4
  4. 连接 concat()                                                                                                                    select concat('a','b') from dual; 结果:ab

  5. 替换 replace()                                                                                                                          select replace('abcdefg','a',9) from dual; 结果:9bcdefg

  6. 左填充 lpad()                                                                                                                              select lpad('abc',10,'6') from dual; --10是字符串总长度 结果:6666666abc

  7. 右填充 rpad()                                                                                                                            select rpad('abc',10,'6') from dual; 结果:abc6666666

  8. trim() 有两个意思:去除字符串两边的空格 去除字符串两边指定的字符 语法:trim('字符1' from '字符串2')                                                                                                                  select trim('a' from 'aabbbccdda') from dual; 结果:bbbccdd

  9. ASCII码对应的字符 chr()                                                                                                           select chr(97) from dual; 结果:a

  10. 字符对应的ASCII码 ASCII()                                                                                              select ascii('a') from dual; 结果:97

11 .decode()                                                                                     decode(value,if1,then1,if2,then2,if3,then3,...,else)

表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,decode()只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使decode()函数具备大于、小于或等于功能。

select decode('a','a',1,'b',2,'c',3) from dual;

d. 其它函数

  1. 转换空值函数

    nvl(exp1,exp2) 如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。 select ename,nvl(comm, -1) from emp;

nvl2(exp1,exp2,exp3) ​ 如果该函数的第一个参数为空那么显示第三个参数的值,如 果第一个参数的值不为空,则显示第二个参数的值。 select ename,nvl2(comm,-1,1) from emp;

nullif(exp1,exp2) 如果exp1和exp2相等则返回空(NULL),否则返回第一个值。 select ename,nullif(comm,-1) from emp;

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值