欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracel笔记第一天

程序员文章站 2022-06-02 16:56:50
...

sqlplus sys/sys as sysdba;

oracel 特点

  • 收费

  • 安全性高

  • 存储量大,处理快

  • 可移植型强

  • 检查当前用户环境编码
    select userenv(‘language’) from dual;

oracel 数据库中用户的角色

  • connect
  • resoucrce
  • dba

oracel体系结构

  • 1数据库–>多个实例(进程)
  • 2实例包含多个表空间和多个用户,用户和表空间是同级的
  • 3用户管理表

MySQL和Oracel的区别

mysql:一个用户–>多个库–>表
oracel:一个数据库–>多个用户–>表

oracel空间表的操作

创建表空间
create tablespace itheima10  -- 创建表空间
datafile 'c:\itheima10.dbf'  -- 表空间的物理文件地址
size 100m                    -- 表空间的默认物理大小
autoextend on                -- 自动扩展
next 10m;                    -- 每次扩展的大小

--删除表空间
drop tablespace itheima;


--创建用户
create user itheima10            -- 用户名
identified by itheima10          -- 密码
default tablespace itheima10;    -- 用户默认使用的表空间

--用户授权 
grant dba to itheima10;           --授权给用户

表结构

--创建表
create table person (id number,username varchar2(24),adderss varchar2(32)); --same

--修改表结构  
alter table 表名
add   modify  rename column...to....  drop column 


-- 删除表
drop table person;

数据类型

varchar2 number date clob blob

表数据的修改 注意事务的提交
insert update select delete

delete和truncate的区别
delete可以回滚,会产生碎片
truncate 直接删除表,然后再创建表

序列

  • 序列不属于任何一张表,逻辑上可以和表绑定,连续增长的数字,作用是生成和主键作用一样的
    序列第一次使用必须next ,打印的第一个值
    create sequence 序列名
    increment by n
    start with n

  • dual 虚标,为了补全语法

  • 解锁scott用户和密码
    alter user scott account unlock;
    alter user scott identified by tiger; 可以重置密码

函数

  • 单行函数:
    round trunc mod(m,n)

  • 数值函数
    sysdate months_between

  • 转化函数
    to_char to_date

  • 通用函数
    nvl(null,3)=3 nvl(4,5)=4

条件表达式

条件表达式
1
select e.ename
(case e.ename
when ‘tom’ then ‘刘德华’
when…then…
else…
end) 中文名
from emp e;
2
select e.sal,(
case
when e.sal>3000 then ‘high’
when e.sal>1500 then ‘mid’
else ‘low’
end

) “工资等级” from emp e;

查询

  • 分组查询
    1select * from 表 where 分组前条件 group by 分组条件 having 分组后条件;
    2分组查询出现在group by 后面的列,才能出现在select的后面

  • 聚合函数(多表函数)特点:把多行记录变成一个值

  • 所有的条件后面不能单独的使用别名(select后面的别名),因为select是在where的后面,having后面可以跟聚合函数的比较条件
    sql执行顺序:
    from where group by having select order by

  • 多表查询
    内连接:显式/等值(where),隐式(select * from table1 inner join table2)
    外连接:左外,右外

  • oracel的专用外连接
    (+)显示对面的所有数据

  • 子查询:把子查询的结果/结果集当作条件
    – where条件
    select * from emp e where e.sal>(select e.sal from emp e where e.ename = ‘ALLEN’)

    – select条件:只能有一个结果
    select e.*,(select d.dname from dept d where e.deptno = d.deptno) 部门名称 from emp e where e.ename = ‘ALLEN’

    – from 条件:返回多条记录的子查询可以把它的结果集当做一张表,给起个别名
    select msal,e.ename,d.dname
    from emp e,dept d,
    (select deptno,min(sal)msal from emp group by deptno) a
    where e.sal=msal and a.deptno=d.deptno;

  • 自连接:一个表的两个字段有关系,这个表可以当作两张表,但是必须使用别名。

  • rownum 称为伪列,是在where之前生成的,rownum则是在内存中当你查询结果集生成后追加到结果集上的一个列,这个列从1开始递增,当你过滤掉第一条数据时rownum的编号会继续从1开始排序,强调的是在你查询结果集经过过滤读入内存后追加在结果集上的列,只要有rownum就必须有rownum=1这个值。我们结合是用例子继续理解rownum

  • 任何时候想把 rownum = 1 这条记录抛弃是不对的,它在结果集中是不可或缺的。

分页的格式:

select * from
(select rownum r,e1.* from
(select * from emp e order by e.sal desc) e1) e2 where r>5 and r<11

相关标签: Oracel