orcale开篇

1.数据库系统和数据库的管理系统
  数据库系统=数据库的管理系统+oper操作员+硬件
2.Oracle的版本
  8i/ 9i 10g/11g  12c(cloud)
3.实例和数据库的关系
  实例:数据库服务启动后,在内存中的单元。
  数据库:硬盘上的文件,物理介质硬盘

4.数据库的核心部件

PGA:     (提交给SGA)
   SGA:      (属于实例)
      DBWR(数据的读取和写入)  
      LGWR(日志文件的读取写入)
      SMON (清理临时表空间) 
      PMON (异常中断之后的清理,处理和释放资源) 
      CKPT  (检查点,保证数据库的一致性,这是指将脏数据写入到硬盘,保证内存和硬盘上的数据是一样的;)

5.监听文件的位置
  app----->Happy(用户名)----->product--->NETWORK----》ADMIN -----》listener.ora
6.服务的开启顺序
  先监听,再数据库服务
@echo
net start OracleOraDb11g_home1TNSListener
net start OracleServiceORCL
@pause
7.数据库用户
   sys:超级管理员 管理普通的管理员和普通用户
   System:普通管理员
   scott:没有解锁

8.数据类型
  字符串 Nvarchar2

数字  nubmer

日期和时间:Date

大二进制类型:BLOB

大文本类型 :CLOB 类型SQL SErver中的Text或者是nvarchar(max)

9.Oracle中是根据用户来隔离表的
  默认情况下,当前登录的用户只能看到自己创建的表
  --创建一个用户
create user happyy2165 identified by happyy2165

--权限
--身份:新员工 100
grant connect to happyy2165
grant RESOURCE to happyy2165
--建立一张数据表
create table userinfo
(id number primary key not null)

##如何查看该用户管理着的所有表
select * from all_tables where owner=‘HAPPYY2165‘

10.伪列  rowid rownum

11.如何查询表中自然排序的第3条记录?

select * from (  select id,rowid,rownum rn from userinfo  ) userinfo where rn=3

排名第五的员工信息:

select  *  from ( select temp2.* ,rownum rn  from (

select  ename,sal from emp order by sasl desc )

temp2 )

TEMP where rn=5

检索5到10的记录:

select * from (select temp2.*,rownum rn  from (

select ename ,sal from emp order by sal desc )

temp2 where rownum<=10 )

TEMP where  rn>5

1.用户和模式是等价的
2.创建了一个用户
create table 用户名 identified by 密码
grant connect,resource to 用户名
用户名登陆后。创建表
Create table student
(stuno number primary key not null) 
创建一张表,必须隶属于一个表空间,如果不指定隶属于哪个表空间,他默认隶属于users表空间
Create table student
(stuno number primary key not null)TABLESPACE example
STORAGE (INITIAL 8M);

3.表空间
  逻辑概念
  一个database 下有1个或者 N个表空间

1个表空间有1个或者多个数据文件
  
  如果创建了一张表,不指定表空间,默认使用users表空间

rownum注意事项:
    rownum=1可以  ,rownum<N,大于 m没有结果集。如何规避,使用子查询形成别名列。然后再外层查询该列。
rownum=3

5. 用户A(Scott)去访问用户B(happyy2165) 里面的student包
Oracle三大系统角色
connect
resource
dba

方案一:直接授权法
  1.用happyy2165登录,之后,授权
  grant select on HAPPYY2165.STUDENT to scott
  2.用scott登录,用如下代码去访问Student表
  select * from HAPPYY2165.student
  
方式二:通过角色去控制
       1.自定义角色 role_testy2165  create role role_testy2165
  2.将查询表的权限和角色绑定

GRANT select on HAPPYY2165.STUDENT to role_testy2165
        3.给用户分配角色
grant role_testy2165 to SCOTT

revoke select on HAPPYY2165.student from SCOTT 回收权限

6.解锁用户
alter user hr account unlock

7. 删除stuName、stuAge列重复的行(保留一行)  保留学号最大的

DELETE FROM STUDENT WHERE "stuno" NOT IN
    (
SELECT "MAX"("stuno") FROM STUDENT GROUP BY "stuname","stuage"
     )

8.SQL操作符
  算术 +/-
  连接|| 连接两个字符串
  比较
  逻辑  And or 
  集合
  union  合并记录
  连接查询:合并列
  union all
  
  intersect
  
  select 1+1 from dual
--|| 明天放假但是作业很多
select ‘明天放假‘||‘但是作业很多‘ from dual
select ‘您的运算结果是‘||5 from dual

SELECT deptno 
FROM dept 
INTERSECT --交集(共有内容)
SELECT DISTINCT deptno FROM emp

