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

Oracle序列 与 基本函数介绍的更多相关文章

  1. oracle 序列介绍

    序列介绍 序列是一个计数器,它并不会与特定的表关联.通过创建Oracle序列和触发器实现表的主键自增. 序列的用途一般用来填充主键和计数. 序列使用 1.创建序列 ORACLE序列的语法格式为: CR ...

  2. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    引用自 :http://www.2cto.com/database/201307/224836.html   Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...

  3. oracle序列在insert into 语句中的使用

    很多人创建了序列,但是在插入语句中不知道怎么使用,在此做个简单介绍. oracle序列有两个参数:nextval和currval,使用的时候,需要输入sequence_name.nextval或seq ...

  4. oracle 序列中cache 有什么用途

    create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...

  5. Oracle Merge into 详细介绍

    Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...

  6. oracle序列

    一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...

  7. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

  8. 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列

    程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...

  9. Oracle序列使用:建立、删除

    转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...

随机推荐

  1. tensorflow 单机多GPU训练时间比单卡更慢/没有很大时间上提升

    使用tensorflow model库里的cifar10 多gpu训练时,最后测试发现时间并没有减少,反而更慢 参考以下两个链接 https://github.com/keras-team/keras ...

  2. 操作系统systemctl命令

    目录 预热 管理单个 unit 查看系统上的 unit 管理不同的操作环境(target unit) 检查 unit 之间的依赖性 相关的目录和文件 systemctl daemon-reload 子 ...

  3. out string

    示例 当希望方法返回多个值时,声明 out 方法很有用.使用 out 参数的方法仍然可以将变量用作返回类型(请参见 return),但它还可以将一个或多个对象作为 out 参数返回给调用方法.此示例使 ...

  4. urllib模块中parse函数中的urlencode和quote_plus方法

    本来只是向看一下quote_plus的作用,然后发现urlencode方法也是很方便的一个组合字符串的方法首先是介绍一下urlencode,他是将一些传入的元素使用&串联起来,效果如下: &g ...

  5. 优化API接口响应速度

    前言 API接口响应慢? SLA一直提不上去? 其实这是后端程序员想进阶必须要跨过去的坎:就是把它优化掉. 那么这其中到底有没有套路呢?答案是:有的. 本文将介绍目前正在用并且十分“无脑”有效的这个套 ...

  6. 2013.4.30 - KDD第十二天

    早上来实验室,本来打算向秦师兄要文献的,不过秦师兄上午不在,所以就没有联系他.于是就开始调试郑茂的代码,发现原来那个itoa函数不是标准库里面 的,所以可能只有windows上可以用.然后我就在打电脑 ...

  7. 用js刷剑指offer(从1到n整数中1出现的次数)

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  8. python3 操作 hive 安装依赖包整理

    安装依赖pip install saslpip install thriftpip install thrift-saslpip install PyHive windows安装sasl报错,解决方案 ...

  9. selenium常用的API(二)浏览器窗口设置

    浏览器窗口最大化 # encoding=utf-8 from selenium import webdriver driver = webdriver.Ie(executable_path=" ...

  10. java中List与数组的转换

    1.数组转换成List public static <T> List<T> asList(T... a) String[] arr = new String[] {" ...