Oracle序列 与 基本函数介绍
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序列 与 基本函数介绍的更多相关文章
- oracle 序列介绍
序列介绍 序列是一个计数器,它并不会与特定的表关联.通过创建Oracle序列和触发器实现表的主键自增. 序列的用途一般用来填充主键和计数. 序列使用 1.创建序列 ORACLE序列的语法格式为: CR ...
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
引用自 :http://www.2cto.com/database/201307/224836.html Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...
- oracle序列在insert into 语句中的使用
很多人创建了序列,但是在插入语句中不知道怎么使用,在此做个简单介绍. oracle序列有两个参数:nextval和currval,使用的时候,需要输入sequence_name.nextval或seq ...
- oracle 序列中cache 有什么用途
create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...
- Oracle Merge into 详细介绍
Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...
- oracle序列
一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...
- oracle 序列 详解
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 创建序列: 1. 要有创建 ...
- 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列
程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...
- Oracle序列使用:建立、删除
转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...
随机推荐
- Core Animation笔记(特殊图层)
1.shapeLayer: 渲染快速,内存占用小,不会被图层边界裁掉(可以在边界之外绘制),不会像素化(当做3D变化如缩放是不会失真) CGRect rect = self.containerView ...
- 导出带图片的Excel——OOXML文件分析
需求: 普通js导出文件excel具有兼容性问题,通过js-xsl导出文件API未找到导出图片的方案,实例过少,因此针对07年后以.xlsx后缀的excel文件,通过修改后缀.zip参考文件模板来实现 ...
- java线程的生命周期及五种基本状态
一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...
- C# is与 java instanceof 作用相同
c#中 is 检查对象是否与给定类型兼容. 例如,下面的代码可以确定对象是否为 MyObject 类型的一个实例,或者对象是否为从 MyObject 派生的一个类型: if (obj is MyObj ...
- 【转】高性能网络编程1----accept建立连接
最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它. 编写服务器时,许多程序员习惯于使用高层次的组件.中间件(例如OO(面向对象)层层封装过的开源组件),相比 ...
- OpenStack是什么,OpenStack详解
1. OpenStack是什么 OpenStack官方的解释很官方,而且从不同角度,也有不同的理解,OpenStack可以理解为一个云操作系统 OpenStack旗下包含了一组由社区维护的开源项目,他 ...
- linux 的常用命令(1)
1.关于ls [选项][目录名] -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件的详细信息-c 根据ct ...
- redis开发相关
1.为什么要用缓存,缓存的使用场景2.redis数据存储类型 string/list/set/hash/sort set(zset)3.redis的常用数据类型,使用方式4.redis实现的跳跃表是什 ...
- LGOJ P2048 [NOI2010]超级钢琴
题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中A ...
- redis都有哪些数据类型?分别在哪些场景下使用比较合适?
(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象 ...