SELECT deptno 
FROM dept 
minus --减集(第一个查询减去第二个后的剩余记录)
SELECT DISTINCT deptno FROM emp

9.SQL函数

单行函数
    SELECT LOWER(‘MR. SCOTT MCMILLAN‘) "Lowercase"
FROM DUAL;

SELECT UPPER(‘last_name‘)
FROM dual;

SELECT initcap(‘username‘)
FROM dual;

SELECT CONCAT(‘begin‘, ‘last‘) "Job"
FROM dual

SELECT SUBSTR(‘ABCDEFG‘,3,4) "Substring"
FROM DUAL;

Sql中的函数
Sql函数包括:(单行函数)(分组函数)(分析函数)
单行函数:
     对于从表中查询出来的每条记录只显示一个数据。单行函数可以出现在select子句中,where子句中。单行函数包括:(字符函数)(数字函数)(日期函数)(转换函数)(其他函数)。 
    
日期函数:对日期进行计算 显示日期类型或者数字类型。
    SYSDATE    当前日期  eg:select sysdate from dual; 
    current_date    返回当前会话时区中的当前日期
    current_timestamp    以timestamp with time zone数据类型返回当前会话时区中的当前日期
    dbtimezone    返回时区
    ADD_MONTHS    加上月数 eg:select add_months(sysdate,1)  下个月, add_months(sysdate,123) "123个月后" from dual 
    MONTHS_BETWEEN  返回两个日期之间月数 eg:两个日期相差的月数  select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二 from emp;  
              --add_months:在指定日期上加上若干个月
    LAST_DAY    返回月的最后一天 eg:select last_day(sysdate) from dual; 
    ROUND    将日期进行四舍五入 eg:select round(sysdate,‘MONTH‘)  月,round(sysdate,‘YEAR‘) from dual;
    NEXT_DAY    指定下一个星期几的日期 eg:select next_day(sysdate,‘星期-‘) from dual; 
    TRUNC    日期的格式转换 eg:select trunc(sysdate,‘MONTH‘)  月,trunc(sysdate,‘YEAR‘) from dual;  
    EXTRACT    提起日期中指定的部分

字符函数:
    Initcap(char)  大写首字母。eg:select INITCAP(‘hello world‘) from dual;
    Lower(char)  将大写字符变成小写。eg:select lower(‘Hello World‘) 转小写, upper(‘Hello World‘) 转大写 from dual; 
    数字函数
    Mod(m,n)   m/n 的余数。eg:select mod(11,10) from dual;  
    Power(m,n)   m的n次方。eg:select power(2,2),power(-1,2),power(1,0) from dual;   POWER(2,2) POWER(-1,2) POWER(1,0)  
    Round(m,n)    m是小数,n是取的小数位数。四舍五入 eg:select round(123.5),round(123.46,1),round(126.45,-1) from dual; 
 ROUND(123.5) ROUND(123.46,1) ROUND(126.45,-1)
    Trunc(m,n)    m是小数,n是取的小数位数。不四舍五入 select trunc(999.99),trunc(999.99,1),trunc(999.99,-2) from dual;  
TRUNC(999.99) TRUNC(999.99,1) TRUNC(999.99,-2) 
    转换函数
    To_char 转化字符。eg: SELECT  TO_CHAR( ‘AABBCC‘ )  FROM  dual;
    To_date  转换日期。eg:SELECT  TO_DATE( 2454336 ,  ‘J‘ )  FROM  dual;  SELECT  TO_DATE( ‘2007-8-23 23:25:00‘ ,  ‘yyyy-mm-dd hh24:mi:ss‘ )  FROM dual;
    To_number  转换数字 eg: SELECT TO_NUMBER(‘-100.00‘, ‘9G999D99‘) FROM dual; 
    其他函数
    NVL(表达式1,表达式2)
        如果表达式1为null,返回表达式2,否则返回表达式1;
        如果表达式类型不一致,Oracle将表达式2转换为表达式1的类型
    NVL2(表达式1,表达式2,表达式3)
        如果表达式1为空,返回表达式3的值,否则返回表达式2的值
    NULLIF(表达式1,表达式2)
        如果两表达式相等,返回空值,否则返回表达式1

分组函数
    Avg ()取平均数。eg:select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp;  
    Count ()返回查询出来的数据。select count(*) from emp;  
    Sum ()取和 eg:select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp; 求平均
    Max ()取最大值   eg:--max和min:求最高工资和最低工资  select max(sal) 最高工资,min(sal) 最低工资 from emp;  
    Min ()取最小值   eg:--max和min:求最高工资和最低工资  select max(sal) 最高工资,min(sal) 最低工资 from emp;

