设为首页 收藏本站
查看: 766|回复: 0

[经验分享] oracle pl/sql学习笔记(一) 入门

[复制链接]

尚未签到

发表于 2016-7-31 07:34:10 | 显示全部楼层 |阅读模式
--第一范式:(1NF)无重复的列
--第二范式:(2NF)属性完全依赖于主键
--第三范式:(3NF)属性不依赖于其它非主属性

--修改列
alter table 表名 drop column 列名;
alter table 表名 rename column 列名 to 新列名;
alter table 表名 add (列名 类型);
alter table 表名 modify (列名 类型);

--转移表至其他表空间
alter table 表名 move tablespace 表空间名;


--建表语句里面的子查询
create table 表名 as select * from 表名 where XXX
如果where 1<>1只获取表结构不获取数据

--插入语句中的子查询
insert into 表名 select * from 表名 where XXX

--联合语句
union  union all 并集
intersect        交集
minus            差集
混合运算中,优先级相同

自然连接   natural join
外连接简写(ORACLE专有) where a.xx=b.xx(+) b表为附属表

--层次化查询
select xx from XX start with son_name = XX connect by prior parent_id = son_id;

start with 指定起始条件   connect by 指定获得吓一跳记录的条件

sys_connect_by_path(列名,分隔符)  对起始位置到当前记录之间的结果集进行聚合操作,配合层次化查询使用

例子:
select max(sys_connect_by_path(column_name, '/')) market_path                                                                                    
from tablename                                                
start with column_name = XX                              
connect by prior parent_id = son_id;   --max()获取查出的结果集中排在末位位置的字符串

--二进制转十进制
select bin_to_num(1,1,1,1) from dual;

select sum(data)
  from (select substr('1111', rownum, 1) * power(2, length('1111') - rownum) data
          from dual
        connect by rownum <= length('1111'))

--十进制转二进制
select replace(reverse(max(sys_connect_by_path(mod(floor(15/power(2, rownum-1)), 2), '/'))), '/', '') data
from dual
connect by floor(15/power(2, rownum-1))>=1
order by rownum desc

--批量插入
insert into 表名(列名a,列名b,...) select 列名a,列名b,... ,from 表名 where XXX

--字符型
varchar 可变长度字符  占用空间不固定
char 固定长度字符,占用空间固定,效率较高

lpad(string,padded_length,[pad_string])  向左补全字符串
rpad(string,padded_length,[pad_string])  向右补全字符串
lower()
upper()
initcap() 单词首字符大写
length()
substr(string,start_index,length)
instr(string,sub_string,[start_index],[times]) 字符串出现的位置
ltrim() rtrim() trim()
concat(string,string) 注:concat只能连接两个参数的字符串
translate(被翻译字符串a,翻译字符串b,对应密码字符串c) 找a中字符在b中的位置,取c相应位置的字符
reverse() 翻转单字节字符串内容

--数值型
abs() 绝对值
round()  四舍五入
ceil() 向上取整
floor() 向下取整
mod() 取余(取模)
sign() 整数返回1,负数返回-1,0返回0
sqrt() 平方根
power(底数,指数)
trunc(number,小数点后位数) 截取数字,其余舍去
chr() ASCII码转换为字符
to_char(原数值,格式) --格式符 0 不匹配时强制添加0  9 不匹配时不添加0(但小数位还是强制添加) FMXX.XX FM格式符可以屏蔽所有不必要的空格和0  $货币符号 L本地货币符号

字符串与数值的比较计算中,字符串首先被转换为数值型,然后在进行比较

--日期型
sysdata
add_month(时间,增加的月数)
last_day() 日期缩在月最后一天
month_between()返回两个日期所差的月数
next_day(date,范围0~7的数字) 特定日期之后一周内的日期
trunc(date,格式符) 截取时间
current_date current_timestamp 当前时区的当前时间

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251448-1-1.html 上篇帖子: oracle之存储过程--------经典案例 下篇帖子: Oracle,SQl,MySql实现分页查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表