oracle数据库简介

5. Oracle

5.1 后台的服务

OracleService服务名 :OracleServiceXE 数据库主服务
Oracle服务名TNSListener :OracleXETNSListener 监听服务 1521

5.2 连接oracle服务

  1. 用命令行(黑窗口)
    权限最高的用户 Sys
    管理员用户 System
    命令:sqlplus 用户名/密码
  2. 用网页管理
    http://127.0.0.1:8080/apex/f?p=4950
  3. 用第三方的工具
    plsql developer

修改oracle(web)服务的端口号
exec dbms_xdb.sethttpport(8083);
查看oracle(web)服务的端口号
select dbms_xdb.gethttpport() from dual;

5.3 oracle存储结构

表空间 - 逻辑单位
SYSTEM 表空间,用来存储系统表
TEMP 表空间,临时表空间
USERS 表空间,应用程序使用空间
表空间下在存储具体的表

5.4 创建和管理用户

create user 用户名 identified by 密码;

create user scott identified by tiger;

刚创建的用户没有权限,需要授权
grant 权限 to 用户名;

grant connect, resource to scott;

5.5 测试用户 hr

解锁hr用户
alter user hr account unlock;
alter user hr identified by hr;

5.6 查看有哪些表

select table_name from user_tables; 查询系统视图

5.7 查看表结构

desc 表名

5.8 建表

create table 表名(
列名 数据类型 约束,

);
数字类型: Number(有效数字最大位数, 小数点后位数)
Number(10) 长度最大为10的整数
Number(10,2) 整数部分最大8位,小数2位

可变字符类型
VARCHAR2(最大长度) 注意最大长度按字节处理, 一个汉字一般占3个字节(底层是utf-8)
NVARCHAR2(最大长度) 这回最大长度按字符为单位处理

日期
DATE 可以保存年月日,时分秒
TIMESTAMP 保留的日期信息更多
获取当前时间:sysdate, systimestamp

一般用 number(1) 代表布尔值,0代表false, 非0代表true

注意:oracle数据库中没有自增列

5.9 序列 sequence

create sequence 序列名;
从序列中获取值
select 序列名.nextval from dual;
插入时数据时使用序列
insert into 表(id, …) values (序列名.nextval, …);

5.10 dual 表

只有一行一列, 使用场景:当某个计算或某个函数只想调用一次的时候,必须配合dual表

select 1+1 from countries; // 返回多行2 ,太浪费
select 1+1 from dual; // 只会返回一个2

5.11 rownum 行号

作用,可以给查询结果做个一编号,
可以被看做特殊的列(伪列)

例子: 与 order by 使用时需要注意, 是先编号,再排序,所以结果与我们期望的不同

(select region_name from regions order by region_name) a

select rownum, a.region_name from (select region_name from regions order by region_name)a;

例子: 可以用做比较条件, 只能是< , <=但不能是=, >, >=

Argentina
Australia
Belgium
Brazil
Canada
Switzerland
China
Germany
Denmark
Egypt

select rownum, country_name from countries where rownum<10;

rownum 的应用: 分页

select c.* from countries c where rownum<=5;

(select c.*, rownum rn from countries c where rownum <=10) b

select * from (select c.*, rownum rn from countries c where rownum <=10) b where b.rn > 5;

完整的写法:三层嵌套子查询配合rownum实现分页
select * from
(select a., rownum rn from
(select * from 表 c order by 排序列) a
where rownum <= 页号
每页记录数) b
where b.rn > (页号-1)*每页记录数

例:
select * from
(select a.*, rownum rn from
(select * from countries c order by country_name) a
where rownum <= 15) b
where b.rn > 10;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值