时间: 2024-12-07 15:50:37

orcale开篇的相关文章

2016年开篇 - 敏捷与成果经济

Manifesto for Agile Software Development 敏捷软件开发宣言 Individuals and interactions over processes and tools 个体和互动 高于 流程和工具 Working software over comprehensive documentation 工作的软件 高于 详尽的文档 Customer collaboration over contract negotiation 客户合作 高于 合同谈判 Resp

2015黑帽大会开篇:“互联网自由和开放正走向消亡”

2015年黑帽大会于上周三在拉斯维加斯正式拉开帷幕,本次大会新增关注互联网文化中的法律角色极其暗淡前景的话题. 当天开讲人Jennifer Granick,系斯坦福大学社交网络中心公民自由系主任,因其在合法防御黑客方面的建树而知名,以理想主义的口吻开篇. "我一直坚信自由和开放的互联网终将到来.且我一直相信我们需要一个信息可免费获取的世界,"Granick这样说道,"我认为人们可以自由获取tinker--这样的手动命令人们应该能够研究.操控乃至对定义着世界的设备和软件进行反向

Android异步加载全解析之开篇瞎扯淡

Android异步加载 概述 Android异步加载在Android中使用的非常广泛,除了是因为避免在主线程中做网络操作,更是为了避免在显示时由于时间太长而造成ANR,增加显示的流畅性,特别是像ListView.GridView这样的控件,如果getView的时间太长,就会造成非常严重的卡顿,非常影响性能. 本系列将展示在Android中如何进行异步加载操作,并使用ListView来作为演示的对象. 如何下载图像 下载自然是需要使用网络,使用网络就不能在主线程,在主线程就会爆炸.所以我们必须要在

OPC学习开发记录(C#):OPC客户端【开篇】

OPC客户端 1.前言 思前想后,还是写下来实在一点,一来可以对自己的学习开发结果进行总结,二来可以锻炼自己表达能力,如何能够将意思表达清楚.博客园真的没有认真做做记录,也不会排版,丑的一比.关于OPC开发的,从零慢慢开始学习(谁不是呢),从简单的开始,OPC客户端是怎么使用的问题,站在用户(相对)的角度,也是比较简单的一部分,易从这一部分入手.根据网上的源码,我很快就自己开发了一个将就能用的OPC客户端,主要目的还是掌握OPC的结构和用法,为以后OPC服务器开发做铺垫.本篇为记录开篇,新手上路

webService(一)开篇

Webservice技术在web开发中算是一个比较常见技术.这个对于大多数的web开发者,别管是Java程序员还是.NET程序员应该都不是很陌生.今天我就和大家一起来学习一下webservice的基本内容.此篇文章作为webservice的开篇,首先我们来看一下什么是webservice.他能干什么用呢? 什么是webservice Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务. 用简单点的话说,就是系

Html5 Egret游戏开发 成语大挑战(一)开篇

最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力,在开发中最浪费时间就是设计和调试的阶段,js的语言过于自由,自由到有时候写错了都不知道,但typescript可以使用开发IDE帮助排错和调试,不得不说确实很有效率,在这之前,我在egret论坛里发了几个小游戏做练手,最近的一个<疯狂猜歌名>在素材齐备的情况下,仅用了不到1天的时间完成了开发,以

[转]MVVM架构~mvc,mvp,mvvm大话开篇

MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller. 在MVC里,View是可以直接访问

sqlserver分页;mysql分页;orcale分页 的sql 查询语句

1 一,sqlserver分页: 2 SELECT TOP (每页显示的数据条数) *FROM 表名 WHERE (ID NOT IN (SELECT TOP ((当前页码 -1)*每页显示的数据条数 -1) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 3 二:mysql分页 4 select * from 表名 where id limit((当前页码 -1)*每页显示的数据条数,当前页码 * 每页显示的数据条数); 5 三:orcale分页

JAVA 多线程开篇 -从按顺序打印ABC开始

序言 很想把一个问题弄清楚,特别是以前一直模模糊糊的并发编程,今天在华为OJ上碰到一道题,“顺序打印ABC的两种方法开始写起”,就以这道题开篇,希望日后有时间把并发编程的基本问题弄清楚. 问题 启动三个线程,一个线程打印A,一个打印B,一个打印C,按顺序打印ABC.....如输入3,输出就是“ABCABCABC” 程序 线程的调度是由系统操作的,要想多个线程按照要求顺序打印,就必须做好线程间的同步. 思路:四个线程循环打印,但是一个线程打印一个字母释放锁后无法确定获得锁的是哪一个线程,这就需要用