oracle 10g 自带dba_views 表,Oracle序列 与 基本函数介绍

[TOC]

Oracle序列 与 基本函数介绍

常用词汇

expire [ɪkˈspaɪə(r)] v. 失效,终止;到期;

数据字典(data dictionary:dd)

描述逻辑存储结构和物理存储结构的数据表,还包括描述其他数据对象信息的表:

数据字典名称

说明

dba_tablespaces

关于表空间的信息

dba_ts_quotas

所有用户表空间限额

dba_free_space

所有表空间中的自由分区

dba_segments

描述数据库中所有段的存储空间

dba_extents

数据库中所有分区的信息

dba_tables

数据库中所有数据表的描述

dba_tab_columns

所有表、视图以及簇的列

dba_views

数据库中所有视图的信息

dba_synonyms

关于同义词的信息

dba_sequences

所有用户序列信息

dba_constraints

所有用户表的约束信息

dba_indexs

数据表中所有索引的描述

dba_ind_columns

所有表及簇上压缩索引的列

dba_triggers

所有用户的触发器信息

dba_source

所有用户存储过程信息

dba_data_files

查询关于数据库文件的信息

dba_tab_grants/privs

查询关于对象授权的信息

dba_objects

数据库所有对象

dba_users

关于数据库中所有用户的信息

-- 清空屏幕

clear

clear screen

create user tester identified by abc123;

grant connect,resource to tester;

conn tester/abc123@mydog

-- 查询数据库中所有用户的信息

Select * from user_tables;

oracle序列技术理解

sequence(序列,是一个对象,和表是平级的,专门用来做自增)

在高级数据中,自增是一个独立的部件,而不是字段的辅助属性

idenitity,auto_increment

oracle的自增跟普通的数据库的自增不一样,它是通过对象来自增的,这个对象叫序列

oracle数据库有一种表叫user_sequences,专门保存了一种专门用来做自增的部件

查看用户是否有序列存在

select count(*) from user_sequences;

在oracle中,如果不from某张表,是无法进行任何操作的 为了凑足语法,oracle专门准备一张表(dual),一个字段一行记录

-- sysdate是一个日期函数

select sysdate from dual;

conn tester/abc123@mydog

create sequence seq_stu_no;

select count(*) from user_sequences;

-- 需要先查询nextval,不然就没有当前值

select seq_stu_no.nextval from dual;

select seq_stu_no.currval from dual;

create table tbl_student(

stu_no int primary key,

stu_name varchar2(30) not null

);

-- oracle的自增是一个对象,这个对象是序列

insert into tbl_student values(seq_stu_no.nextval,'mary');

insert into tbl_student values(seq_stu_no.nextval,'davud');

insert into tbl_student values(seq_stu_no.nextval,'jenny');

insert into tbl_student values(seq_stu_no.nextval,'mike');

-- 创建用户tester序列

create sequence tester.seq_xyz;

select * from user_sequences;

create sequence seq_desk_no

minvalue 1000

maxvalue 2000

increment by 100;

select * from user_sequences;

select seq_desk_no.nextval from dual;

select seq_desk_no.currval from dual;

alter sequence seq_desk_no cache 10;

alter sequence seq_desk_no increment by 2;

select seq_desk_no.nextval from dual;

select seq_desk_no.currval from dual;

drop sequence seq_desk_no;

账号管理

用户管理

select * from dba_users;

select * from dba_users order by user_id desc;

alter user hr identified by abc123;

conn hr/abc123@mydog

-- 因为账户被锁定,所以无法登录

-- 解锁账户

alter user hr account unlock;

conn hr/abc123@mydog

conn sys/manager@mydog as sysdba

alter user hr account lock;

-- 锁定离职员工账户

conn sys/manager@mydog as sysdba

-- password expire:用来设置用户口令过期,失效,强制用户登录数据库时候必须修改口令

create user tester2 identified by abc123 password expire;

grant connect,resource to tester2;

select * from dba_users;

conn tester2/abc123@mydog

-- 然后需要修改密码,验证密码,进入tester2账户

conn scott/tiger@mydog

select table_name from user_tables;

select * from emp;

-- 描述表的结构

desc emp;

基本函数介绍及应用

单行函数(字符函数)

conn scott/tiger@mydog

-- 小写字符转大写

select upper('smith') from dual;

-- 大写字符转小写

select lower('TOM') from dual;

-- 取整函数,四舍五入

select round(4.5) from dual;

-- emp是scott用户的专属表

select * from emp where DEPTNO<>'10'; -- 会排除掉DEPTNO所有值是10的行数据

select (sysdate-hiredate)/365 from emp;

select round(sysdate-hiredate)/365 from emp;

select round((sysdate-hiredate)/365) work_years from emp;

select empno,ename,round((sysdate-hiredate)/365) work_years from emp;

-- 获取两个时间之间的月份

select months_between(sysdate,hiredate) months from emp;

-- 时间转字符串,只转年份

select to_char(hiredate,'yyyy') from emp;

select to_char(hiredate,'yyyy-mm-dd') from emp;

select * from emp;

select sal+comm from emp;

-- 如果comm列中有空值,则用0来代替

select empno,ename,sal,nvl(comm,0) from emp;

-- decode形成if--else语句

select empno,ename,sal,nvl(comm,0),deptno,

decode(deptno,

10,'总部',

20,'销售部',

30,'研发部',

'---') dept from emp;

select empno,ename,sal,nvl(comm,0),deptno,

case

when deptno = 10 then '总部'

when deptno = 20 then '销售部'

when deptno = 30 then '研发部'

else

'----'

end

as deptinfo

from emp;

海韵听心

PL/SQL Developer中文字段显示乱码

原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的。

解决步骤

1、查看oracle数据库字符集:

sql语句:

select userenv('language') from dual;

结果集:

AMERICAN_AMERICA.ZHS16GBK

2、新建环境变量

我的电脑(右键-属性) - 高级系统设置 - 高级 - 环境变量 - 系统变量 - 新建

变量名:NLS_LANG

变量值:与oracle数据库字符集一致

3、重启pl/sql developer

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值