经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
oracle数据库与其他数据库区别
来源:cnblogs  作者:自作主张  时间:2019/8/15 11:56:47  对本文有异议

本文用的是Oracle 10g数据库,利用PL/SQL Developer的集成开发环境(安装可以自行百度)


Oracle数据库  ---> 数据库实例  --->  表空间(逻辑单位)(用户)  ---> 数据文件(物理单位)
可以理解为下面
地球    ---> 一个国家    --->  省份(逻辑单位)(公民)    ---> 山川河流(物理单位)


通常情况下,Oracle数据库只会有一个实例ORCL,

新建一个项目:
     MYSQL : 创建一个数据库,创建相应的表
     Oracle: 创建一个表空间,创建用户,用户去创建表
     
Oracle和MYSQL的差别

Oracle是多用户的, MYSQL是多数据库的

1. 遵循SQL标准
2. 不同厂商,不同的数据库产品,但是有自己的方言
3. 使用自己的方言,也能够完成相同的功能
4. Oracle安全级别要高,MYSQL开源免费

复制代码
  1. select * from tab;
  2.  
  3. /*
  4. 数据库 ---> 数据库实例 ---> 表空间(逻辑单位)(用户) ---> 数据文件(物理单位)
  5.  
  6. 地球 ---> 一个国家 ---> 省份(逻辑单位)(公民) ---> 山川河流(物理单位)
  7.  
  8.  
  9.  
  10. 通常情况下,ORacle数据库只会有一个实例ORCL,
  11.  
  12. 新建一个项目:
  13. MYSQL : 创建一个数据库,创建相应的表
  14. Oracle: 创建一个表空间,创建用户,用户去创建表
  15. Oracle和MYSQL的差别
  16.  
  17. Oracle是多用户的, MYSQL是多数据库的
  18.  
  19. 1. 遵循SQL标准
  20. 2. 不同厂商,不同的数据库产品,但是有自己的方言
  21. 3. 使用自己的方言,也能够完成相同的功能
  22. 4. Oracle安全级别要高,MYSQL开源免费
  23.  
  24. */
  25. /*
  26. 基本查询:
  27. SQL : 结构化查询语言
  28. 请听题: 请说一下SQL的分类以及每类常见的操作符都有哪些
  29. 四类:
  30. DDL : 数据定义语言 create alter drop truncate
  31. DML : 数据操纵语言 insert update delete
  32. DCL : 数据控制语言 安全 授权 grant revoke
  33. DQL : 数据查询语言 select from子句 where子句
  34. 查询语句的结构:
  35. select [列名] [*] from 表名 [where 条件] [group by 分组条件] [having 过滤] [order by 排序]
  36. */
  37. select * from emp;
  38.  
  39. select 1+1; --在Oracle等于报错 ,在MYSQL中输出结果是2
  40.  
  41. /*
  42. dual : oracle中的虚表 ,伪表, 主要是用来补齐语法结构
  43. */
  44. select 1+1 from dual;
  45.  
  46. select * from dual;
  47.  
  48. select 1 from emp;
  49. --直接写一个常量比写 * 要高效
  50. select count(1) from emp;
  51. select count(*) from emp;
  52.  
  53. /*
  54. 别名查询: 使用as 关键字, 可以省略
  55. 别名中不能有特殊字符或者关键字, 如果有就加双引号
  56. */
  57. select ename 姓名, sal 工资 from emp;
  58.  
  59. select ename "姓 名", sal 工资 from emp;
  60.  
  61. /*
  62. 去除重复数据 distinct
  63. 多列去除重复: 每一列都一样才能够算作是重复
  64. */
  65. --单列去除重复
  66. select distinct job from emp;
  67.  
  68. --多列去除重复的
  69. select distinct job,deptno from emp;
  70.  
  71.  
  72. --查询中四则运算
  73. select 1+1 from dual;
  74.  
  75. --查询员工年薪 = 月薪* 12
  76. select sal*12 from emp;
  77.  
  78.  
  79. --查询员工年薪+奖金
  80. select sal*12 + comm from emp;
  81. --nvl 函数 : 如果参数1null 就返回参数2
  82. select sal*12 + nvl(comm,0) from emp;
  83.  
  84. /*
  85. 注意: null值 , 代表不确定的 不可预知的内容 , 不可以做四则运算
  86. */
  87.  
  88.  
  89. /*
  90. 字符串拼接:
  91. java : + 号拼接
  92. Oracle 特有的连接符: || 拼接
  93. 在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符
  94. concat(str1,str2) 函数, 在mysql和Oracle中都有
  95. */
  96. --查询员工姓名 : 姓名:SCOTT
  97. select ename from emp;
  98. --使用拼接符
  99. select '姓名:' || ename from emp;
  100.  
  101. --使用函数拼接
  102. select concat('姓名:',ename) from emp;
  103.  
  104.  
  105. /*
  106. 条件查询 : [where后面的写法]
  107. 关系运算符: > >= = < <= != <>
  108. 逻辑运算符: and or not
  109. 其它运算符:
  110. like 模糊查询
  111. in(set) 在某个集合内
  112. between..and.. 在某个区间内
  113. is null 判断为空
  114. is not null 判断不为空
  115. */
  116. --查询每月能得到奖金的员工信息
  117. select * from emp where comm is not null;
  118.  
  119.  
  120. --查询工资在1500--3000之间的员工信息
  121. select * from emp where sal between 1500 and 3000;
  122.  
  123. select * from emp where sal >= 1500 and sal <= 3000;
  124.  
  125. --查询名字在某个范围的员工信息 ('JONES','SCOTT','FORD') in
  126. select * from emp where ename in ('JONES','SCOTT','FORD');
  127.  
  128.  
  129. _ 匹配单个字符
  130. 如果有特殊字符, 需要使用escape转义
  131. */
  132. /*
  133. 模糊查询: like
  134. % 匹配多个字符
  135. --查询员工姓名第三个字符是O的员工信息
  136. select * from emp where ename like '__O%';
  137.  
  138. --查询员工姓名中,包含%的员工信息
  139. select * from emp where ename like '%\%%' escape '\';
  140.  
  141. select * from emp where ename like '%#%%' escape '#';
  142.  
  143.  
  144. /*
  145. 排序 : order by
  146. 升序: asc ascend
  147. 降序: desc descend
  148. 排序注意null问题 : nulls first | last
  149. 同时排列多列, 用逗号隔开
  150. */
  151. --查询员工信息,按照奖金由高到低排序
  152. select * from emp order by comm desc nulls last;
  153.  
  154. --查询部门编号和按照工资 按照部门升序排序, 工资降序排序
  155. select deptno, sal from emp order by deptno asc, sal desc;
  156.  
  157.  
  158. /*
  159. 函数: 必须要有返回值
  160. 单行函数: 对某一行中的某个值进行处理
  161. 数值函数
  162. 字符函数
  163. 日期函数
  164. 转换函数
  165. 通用函数
  166. 多行函数: 对某一列的所有行进行处理
  167. max() min count sum avg
  168. 1.直接忽略空值
  169. */
  170. --统计员工工资总和
  171. select sum(sal) from emp;
  172.  
  173. --统计员工奖金总和 2200
  174. select sum(comm) from emp;
  175.  
  176. --统计员工人数 14
  177. select count(1) from emp;
  178.  
  179. --统计员工的平均奖金 550 错误 2200/14 =
  180. select avg(comm) from emp;
  181.  
  182.  
  183. --统计员工的平均奖金 157.
  184. select sum(comm)/count(1) from emp;
  185. select ceil(sum(comm)/count(1)) from emp;
  186.  
  187. update emp set ename = 'TUR%NER' where ename = 'TURNER';
  188.  
  189. select * from emp;
  190.  
  191.  
  192.  
  193. --数值函数
  194. select ceil(45.926) from dual; --46
  195. select floor(45.926) from dual; --45
  196. --四舍五入
  197. select round(45.926,2) from dual; --45.93
  198. select round(45.926,1) from dual; -- 45.9
  199. select round(45.926,0) from dual; --46
  200. select round(45.926,-1) from dual; --50
  201. select round(45.926,-2) from dual; --0
  202. select round(65.926,-2) from dual; --100
  203.  
  204. --截断
  205. select trunc(45.926,2) from dual; --45.92
  206. select trunc(45.926,1) from dual; -- 45.9
  207. select trunc(45.926,0) from dual; --45
  208. select trunc(45.926,-1) from dual; --40
  209. select trunc(45.926,-2) from dual; --0
  210. select trunc(65.926,-2) from dual; --0
  211.  
  212. --求余
  213. select mod(9,3) from dual; --0
  214. select mod(9,4) from dual; --1
  215.  
  216.  
  217. --字符函数
  218. -- substr(str1,起始索引,长度)
  219. --注意: 起始索引不管写 0 还是 1 都是从第一个字符开始截取
  220. select substr('abcdefg',0,3) from dual; --abc
  221. select substr('abcdefg',1,3) from dual; --abc
  222.  
  223. select substr('abcdefg',2,3) from dual; --bcd
  224.  
  225. --获取字符串长度 24 28
  226. select length('abcdefg') from dual;
  227.  
  228. --去除字符左右两边的空格
  229. select trim(' hello ') from dual;
  230.  
  231. --替换字符串
  232. Select replace('hello','l','a') from dual;
  233.  
  234.  
  235.  
  236. --日期函数
  237. --查询今天的日期
  238. select sysdate from dual;
  239. --查询3个月后的今天的日期
  240. select add_months(sysdate,3) from dual;
  241. --查询3天后的日期
  242. select sysdate + 3 from dual;
  243.  
  244.  
  245. --查询员工入职的天数
  246. select sysdate - hiredate from emp;
  247.  
  248. select ceil(sysdate - hiredate) from emp;
  249.  
  250. --查询员工入职的周数
  251. select (sysdate - hiredate)/7 from emp;
  252.  
  253. --查询员工入职的月数
  254. select months_between(sysdate,hiredate) from emp;
  255.  
  256. --查询员工入职的年份
  257. select months_between(sysdate,hiredate)/12 from emp;
  258.  
  259. --转换函数 数值转字符 字符转数值 日期
  260. --字符转数值 to_number(str) 鸡肋
  261. select 100+'10' from dual; --110 默认已经帮我们转换
  262. select 100 + to_number('10') from dual; --110
  263.  
  264. --数值转字符
  265. select to_char(sal,'$9,999.99') from emp;
  266.  
  267. select to_char(sal,'L9,999.99') from emp;
  268. /*
  269. to_char(1210.73, '9999.9') 返回 '1210.7'
  270. to_char(1210.73, '9,999.99') 返回 '1,210.73'
  271. to_char(1210.73, '$9,999.00') 返回 '$1,210.73'
  272. to_char(21, '000099') 返回 '000021'
  273. to_char(852,'xxxx') 返回' 354'
  274.  
  275. */
  276.  
  277. --日期转字符 to_char()
  278. select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
  279. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  280. --只想要年
  281. select to_char(sysdate,'yyyy') from dual; --2017
  282.  
  283. --只想要日
  284. select to_char(sysdate,'d') from dual; --2 代表一个星期中第几天
  285. select to_char(sysdate,'dd') from dual; --10 代表一个月中的第几天
  286. select to_char(sysdate,'ddd') from dual; --100 代表一年中的第几天
  287.  
  288.  
  289. select to_char(sysdate,'day') from dual; --monday
  290. select to_char(sysdate,'dy') from dual; --mon 星期的简写
  291.  
  292.  
  293. --字符转日期
  294. select to_date('2017-04-10','yyyy-mm-dd') from dual;
  295.  
  296. --查询1981 -- 1985年入职的员工信息
  297. select * from emp where hiredate between to_date('1981','yyyy') and to_date('1985','yyyy');
  298.  
  299.  
  300. /*
  301. 通用函数:
  302. nvl(参数1,参数2) 如果参数1 = null 就返回参数2
  303. nvl2(参数1,参数2,参数3) 如果参数1 = null ,就返回参数3, 否则返回参数2
  304. nullif(参数1,参数2) 如果参数1 = 参数2 那么就返回 null , 否则返回参数1
  305. coalesce: 返回第一个不为null的值
  306. */
  307. select nvl2(null,5,6) from dual; --6;
  308.  
  309. select nvl2(1,5,6) from dual; --5;
  310.  
  311. select nullif(5,6) from dual; --5
  312. select nullif(6,6) from dual; --null
  313.  
  314. select coalesce(null,null,3,5,6) from dual; --3
  315.  
  316.  
  317.  
  318.  
  319. select ceil(-12.5) from dual; --12
  320. select floor(12.5) from dual; --12
  321.  
  322.  
  323. select ' hello ' from dual;
  324. select * from emp;
复制代码

原文链接:http://www.cnblogs.com/zmystc/p/11346114.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号