oracle
Yuyuquan
专注于技术
展开
-
Oracle的ID如何自动递增?
将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表Create table t_user(Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6));----创建序列create sequence user_seqincrement by原创 2016-09-09 15:19:53 · 8411 阅读 · 0 评论 -
oracle 分页查询sql
分页查询(假设每页显示10条)不包含排序:--效率低select * from (select rownum rn, d.* from DJDRIVER d )p where p.rn=10;select * from (select rownum rn, d.* from DJDRIVER d )p where p.rn between 10 and 20;--效率原创 2016-09-19 11:57:22 · 285 阅读 · 0 评论 -
oracle 字符函数
--字符函数select substr('abcdefg',1,5)substr, --字符串截取 instr('abcdefg','bc') instr, --查找子串 'Hello'||'World' concat, --原创 2016-09-19 11:59:41 · 204 阅读 · 0 评论 -
orcale的to_number方法
--to_number(expr)--to_number(expr,format)--to_number(expr,format,'nls-param')select to_number('0123')number1, --converts a string to number trunc(to_number('0123.123'),2) number2原创 2016-09-19 12:04:02 · 1828 阅读 · 0 评论 -
oracle聚合函数
count:--count (distinct|all)select count(1) as count from student;--效率最高select count(*) as count from student; select count(distinct score) from student; 语句1结果:11avg--avg (distinc原创 2016-09-19 12:09:22 · 292 阅读 · 0 评论 -
数据库设计三大范式
数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分原创 2016-09-19 14:00:23 · 215 阅读 · 0 评论 -
oracle存储过程中is和as区别
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;在视图(VIEW)中只能用AS不能用IS;在游标(CURSOR)中只能用IS不能用AS原创 2016-09-19 14:03:28 · 1823 阅读 · 0 评论 -
oracle with as用法
with as语法–针对一个别名with tmp as (select * from tb_name)–针对多个别名with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_name3), …--相当于建了个e临时表with e原创 2016-09-19 14:11:35 · 2242 阅读 · 0 评论 -
Oracle控制语句(if , loop , while , for)
--if...then...elsif..then.. else...end if declare num integer; inputno number(10); begin inputno :='&请输入'; select sal into num from scott.emp whe转载 2016-09-19 16:07:08 · 1210 阅读 · 0 评论 -
case when then else end总结
查询生成统计列表: SELECT a.managecom, a.subtype, count(*) loadsucc, sum(case when a.state in ('4', '5', '6', '7', '8', '9') then 1 else 0 end) recogsucc,原创 2016-09-19 16:37:46 · 2094 阅读 · 0 评论 -
js中的Return的含义
总结:return false 只在当前函数有效,不会影响其他外部函数的执行。retrun true; 返回正确的处理结果。return false;分会错误的处理结果,终止处理。return;把控制权返回给页面。原创 2016-09-19 23:04:39 · 2845 阅读 · 0 评论 -
Oracle 游标使用
-- 声明游标;CURSOR cursor_name IS select_statement--For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare --类型定义 cursor c_job is select empno,ename,job,sal from e原创 2016-09-20 10:24:33 · 224 阅读 · 0 评论 -
oracle中nvl()函数
如果你某个字段为空,但是你想让这个字段显示0 nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……原创 2016-08-24 09:04:58 · 488 阅读 · 0 评论 -
Oracle内连接、外连接、右外连接、全外连接小总结
表TESTA,TESTB,TESTC,各有A, B两列AB00110A00220AAB00110B00330BAB原创 2016-09-25 10:52:23 · 1134 阅读 · 0 评论 -
Oracle 列转行函数 Listagg()
最基础的用法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)例如有这样一张表:FID FType FName1 DB MySQL1 DB Oracle现在我们需要得到以下结果:FID FType FName1原创 2016-09-25 11:07:40 · 15141 阅读 · 0 评论 -
sql中的dbl的含义
dbo是默认用户也是架构,dbo作为架构是为了更好的与2000兼容,在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为原创 2017-03-16 09:21:13 · 4104 阅读 · 0 评论 -
关于oracle性能优化的方法
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有 3 个以上的表连接查询, 那就需要选择交叉表 (intersection table)作为基础表原创 2017-03-28 17:26:17 · 1123 阅读 · 0 评论 -
oracle rownum相关
--rownum小于某个数时可以直接作为查询条件(注意oracle不支持select top)select * from student where rownum <3;--查询rownum大于某个数值,需要使用子查询,并且rownum需要有别名select * from(select rownum rn ,id,name from student) where rn>2;select原创 2016-09-19 11:55:24 · 209 阅读 · 0 评论 -
oracle常用数据函数sql
--绝对值:abs() select abs(-2) value from dual; --(2)--取整函数(大):ceil() select ceil(-2.001) value from dual; --(-2)--取整函数(小):floor() select floor(-2.001) value from dual; -原创 2016-09-19 11:33:01 · 194 阅读 · 0 评论 -
oracle中将一位数显示成两位数的函数
lpad(字段名,填充长度,填充的字符)是用来在指定字段左侧填充字符,比如select lpad('3',2,0) from dual; 就是在 3 这个基础上左侧补 0,一共是2位, 结果为 03原创 2016-08-29 20:13:56 · 2022 阅读 · 0 评论 -
oracle中数据前后空格的函数
去前后空格函数:select trim(' a aa ') from dual;select Ltrim(' a aa ') from dual;select Rtrim(' a aa ') from dual;select LTRIM(RTRIM(INVNo)) from dual;原创 2016-09-11 23:24:21 · 1491 阅读 · 0 评论 -
Oracle中的EXISTS与IN使用区别
使用EXISTS比使用IN通常查询速度快的原因:通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。 in和exists in 是把外表和内表原创 2016-09-13 09:40:49 · 1421 阅读 · 0 评论 -
oracle中的as
as 是 alias 的缩写,是“别名”的意思。列如: select to_char(sysdate,’yyyy-mm-dd’) as 今天日期 from dual;to_char(sysdate,’yyyy-mm-dd’) 这一列在显示的时候列名就叫 “今天日期”原创 2016-08-23 22:56:59 · 2456 阅读 · 0 评论 -
SQL中EXISTS怎么用
EXISTS 是判断是否存在,和in类似,但效率要比in高 SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’) SELECT * FROM EMP (基础表) WHERE原创 2016-08-23 23:09:52 · 342 阅读 · 0 评论 -
ORACLE中%TYPE和%ROWTYPE的使用
1. %TYPE:当被参照的那个变量的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。2.%ROWTYPE:如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量,比分别使用%TYPE来定义表示表中各个列的变量要简洁得多,并且不容易遗漏、出错。这样会增加程序的可维护性。实例:1 .%TYPE: DECLARE原创 2016-08-23 23:22:44 · 1451 阅读 · 0 评论 -
left join on左连接的使用
一、概念:–把left join左边的表的记录全部找出来。系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录。最后形成你的结果。–进行左连接时,就有涉及到主表、辅表,这时主表条件写在WHERE之后,辅表条件写在ON后面。二、实例1、表a结构和数据table a(id, type):id type ----------------------------原创 2016-08-24 10:12:12 · 68973 阅读 · 1 评论 -
ORACLE中RECORD的使用
一、概念:–定义记录数据类型。将几个相关的、分离的、基本数据类型的变量组成一个整体的方法,即RECORD复合数据类型。–在使用记录数据类型变量时,需要在声明部分先定义记录的组成、记录的变量,然后在执行部分引用该记录变量本身或其中的成员。二、语法:TYPE RECORD_NAME IS RECORD(V1 DATA_TYPE1 [NOT NULL][:=DEFAULT_VALUE],V2 DATA原创 2016-08-24 10:28:51 · 6174 阅读 · 0 评论 -
Oracle同义词创建及其作用
一、概念:–Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,并不占用实际存储空间,就是一种映射关系。二、分类1)公用Oracle同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。2)私有Oracle同义词:可以通过授权控制其他用户是否有权使用属于自己的私有同义词。 三、创建: 语法:create public s原创 2016-08-24 10:53:28 · 630 阅读 · 0 评论 -
oracle 序列的创建和作用
1.创建:CREATE SEQUENCE emp_sequence --序列名INCREMENT BY 1 --如果省略,则默认为1,如果负值,则代表序列的值是按照此步长递减的。 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 20;原创 2016-08-24 11:30:48 · 7683 阅读 · 0 评论 -
oracle的行级触发器使用
行级触发器:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值.:NEW 修饰符访问操作完成后列的值:OLD 修饰符访问操作完成前列的值例1: 建立一个触发器, 当职工表 emp 表被删除一条记录时,把被删除记录写到职工表删除日志表中去。CREATE TABLE emp_his AS SELECT * FROM EMP WHERE 1 =原创 2016-08-24 12:05:00 · 6360 阅读 · 0 评论 -
oracle的时间处理
1. to_char和to_date基本使用select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')currenttime, to_char(sysdate,'yyyy') year, to_char(sysdate,'mm') month, to_char(sysdate,'dd') day, t原创 2016-09-17 11:31:47 · 202 阅读 · 0 评论 -
Oracle 中 decode 函数用法
含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值原创 2016-09-18 10:09:34 · 266 阅读 · 0 评论 -
oracle 操作表的sql
--新建表:create table table1( id varchar(300) primary key, name varchar(200) not null);--插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id = 'bb' where id='cc';原创 2016-09-19 11:30:52 · 223 阅读 · 0 评论