Oracle学习整理
用 startup 命令启动数据库,用 shutdown 命令关闭数据库
Oracle SQL 语句由如下命令组成:
数据定义语言(DDL),包括 CREATE (创建)命令、ALTER (修改)命令、DROP(删 除)命令等。
数据操纵语言(DML),包括 INSERT(插入)命令、UPDATE(更新)命令、DELETE (删除)命令、SELECT … FOR UPDATE(查询)等。
数据查询语言(DQL),包括基本查询语句、Order By 子句、Group By 子句等。
事务控制语言(TCL),包括 COMMIT(提交)命令、SAVEPOINT(保存点)命令、 ROLLBACK(回滚)命令。
数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。
1、创建用户
CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]
LOCK|UNLOCK 创建用户时是否锁定,默认为锁定状态。锁定的用户无法正常的登录进 行数据库操作。
2、授权(CONNECT、RESOURCE、DBA)
GRANT角色|权限 TO 用户(角色)
GRANT CONNECT TO jerry; 授权成功。 GRANT RESOURCE TO jerry; 授权成功。
//回收权限
REVOKE 角色|权限 FROM 用户(角色)
//修改用户的密码
ALTER USER 用户名 IDENTIFIED BY 新密码
//修改用户处于锁定(非锁定)状态
ALTER USER 用户名 ACCOUNT LOCK|UNLOCK
3、创建约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容。
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) ;-- 主键约束 ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女');--check 约束 ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) ;--唯一约束
根据结果集创建表: CREATE TABLE INFOS1 AS SELECT * FROM INFOS;
集合运算就是将两个或者多个结果集组合成为一个结果集。
集合运算包括:
INTERSECT(交集),返回两个查询共有的记录。
UNION ALL(并集),返回各个查询的所有记录,包括重复记录。
UNION(并集),返回各个查询的所有记录,不包括重复记录。
MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩 余的记录。
表连接
外连接:不完全匹配
左连接: FROM e JOIN d ON e.id = d.id(+) 左边数据全部显示,右边匹配不上的部分用空值代替
右连接: FROM e JOIN d ON e.id(+) = d.id
select a.latn, a.guanz, nvl(b.bangd,0)from (select nvl(a.latn, '99999') latn, count(1) guanzfrom wx_run_user_state agroup by a.latn) aleft join (select nvl(a.latn, '99999') latn, count(1) bangdfrom wx_run_user_state awhere a.bind_type = 2group by a.latn) bon a.latn = b.latn
函数:
1、DECODE DECODE(AA﹐V1﹐R1﹐V2﹐R2,。。。)函数
解释: IF AA=V1 THEN RETURN R1 IF AA=V2 THEN RETURN R2 ..… ELSE RETURN NULL
2. ROUND(X[,Y]),四舍五入。 在缺省 y 时,默认 y=0;
比如:ROUND(3.56)=4。 y 是正整数,就是四舍五入到小数点后 y 位。
ROUND(5.654,2)=5.65。 y 是负整数,四舍五入到小数点左边|y|位。
ROUND(351.654,-2)=400。 3.
TRUNC(x[,y]),直接截取,不四舍五入。 在缺省 y 时,默认 y=0;
比如:TRUNC (3.56)=3。 y 是正整数,就是四舍五入到小数点后 y 位。
TRUNC (5.654,2)=5.65。
TRUNC (351.654,-2)=300。y 是负整数,四舍五入到小数点左边|y|位。
4、截串 SUBSTR(表达式,位置,长度)
select substr('asdfghjkl',1,4) from dual; --asdf
select SUBSTR('abcdefg', LENGTH('abcdefg')-3+1, 3) from dual; --efg
SUM(DECODE(SEX, '男', 1, 0)) 筛选出行被为男的记录 并加1
SUM(DECODE(SEX, '女', 1, 0)) 筛选出行被为女的记录 并加1
5、日期函数
1. ADD_MONTHS(d,n),在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期。 d 表示日期,n 表示要加的月数。
select sysdate,ADD_MONTHS(sysdate,2) from dual;
2、LAST_DAY(d),返回指定日期当月的最后一天。
select sysdate,LAST_DAY(sysdate) from dual;
3、ROUND(d[,fmt]),返回一个以 fmt 为格式的四舍五入日期值, d 是日期, fmt 是格式 模型。默认 fmt 为 DDD,即月中的某一天。
select sysdate,ROUND(sysdate),ROUND(SYSDATE,'YEAR'),ROUND(SYSDATE,'MONTH'),ROUND(SYSDATE,'DDD'),ROUND(SYSDATE,'DAY') from dual; select sysdate,TRUNC(sysdate),TRUNC(SYSDATE,'YEAR'),TRUNC(SYSDATE,'MONTH'),TRUNC(SYSDATE,'DDD'),TRUNC(SYSDATE,'DAY') from dual;
4. EXTRACT(fmt FROM d),提取日期中的特定部分。
SELECT SYSDATE "DATE",EXTRACT(YEAR FROM SYSDATE) "YEAR",EXTRACT(MONTH FROM SYSDATE) "MONTH",EXTRACT(DAY FROM SYSDATE) "DAY",EXTRACT(HOUR FROM SYSTIMESTAMP) + 8 "HOUR",EXTRACT(MINUTE FROM SYSTIMESTAMP) "MINUTE",EXTRACT(SECOND FROM SYSTIMESTAMP) "SECOND"FROM DUAL;
5.NVL2
NVL2(x,value1,value2) 如果 x 非空,返回 value1,否则返回 value2
SELECT E.EMPNO,E.ENAME,E.JOB,E.MGR,E.HIREDATE,E.SAL,NVL2(E.COMM,e.comm+100,200),E.DEPTNO FROM EMP E WHERE E.SAL<2000;
6、同义词(Synonym)
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [schema.]synonym_name FOR [schema.]object_name
GRANT CREATE SYNONYM TO XiaoMei;
CREATE SYNONYM MyEmp FOR SCOTT.EMP;
7、序列 序列(Sequence)是用来生成连续的整数数据的对象
CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVALUE num|NOMAXVALUE] [MINVALUE num|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE num|NOCACHE]
解释:
START WITH:从某一个整数开始,升序默认值是 1,降序默认值是-1。
INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是 1,降序默认值是-1。
MAXVALUE:指最大值。
NOMAXVALUE:这是最大值的默认选项,升序的最大值是:10^27,降序默认值是-1。
MINVALUE:指最小值。
NOMINVALUE:这是默认值选项,升序默认值是 1,降序默认值是-10^26。
CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最 小值后,从最大值重新开始。
NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认 NOCYCLE。
CACHE:使用 CACHE 选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。 Oracle 默认会生产 20 个序列号。
NOCACHE:不预先在内存中生成序列号。
8、视图:
视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中 查询信息与从表中查询信息的方法完全相同。只需要简单的 SELECT…FROM 即可。
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name AS SELECT查询 [WITH READ ONLY CONSTRAINT]
转载于:https://www.cnblogs.com/lanceblog/p/4046311.html
Oracle学习整理相关推荐
- 分享丨10年DBA老司机整理的Oracle学习路线图
微思10年资深DBA吴老师呕心沥血的分享总结-Oracle学习路线图,看完没收获你打我. 学习Oracle的前提是:熟悉Linux操作系统.Unix操作系统. 学习方法 1.sql.pl/sql 作为 ...
- 【DBA】 Oracle 学习路线
[DBA] Oracle 学习路线 出差归途火车上,有几个小时的时间,正好可以把Oracle 知识的学习框架梳理一下,这些都是Dave对Oracle的一些理解,共初学者参考. 本篇文章只介绍知识点,不 ...
- Oracle碎片整理问题
原 Oracle 碎片整理 问题https://blog.csdn.net/tianlesoftware/article/details/4763768版权声明: https://blog.csdn. ...
- Dave Oracle 学习 手册 第一版 下载 说明
2011年初的时候,花了大半个月的时间,把以前Blog上的资料重新分门别类的小整理了一下,当时还想整理的完整一点,可整理文档是一件很费时间的事,因为做技术要严谨,自己的一些小失误,或者错误的理解,同样 ...
- 开辟ORACLE 学习之路,努力的去成为DBA
开辟ORACLE 学习之路,努力的去成为DBA IT的日子让我奋斗的时候,忘了下班:高兴时候,和朋友聚聚餐,出去游玩一下:迷茫时候,让自己踌躇满志,犹豫不前~ 总体来说IT的日子自己还要坚持下去,一步 ...
- 1. oracle学习入门系列之一 数据库发展与历史
oracle学习入门系列之一 数据库发展与历史 这个oracle学习入门系列是根据本人工作中的一些笔记.项目进行回忆.整理.一方面是自己知识积累,便于技能提升:另一方面是和小伙伴们共进退互通有无,做一 ...
- Oracle 数据库整理表碎片
Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...
- 怎样学好Oracle子查询,Oracle学习(六):子查询
Oracle学习(6):子查询 子查询 为何要用子查询 SQL> --查询工资比SCOTT高的员工信息 SQL> --1. 知道SCOTT的工资 SQL> select sal fr ...
- oracle两表链接序列跳序,Oracle学习之 序列(Sequence)
Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...
最新文章
- 明明是 64 位系统,为什么python sys.platform 显示 win 32 ?
- java中Hashtable中的t为什么是小写(转)
- 小型荧光驱动电路实验电路
- http 的一生: 一、特点与 URL解析
- 第一讲 ODE几何方法
- 超级强大的心理定律~~!你可以变成你想要的样子!~
- html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解
- PWN-PRACTICE-BUUCTF-6
- 刷网络课_网络营销实践心得—刘荟萌
- HIVE: hive.error.on.empty.partition
- python进度条先慢后快_tqdm学习-一个快速,可扩展的Python和CLI进度条
- 以一种标准的办法,获取工作目录
- opencv 识别长方形_利用opencv识别并提取图片中的矩形
- OpenCV c接口与c++接口
- 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?
- 直播美颜滤镜软件加持下的网络直播
- 盛世乐居回应近期股价波动
- 第一周学习任务:百鸡问题扩展-N鸡问题
- return 的作用
- 机器学习性能评估——PR曲线与ROC曲线