oracle 10g 操作笔记

本文介绍 Oracle 数据库中的 SQL 语言基础,包括 DDL、DML 和 DCL 的使用,以及 SQL 语言的基本语法和特性。文章还详细讲解了 PL/SQL 编辑器的使用方法,数据类型的操作,查询语句的构造,以及各种函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、orcale 数据库
DDL 定义语言  create drop 
DML 操作语言  insert  delete update
DCL 控制语言  grant revoke  commit




orcale中  number(7) 数据类型  和date  数据类型 可以进行 数学运算,  但是date类型 不能进行 乘法和除法运算。 空值NULL做数学运算还是空


desc  employees ; 显示表的字段列。


pl_sql 中 ed 显示编辑窗口   / +enter 执行编辑窗口内容。


sql语言 不区分大小写 。  注释用 --


sql中语言与关键词 缩进分行。


列的别名   1、空格 + 别名名称  2. select age  as nianling  列+ as 列别名名称  3、 别名名称 用双引号 "a B _d" 则引号中是啥 别名就是啥  可以是多个单词  




distinct 查询非重复记录。放在查询字段的首列,不能出现在非第一列的  字段列中。


|| 连接符 ||  连接多列列名  。


select  name||'`s age is '|| age  as "Deteils" from employees;








字符类型varcahr2(32)和日期类型Date  要包含在 ''单引号中。


默认日期类型  6-7月-2009  日-月-年的 格式 。   条件比较时   to_char(字段名 ,'yyyy-mm-dd') 转换日期格式。




SQL语句中 不区分大小写,但是 列值区分大小写 。 推荐 在SQL语句中逢 关键词折行提高可读性 。
select *  from  employees 
where name='john';


SELECT *  from  employees 
where name='JohN';


筛选条件  where  


= , <> ,>=,  <=, < ,>.


between  A and  B 包含A 和B的边界。  salary >=A and salary<=B  


name  in (A,D,F,M) 等价于 name=A or name=D 。。。


like 


%一个或者多个字符 
_一个字符 


escape 转义字符  如: name中 包含 _的记录。   like  '%\_%' escape '\'   用 \或者# 均可


is null


is not null 


and or not 


排序 order by  


desc 降序   asc 升序   


单行函数 :


字符函数:
to_char(hire_date,'yyyy-mm-dd')='2013-09-23';把默认日期类型转换为指定格式的字符类型。 默认日期类型格式:'23-9月-2013' 


upper(last_name)='ABSR' --转换成大写之后进行比较相等 
lower(last_name)='cvbn' --字段的值转换为小写后与'cvbn'进行比较
initcap(last_name)='John'; --首字母大写其余小写


concat 连接多个字符


---数据库中位置是从1开始 , 区别于java中字符串位置从0开始。
substr('hellowworld', 2,4) 截取字符串, 从字符串第二个位置开始,截取4个长度的字符串(不是截取到第四个位置) 。


length('hellowworld'); 返回 字符串的长度


instr('helloworld','w'); 返回'w'在字符串中的位置  如果不存在 则返回0。区别于 java中 不存在字符则返回-1 
lpad(last_name,10,'*');  取last_name的值 返回10位,如果不够长 左边用*补齐
rpad(last_name,10,'*');  取last_name的值 返回10位,如果不够长 右边用*补齐




replace('abcdxd','d','m') 把字符串中 所有的d 替换为 m


trim( 'o' from 'ohelloworldo');  去掉字符串首尾的o字符 。




数字函数: 
四舍五入 :指定保留小数 
round(345.36,1) 指定保留小数 1位  ,round(345.36)  默认不保留小数, round(345.36,-1) 四舍五入保留到十位;


截断到某个位置 不进行四舍五入
trunc(345.36,1) 截断到小数点下一位   trunc(345.36) 截断到个数   trunc(345.36,-1) 截断到十位 


取余数
mod(1000,300); 取余数  100




日期函数:


包含 日期 和 时间  
日期函数 只能做加减 不能做乘除 !!


两个日期相减, 返回日期之间相差的天数 。


select sysdate from dual; 返回当前日期+时间


select sysdate-hire_date as days from  employees  计算到目前为止  入职的天数。


months_between(sysdate,hire_date); 两个日期之间相差的月份。


add_months(sysdate,2);当前日期+ 2个月。


add_months(sysdate,-2); 当前日期 往前推俩月。


next_day(sysdate,'星期日'); 从当前日期算,下一个星期日。


last_day(sysdate) 每月的最后一天。


round(sysdate,'month');对日期进行 四舍五入 到月份


trunc(sysdate,'HH'); 对日期进行截断 截断到 小时




转换函数 :


隐式转换 <oracle数据库 自动转换> 显示转换
varchar2  char 转换为 number 。


varchar2  char 转换为 date 。


date和 varchar2 相互转换


number 和 varchar2 相互转化




显示转换 :日期和 字符 之间的转换 
to_char(sysdate,'yyyy-mm-dd'); 日期转换为 字符  


to_char(sysdate,'yyyy"年"-mm"月"-dd"日"'); 日期转换为 字符   后面 格式如果带字符 需要用 "" 括起来


to_date('1994-06-07','yyyy-mm-dd'); 把字符串 转换成 指定格式的 date类型 


显示转换 :number 和 字符 之间的转换 
number 转换为字符 :
to_char(12366.45,'999,999,999.99');   


to_char(12366.45,'000,000,000.00');   后面 000,000,或者 999,999,均为要转换的格式 ,如果是000,则 前面位数不够补0。


to_char(12366.45,'$999,999,999.99'); 转换为美元


to_char(12366.45,'L999,999,999.99'); 当地的货币符号


字符串 转换为 number:


to_number('$12,234,233.34','$999,999,999.99');  字符串 转换为具体数字 12234233.34  即可进行相应的数学运算


to_number('¥12,234,233.34','L999,999,999.99'); 




通用函数: 适用于任何类型,包括空值
NVL(expr1,expr2) 如果  expr1为空 则用expr2代替, 如果 expr1不为空 则返回expr1  


oracle中 空值做数学运算 还是为空值,  
select last_name  salary*12*(1+nvl(commission_pct,0)) from employees; 
commission_pct字段  会存在空值 防止计算无结果, 用nvl处理 如果是空值 用0代替。




NVL2(expr1,expr2,expr3) 如果 expr1 不为空 返回 expr2 为空 则返回 expr3


NULLIF()


case 表达式 case when then  else  end  可以加别名


select salary ,department_id , case 列名  when  条件  then  处理   when  条件  then  处理 else 处理... end 结束  as "别名"  


from  employees where department_id in (10, 20);




例子:
select last_name,department_id,case department_id
when 10 then department_id+1
when 20 then department_id+2
else  department_id+3 
end as "NewD"
from employees where department_id in (10,20,30)


decode 表达式  decode(department_id,10,department_id+1,
20,department_id+2,
department_id+3) as newD

例子:
select last_name,department_id,decode(department_id,
10,department_id+1,
20,department_id+2,
department_id+3) as "NewD"
from employees where department_id in (10,20,30)






select last_name ,job_id, decode(job_id,'AD_PRES','A',
                                        'IT_PROG','B')
                                        as "GRade"
from employees where job_id in ('AD_PRES','IT_PROG')


---------------------------------------------------------------



































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值