代码改变世界

Oracle笔记1

  Evan.Pei  阅读(213)  评论(0编辑  收藏  举报

ORACLE:

 目前分为12C(cloud云)和11G(grid网格)版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
--数据库基本概念
data--数据
database--数据库
DBMS--数据库管理系统
RDBMS--关系型数据库管理系统
ORDBMS--对象关系型数据库管理系统
 
--SQL概述
SQL(Structured query language)结构化查询语言
 
--SQL 分类
SELECT --数据库查询语句DQL
INSERT DELETE UPDATE  MERGE--数据库操作语句DML
CREATE ALTER DROP TRUNCATE RENAME COMMENT--数据库定义语句DDL
COMMIT ROLLBACK SAVEPOINT--事物控制语句TCL
 
--OracloraDb11g_home1INSListener这个是网络监听器的服务,开始才能通过外部访问。
--OrcalService ORCL:数据库实例服务
 
--比较运算符: >,>=,<,<=,=,<>,!=,^=
--特殊运算符:[not]between...end
            [not] like
            [not] in
            is [not] null
--多条件使用:and or not 连接
 
 
 
/*--单行函数练习
    查询与表无关 FROM 后面是 dual*/
--转小写,大写,单词首字母大写
select lower('Hello'),upper('Hello'),initcap('Hello evan')
from dual;
-------------------------------------------字符串
--去掉指定字符(去全部,去左边字符,去右边字符)
select TRIM('H'FROM 'HELLOHH'), ltrim('helloh','h'), rtrim('helloh','h') FROM dual;
 
--补齐(参数解释:数值,几位数,不够用什么补)输出:*100和100*
select lpad(100,4,'*'),rpad(100,4,'*')
from dual;
 
--查找位置,相当于indexOf,ORCALE的索引从1开始返回7
select instr('hello tom','tom') from dual;
 
--substr()//返回llo,ll
select substr('hello',3), substr('hello', 3, 2)
from dual;
 
--连接字符,和求长度
select concat('hello','evan'),length('abc')
from dual;
 
--替换
select replace('hello','h','a')
from dual;
--------------------------------------------number
--四舍五入[小数点后保留几位小数][小数点前保留几位]
select round(123.456,2),round(123.456,-2),round(123.45,0), round(123.45)
from dual;
 
--去尾数 不进行四舍五入
select trunc(12.456,2),trunc(12.456,-2),trunc(12.456,0),trunc(12.456)
from dual;
 
--取模(求余数)
select mod(13,2) from dual;
 
----------------------------------------date
--获取当前日期 +2代表加两天或者-2
select sysdate +2 from dual;
--加月份
select add_months(sysdate,3) from dual;
--月份范围
select months_between(sysdate, hiredate)from emp;
--获取当前月份的最后一天
select last_day(sysdate)from dual;
--获取年月日year,month,day
select extract(day from sysdate)
FROM dual;
--计算天数差
select round(to_number(TO_DATE('2015-07-24','YYYY-MM-DD')-TO_DATE('2015-07-23','YYYY-MM-DD')))from dual;
--计算小时差
select round(to_number(TO_DATE('2015-07-24','YYYY-MM-DD')-TO_DATE('2015-07-23','YYYY-MM-DD'))*24)from dual;
 
------------------------------------转换函数
--to_char:将日期或数值按指定格式转换成字符
select to_char(sysdate,'yyyy-mm-dd HH24:MI:ss DAY')from dual;--hh:mi:ss day星期几
select to_char(123456)from dual;
select to_char(105,'L9,999,999.00')from dual;--¥105.00
 
--to_date:将指定格式的字符串转换为日期
SELECT TO_DATE('1998-09-02','YYYY-MM-DD')FROM DUAL;
 
--to_number:字符串转换成数值
SELECT TO_NUMBER('123')FROM DUAL;
 
----------对空值的转换,comm列中空的用0代替
select ename,nvl(comm,0)from emp;
-------val2:[comm数据列,不为空用0,为空用1]
select ename,comm,nvl2(comm,0,1)from emp;
----nullif(列名,为空用什么代替)
 
---------------------------------分支判断
---case练习
select ename, deptno, sal,
case
  when deptno=10 then sal+10
  when deptno=20 then sal+20
  else sal end as addsal
from emp;
 
---decode
select ename, deptno, sal,
decode(deptno,
       10,sal+10,
       20,sal+20,
       30,sal+30,
       sal)
from emp;
 
---------------------------集合函数
--max,min,count,sum,avg
select MAX(hiredate), MIN(hiredate),MAX(sal), MIN(sal)
from emp;
select count(*)from emp;
------------分组
--group by 将查询结果按指定列分组 
--having 指定分组必须要满足的条件
--非分组列必须包含在group by 中
select deptno,max(sal),min(sal)
from emp group by deptno having deptno in (10,20);

  

  

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示