![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle
安善良民弱女子
起风了,唯有努力生存!
展开
-
oracle列递归累加sql
查询压岁钱表age_moneyselect * from age_money;year1 money2001 102002 202003 202004 52005 10递归累加WITH T AS (select year1,money from age_money where order by year1)SELECT T.year1,T.money, SUM(T.mone原创 2017-12-25 21:08:18 · 2556 阅读 · 1 评论 -
Oracle:any、all值的比较
select id,id_type from test结果: id id_type —————– 1 01 2 01 3 02 4 03 5 04 any的用法: any操作符将一个值与某个列表中的任何值进行比较select id,id_type from test where id > any(2,3,4);结果: id id_t原创 2017-11-03 20:24:07 · 390 阅读 · 0 评论 -
Oracle:如何区分空值与空字符串
如何区分空值与空字符串? 使用函数NVL(). NVL(列,值) 如果列里面是空值就替换成NVL()函数中的值原创 2017-11-03 20:18:53 · 1638 阅读 · 0 评论 -
Oracle:连接合并列的输出
连接合并列使用 “||”符号 例如:select id || "-" || id_type as "id_info" where testid_info ———– 1-01 2-01原创 2017-11-03 20:17:03 · 786 阅读 · 0 评论 -
Oracle:列别名
Oracle中输出结果中默认使用该列列名的大写形式作为列的标题select id id_temp from test 和select id as id_temp form test都是为test中id字段取别名。那么如何使用小写呢?解决方案: 就是给别名加上双引号select id "id_temp" from test原创 2017-11-03 20:15:32 · 521 阅读 · 0 评论 -
Oracle:dual表
dual表:经常与返回值的函数和表达式连用,而不需要在查询中引用基础表。 可以使用describe dual 查看dual的表结构desc dualName NUll? Type DUMMY VARCHAR2(1)查询dual表中的数据:select * from dualDUMMY ———— X原创 2017-11-03 20:13:38 · 208 阅读 · 0 评论 -
Oracle:rowid、rownum(伪列)
rowid行标识符:Oracle数据库中的每一行都有唯一的行标识符,或称为rowid。 Oracle数据库内部使用行标识符来存储行的物理位置。rowid是一个18位数字,采用base-64编码。可以再查询的选择列表中指定rowid列来查看表中各行的rowid值。 select rowid,id from test; 注意:在查看表结构时,rowid是不会显示的,因为该列只在数据库内部使用。ro原创 2017-11-03 20:08:01 · 368 阅读 · 0 评论 -
oracle:数据库查询返回结果集的默认值
Oracle数据库中结果集的默认值: 1.列名全部转换成了大写的形式。 2.字符和日期列是左对齐的。 3.数字列是右对齐的。 4.oracle数据库会以DD-MON-YY的形式显示日期。原创 2017-11-03 20:05:53 · 1999 阅读 · 0 评论 -
oracle:取消delete之后对数据库的修改
delete * from test where id=1;结果:1 row deleted. 要取消对数据库所做的修改,可以使用rollback命令rollBack;结果:rollBack complete.tips:使用commit可以永久性的保存对行所做的修改。原创 2017-11-03 20:03:48 · 692 阅读 · 0 评论 -
oracle命名主键约束的原因
开始看 《精通Oracle Database 12c SQL & PL/SQL 编程(第三版)》 作者:Jason Price 著 卢涛 译oracle命名主键约束的原因salary_grade_id integer constraint salary_grade_pk primary key; 如果salary_grade_id中已经有1,在继续插入1这条数据时,就会报错,而错误信息中原创 2017-11-03 20:01:52 · 855 阅读 · 0 评论 -
Oracle:like操作符
like操作符: 下划线(-)字符:匹配指定位置的一个字符 百分号(%)字符:匹配从指定位置开始的任意多个字符select * from test where id_type like '_1%';select * from test where id_type not like '_1%';注意:如果需要对实际的下划线和百分号进行搜索,可以使用ESCAPE选项来标识任意多个字符。'%\%%'原创 2017-11-03 20:27:08 · 564 阅读 · 0 评论 -
Oracle:in操作符
in操作符 需要注意:如果列表中包含空值,那么not in返回falseselect * from test id in (1,2,null);结果: 没有返回,因为有null值原创 2017-11-04 10:16:54 · 924 阅读 · 0 评论 -
Oracle:对行进行分组GROUP BY
GROUP BY 将行分组为多个部分 注意: 1.如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY字句中,否则会出现错误:ORA-00937:not a single-group function.select AVG(id),id_type from test;ORA-00937:not a single-group function.分析:这个查询原创 2017-11-04 11:03:02 · 3786 阅读 · 0 评论 -
Oracle:聚合函数
聚合函数:也称为分组函数 1.AVG() AVG(x):返回x的平均值2.COUNT() COUNT(x) :返回一个包含x的查询返回的行数 注意:在使用COUNT()函数时避免使用*号,因为这样COUNT()在返回结果时所需要的时间可能会更长 3.MAX()/MIN() MAX()/MIN():取最大值/最小值 4.STDDEV() STDDEV():用于计算x的标准差 5.SU原创 2017-11-04 11:00:41 · 472 阅读 · 0 评论 -
Oracle:正则表达式函数
^:可以匹配字符串的开头 $:可以匹配字符串的结尾 {4}:匹配前面的模式元素恰好4次 …正则表达式函数: 1.REGEXP_LIKE():用于在x中查找pattern参数中定义的正则表达式。 2.REGEXP_INSTR():用于在x中查找pattern,返回pattern出现的位置。匹配位置从1开始 3.REGEXP_REPLACE():用于在x中查找pattern,并将其替换 4原创 2017-11-04 10:58:19 · 507 阅读 · 1 评论 -
Oracle:转换函数
1.ASCIISTR() ASCIISTR(x):将x转换为ASCII字符串。select asciistr('abc') from dual;ASCIISTR('ABC')------------------abc2.BIN_TO_NUM() BIN_TO_NUM():将二进制数x转换为NUMBER类型select BIN_TO_NUM(1,0,1) from dual;BIN_TO_N原创 2017-11-04 10:57:09 · 840 阅读 · 0 评论 -
Oracle:数值函数
1.ABS() ABS(x):得到x的绝对值select ABS(-56) from dual;ABS(-56)-------562.CEIL() CEIL(x):获得大于或等于x的最小整数select CEIL(5.8) from dual;CEIL(5.8)---------63.FLOOR()select CEIL(5.8) from dual;CEIL(5.8)-------原创 2017-11-04 10:53:49 · 441 阅读 · 0 评论 -
Oracle:单行函数
第三章:使用简单函数 单行函数-字符函数单行函数:一次只能对一行进行操作,且对输入的每一行返回一行输出结果。 单行函数只要有5中:字符函数、数值函数、转换函数、日期函数、正则表达式函数字符函数1.ASCII(x):获得字符x的ASCII码 CHR(x):获得ASCII码为x的字符select ASCII('a'),CHR(90) from dualASCII('a') CHR(90) --原创 2017-11-04 10:46:36 · 355 阅读 · 0 评论 -
Oracle:使用SQL*Plus
一.查看表结构DESC test;二.编辑sql语句 A[PPEND] text :将text附加到当前行之后 C[HANGE]/old/new:将当前行中的old替换成new CL[EAR]BUFF[ER]:清除缓冲区中的所有行 DEL:删除当前行 DEL x:删除第X行 L[IST]:列出缓冲区中所有的行 L[IST] x:列原创 2017-11-04 10:42:42 · 734 阅读 · 0 评论 -
Oracle:笛卡尔积
笛卡尔积:在多表查询中不指定连接条件,就会出现一个表中的所有行都连接到另一个表中的所有行。这个结果就是笛卡尔积; 比如;一个表中有10条数据,另一张表中有20条数据,那么笛卡尔积就有200条数据。原创 2017-11-04 10:19:23 · 2425 阅读 · 0 评论 -
Oracle:逻辑操作符顺序
同一表达式中同时使用and和or,那么and的优先级高于or;而比较操作符的优先级高于and,可以使用圆括号来改变表达式的执行顺序。原创 2017-11-04 10:18:04 · 383 阅读 · 0 评论 -
Oracle:xml和oracle数据库
xml和oracle数据库一.从关系数据生成XML1.XMLELEMENT()函数select xmlelement("id", id)as xml_idfrom test;XML_ID----------<id>1</id><id>2</id>2.XMLATTRIBUTES()函数select XMLELEMENT("testTemp", xmlattributes( i原创 2017-11-10 20:31:37 · 1197 阅读 · 0 评论 -
Oracle:SQL优化
SQL 优化使用where子句过滤行使用表连接而不是多个查询执行连接时使用完全限定的列引用使用case表达式而不是多个查询添加表索引 当单个查询的行数小于等于表总行数的10%时,建立b-树索引 对于包含小范围值且在查询的where子句中频繁使用的列,应使用位图索引使用where并不是having使用union all而不是使用union 因为union要删除重复的行,索引尽量使用原创 2017-11-10 20:19:38 · 238 阅读 · 0 评论 -
Oracle:大对象LOB
大对象LOB(Large OBject)用于存储二进制数据、字符数据和对文件的引用,LOB最多可以存储128TB的数据,这取决于数据库的配置。一.理解大对象的类型大对象类型:CLOB:字符LOB类型,用于存储字符数据。NCLOB:用于存储多字节字符数据(通常用于非英语字符)。BLOB:二进制LOB类型,用于存储二进制数据。BFILE:二进制FILE类型,用于存储指向文件的指针,这些文件可以存原创 2017-11-10 20:13:45 · 1716 阅读 · 0 评论 -
Oracle:表
表1.创建表create table order (id integer constraint order_pk primary key,status varchar2(10);last_modified DATE default sysdate);创建临时表create global temporary table order_temp (id integer,status varch原创 2017-11-07 20:03:05 · 258 阅读 · 0 评论 -
Oracle:用户、特权和角色
一:用户1.创建用户语法:GRANT USER user_name IDENTIFIED BY password[DEFAULT TABLESPACE default_tablespace][TEMPORARY TABLESPACE temporary_tablespace]user_name指定要创建的数据库的名称 password 指定数据库用户的密码 default_tablespac原创 2017-11-07 19:44:17 · 606 阅读 · 0 评论 -
oracle:子查询
子查询分为: 单行子查询:对外部SQL语句要么不返回结果,要么只返回一条。 多行子查询:对外部的SQL语句返回一行或多行 多列子查询:向外部的sql返回多列 关联子查询:引用外部的SQL语句中的一列或多列 嵌套子查询:位于另一个子查询中。 一:单行子查询 可能碰到的错误: 1.单行子查询只能返回一行 如果返回多行会出现如下错误: ORA-01427:single-row subq原创 2017-11-06 20:06:55 · 325 阅读 · 0 评论 -
oracle:高级查询
一.使用集合操作符 1.UNION ALL:返回各个查询检索出的所有行,包括重复的行 2.UNION:返回查询检索出的所有非重复行 3.INTERSECT:返回两个查询检索出的共有行 4.MINUS:返回从第一个查询检索出的行中减去第二个查询检索出的行之后剩余的行。 二.TRANSLATE()函数 TRANSLATE(x,from,to):在x中查找from中的字符,并将其转换成to中对原创 2017-11-06 20:10:15 · 209 阅读 · 0 评论 -
oracle:时间间隔
一:时间间隔 1.INTERVAL YEAR TO MONTH 时间精度是三位数例如:INTERVAL '1' YEAR :时间间隔是一年INTERVAL '11' MONTH :时间间隔是11月INTERVAL '1-3' YEAR TO MONTH :时间间隔是1年零3个月…..2.INTERVAL DAY TO SECONDINTERVAL '1' DAY :时间间隔是一天INTER原创 2017-11-06 20:04:14 · 1279 阅读 · 0 评论 -
oracle:时区
时区:时区是当地时间与英格兰格林威治时间的时差。一:与时区有关的函数: 1.CURRENT_DATE:返回在为数据库会话设置的本地时区中的当前时间。select CURRENT_DATE from dual;CURRENT_DATE-----------------2017/11/6 9:08:572.DBTIMEZONE 返回数据库的时区select DBTIMEZONE from dual原创 2017-11-06 20:02:37 · 856 阅读 · 0 评论 -
oracle:分析数据
select * from temp;ID YEAR MONTH AMOUNT TYPE-------------------------------1 2017 1 120 12 2017 2 80 23 2017 3 20 34 2017 4 30 15 2017 5 20 26 2017 6 10 17 2017 7 180 18 2017 8 4 一:评级函数 评级函数原创 2017-11-06 20:34:50 · 350 阅读 · 0 评论 -
oracle:修改表的内容
一:insert 1.从一个表向另一个表复制行insert into temp2 (id, month ,year, amount) select 10, month, year, amountfrom tempwhere id = 1;二:RETURNING returning子句返回聚合函数的计算结果variable amount_temp numberupdate temp2set原创 2017-11-06 20:38:21 · 1847 阅读 · 0 评论 -
oracle:日期
日期: 1.使用TO_CHAR()将时间值转换为字符串select TO_CHAR(sysdate,'MONTH DD, YYYY, HH24:MI:SS') from dual;TO_CHAR(SYSDATE,'MONTH-----------------------11月03,2017,18:15:002.使用TO_DATE()将字符串转换为时间值 日期默认数据库格式:DD-MON-YY原创 2017-11-06 19:54:56 · 260 阅读 · 0 评论 -
Oracle:序列
序列是一种数据库项,可以生成整数序列。1.创建序列create sequence s_teststart with 10 increment by 5minvalue 10 maxvalue 20cycle cache 2 order;2.获取有关序列的信息selectsequence_name, min_value, max_value, increment_by, cycle_flag,原创 2017-11-07 20:11:17 · 403 阅读 · 0 评论 -
oracle:索引、视图和闪回数据归档
索引准则:当任何单个查询要检索的行少于或等于整个表行数的10%时,就应当创建索引。 B-树索引:索引的候选列应该是用来存储很大范围的值的列 位图索引:包含小范围值的列1.创建B-树索引注意:由于性能原因,应该将索引与表存储到不同的表空间中。假设test表包含很多行select id,typefrom testwhere type='01';create index i_test_type o原创 2017-11-07 20:30:56 · 352 阅读 · 0 评论 -
oracle:集合(二)
在PL/SQL中使用集合1.PL/SQL集合方法 方法 说明 count() 返回集合中元素的数目,嵌套表中有可能有空数据,所以返回的是非空元素数据 delete() 删除集合中的元素,delete():删除所有元素,delete(n):删除第n个元素,delete(n,m):删除第n到m个元素,变长数组是连续的,所以不能删除单个元素。 exists() 如果集合的第n原创 2017-11-10 19:46:01 · 622 阅读 · 0 评论 -
Oracle:集合(一)
集合集合有3中类型:变长数组:类似于java中的数组。可存储有序的元素集合,每个元素都有一个索引,记录了元素在数组中的位置。只能作为整体来修改。在创建时创建时可设置最大大小,但是后期可以更改。嵌套表:嵌套在另一个表中的表。可以插入、更新和删除嵌套标表中的单个元素。没有最大大小,可以再嵌套表中存储任意数目的元素。关联数组(以前称为索引表);类似于java中的散列表。是个键值对集合。关联数组只能用原创 2017-11-10 19:33:48 · 436 阅读 · 0 评论 -
Oracle:数据库对象(三)
类型继承not final子句指示可在定义另一对象类型时被继承。create type t_person as object ( id integer, first_name varchar(10), last_name varchar(10), dob date, phone varchar(12), address t_address, n原创 2017-11-09 20:29:44 · 541 阅读 · 0 评论 -
Oracle:数据库对象(二)
在PL/SQL中使用对象1.product_package例如:create package product_package as type t_ref_cursor is ref cursor;function get_products return t_ref_cursor;procedure display_product ( p_id in object_products.id原创 2017-11-09 20:16:16 · 195 阅读 · 0 评论 -
Oracle:数据库对象(一)
数据库对象一.创建对象例如:create type t_address as object ( street varchar(15), city varchar(15), state char(2), zip varchar(5));属性的本身也可以是对象类型create type t_person as object ( id integer, f原创 2017-11-09 19:55:38 · 415 阅读 · 0 评论