文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

18Oracle入门

2019-02-11 04:06

关注

18Oracle入门

1 Oracle的服务

Oracle的监听服务:OralceOraDB12Home1TNSListener 需要通过程序链接数据库进行开发的时候,此服务必须打开,如果只是在本机使用,此服务可不启动

Oracle 的实例服务:OracleServiceORCL,默认启动

1.1数据库的链接访问

运行SQL Plus,输入用户名和密码。

如果需要解锁账户,打开cmd,输入sqlplus / as sysdba。在SQL提示符后面输入alter user system identified by root;alter user system account unlock;

再次输入用户名和密码,显示成功。

访问oracle的web端:https://localhost:5500/em/login

如果需要登录sys用户,用户名输入sys /as sysdba。

这样,就建立了虚拟机上的oracle连接。

2.Oracle数据库介绍

oracle文件中,后缀名为ora或dbf的表示数据文件,为ctl的是控制文件,为log的

是日志文件。

Oracle数据库指的是一个库。

一个oracle实例有一系列的后台进程和内存结构组成。一个Oracle数据库可以有多个实例。

用户是建立在实例下的,不同的实例可以创建相同名字的用户 。

表空间是oracle对物理数据库上相关数据的逻辑映射,一个数据库在逻辑上可以被划分为一个或者若干个表空间,每一个表空间包含了在逻辑上相关的一组结构。

每一个数据库实例至少有一个表空间(system表空间),每一个表空间有同一磁盘上的一个或多个文件组成,这些文件叫数据文件,一个数据文件只能属于一个表空间。

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中,实际是在一个或者多个数据文件中。一旦数据文件被加入到某一个表空间后,就不能删除这个文件。

如果要删除某个数据文件,只能删除其所属的表空间才可以删除表的数据,是由用户放入某一个表空间的,而这个表空间会随机的把这些数据放到一个或者多个数据文件中。

oracle数由用户和表空间对数据进行管理和存放的。表不是由表空间查询的,而是由用户去查询

oracle数据库对实例:一对多

表空间和用户隶属于实例。

用户对表空间:多对一

表空间对数据文件:一对多

表对数据文件:多对多

3.Oracle12C创建实例数据库

3.1创建用户并分配权限

登录客户端,新建命令窗口。

-- 创建scott用户
 create user scott identified by tiger;
 --为scoot赋予权限
  Grant connect,RESOURCE,UNLIMITED TABLESPACE TO scott;
  --设置用户使用的表空间
  ALTER USER scott default tablespace users;
  --设置用户的临时表空间
  Alter user scott Temporary tablespace  temp;

 

create user 用户名 identified by 密码;

grant xxx to 用户名;xxx可以是连接权限,资源权限,无限制的表空间权限。如果没有分配无限制表空间,则必须制定一个值。

alter user 用户名 default tablespacce 默认表空间名。

alter user 用户名 temporary tablespacce 暂时表空间名。

3.2创建实例库和增加示例数据

前提:该用户必须具备创建表的权限。

oracle的数据类型

varchar2(size) 可变长字符串

char(size) 定长字符串

number(p,n) 可变长数值类型

date 日期型

long 可变长字符数据,最大可达2G

clob 字符数据,最大可达4G

blob 二进制数据,最大可达4G

3.3DDL语句

修改表:alter table

追加列:add(列名 列类型 限定条件);

修改列:modify(列名 列类型 限定条件);

删除列:drop column列名;

重命名列:rename column 原来列名 to 新列名;

删除表:

drop table 表名;

清空表:

delete from 表名;

truncate table 表名;

delete和truncate的区别:delete删除的数据在未提交之前,可以回滚,不释放占有的空间和资源;truncate删除的数据,删除之后不可回滚,释放占有的存储空间和资源。

重命名表:

rename 表名 to 新表名;

4 SQL Select

4.1 SQL概述

SQL是一门语言 :结构化查询语言

SQL是最重要的关系型数据库操作语言,是所有的关系型数据库管理系统的标准语言。

关系型数据库: oracle mysql sqlserver

nosql : redis mongdb Hbase

SQL 语言是一种非过程化语言,只需要提出做什么,而不需要指明怎么

SQL语言的作用:

1 可以对数据库的数据进行增删改查操作(CRUD)

2 数据库的对象进行创建 修改 删除操作。

3 用户赋权限 取消权限 角色赋权限 取消权限 给用户关联角色

4 事务控制

4.2 SQL的分类

DML:数据操纵语言

DDL:数据定义语言

DCL:数据控制语言

4.2.1 DML

DML 用于查询与修改数据记录 包括:

4.2.2.DDL

用于定义数据看的结构 比如创建 修改或删除数据库对象。包括:

4.2.3 DCL

用来控制数据库的访问,包括:

4.3 SQL语句的书写规范

1 使用大小写规范提供词义的识别能力

2 使用空格提供良好的语言标记区分

等号的两边要使用空格

在逗号的后面使用空格

3 使用缩进提高语句的逻辑层次表达能力

4 使用垂直空白提供关键字和参数的区分能力

5 注释:

单行注释:--

多行注释:

mysql中的注释是:#

5 基本的Select 语句

select *| { [ditinct] columnname|expression [alias],..} from  tablename;

 

SELECT 标识选择的列

FROM 标识从那个表查询

5.1选择全部列

SELECT * FROM dept;--* 表示查询所有的列
SELECT deptno,dname,loc from dept;

 

5.2 选择特定的列

SELECT empno,ename,job,sal from emp;

 

注意:

5.3 使用运算法

5.3.1 数学运算符:

数字和日期使用的算术运算符: + - * /

 -- 查询所有的员工的姓名  职位 薪资  为每个员工涨薪1000元
 SELECT ename, job, sal, sal + 1000 FROM emp;

 

5.4 操作符的优先级

+   -   *  /
 --查询所有的员工的姓名  职位 薪资  为每个员工涨薪1000元  并计算涨薪后的年薪
 SELECT ename,job ,sal, (sal + 1000) * 12 FROM emp;

 

5.5 定义空值

  -- 查询所有的员工的姓名  职位 薪资 和奖金
  SELECT ename, job, sal,comm FROM emp;

 

5.5.1 空值在数学运算中的使用

-- 查询所有的员工的姓名  职位 薪资 和奖金  以及年收入(薪资 * 12 ) + 奖金
SELECT ename,job,sal,comm, sal * 12 + comm FROM emp;

 

包含空值的数学表达式的值为空值

5.6 列的别名

别名紧跟列明之后,之间需要保留一个空格。也可以在别名和列明之间加入关键字 AS 别名可以使用双引号,以便在别名中包含空格或特殊的字符 并区分大小写

--查询所有的员工的姓名  职位 薪资 和奖金  以及年收入(薪资 * 12 ) + 奖金
SELECT ename AS name, job,sal salary,comm, sal *12  AS "year salary" FROM emp;

 

5.7. 连接符 ||

--查询所有员工的姓名 职位 薪资 作为员工的个人基本信息 拼接在一起
SELECT ename || "-" ||job || "-" ||sal AS "Employee info" FROM emp;

 

拼接后的值成为一列

5.8 字符串

5.9 重复行

--查询EMP表中所有雇员的部门编号   distinct
SELECT distinct deptno from emp;

 

6.SQL 和SQL plus

SQL:一种语言 控制数据库中的数据和结构的定义

SQL *PLUS 一种环境,提供了sql语句执行的一个环境

6.2 字符和日期

字符和日期 要包含在单引号中

字符大小写敏感的 日期格式敏感

默认的日期格式 :DD-MON月-RR

--查询20部门的所有雇员信息

select * from emp where deptno=20;
-- 查询姓名为SMITH的雇员的基本信息  此时的字符串的匹配 是严格匹配大写小的
select * from emp where ename="SMITH";
-- 查询入职日期为17-12月-80的雇员信息
SELECT * FROM emp WHERE hiredate="17-12月-80";

 

6.3 比较运算

与java中的关系运算符类型,注意相等判断是=。

6.4 其他比较运算符

between ... and 介于...之间

in(值1,值2,值3,...) 等于其中的任意一个

like 模糊查询 匹配查询

is null 值为空

6.5 逻辑运算

and

or

not

sql语法中没有短路与和短路或

6.6运算符的优先级:

算术运算符 < 连接符 < 比较符 < is null 、like ,in < BETWEEN AND < NOT

7排序

ORDER BY子句

ASC:升序 从小到大

DESC: 降序 从大到小

order by 子句在select 语句的结尾

8 SQL函数

函数就是java中的方法 :函数有输入有输出 输入就是参数 输出就是结果 而且输入可以是多个 输出的结果只有一个

SQL函数分为:单行函数和多行函数

8.1单行函数

单行函数:只能对一行进行变换,每行返回一个结果。可以转换数据类型 在使用的时候 还可以嵌套。参数可以是一列或一个值。

单行函数: 字符 数值 日期 转换 通用

8.2字符函数

8.3数值函数

8.4日期函数

8.5转换函数

8.5.1 to_char详细使用

to_char函数对日期的转换:to_char(date,"format_model")

必须包含单引号 其中的format_model是大小写敏感

可以包含任意的日期格式

数值型转换为字符型 to_char:to_char(123.45,"$999,999.00")->¥123.45

9 表示数字 0 表示0 $ 表示美元 L 表示本地货币 .表示小数点

8.6聚组函数(多行函数)

8.7分析函数

  1. 值域窗(RANGE WINDOW) range n preceding 仅对数值或日期类型有效,选定窗为排序后当前行之前,某列(即排序列)值大于/小于(当前行该列值 –/+ N)的所有行,因此与ORDER BY子句有关系。

  2. 行窗(ROW WINDOW) rows n preceding 选定窗为当前行及之前N行。 还可以加上BETWEEN AND 形式,例如row between m preceding and n following

  3. 使用函数分析窗中的内容

  4. 分组求和:group by

    1. grouping sets(x,xx,xxx):等效于分别按照x,xx,xxx分组得出结果后,再并起来的结果

    2. rollup(x,xx,xxx):等效于分别按照(x,xx,xxx),(x,xx),(x),null分组得出结果后,再并起来的结果

    3. cube(x,xx,xxx):等效于grouping sets(),参数是它的所有子集

    4. grouping :用于测试该行是不是前三种方式添加出来的,是则值为1,不是值为0。

8.7.1 sum(...) over(....)

sum(exp)over(分区/排序):连续求和,只有最后一行的值才是sum()。第二行就是第一行+第二行。

8.7.2 rank() dense_rank()

rank()over(条件/排序/分区)

dense_rank()over(条件/排序/分区)

dense_rank在并列关系是,相关等级不会跳过。rank则跳过。 rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。

8.7.3 row_number()

row_number()over(排序):先执行排序,再返回排序后的行号

select name,seqno,description 
from(select name,seqno,description,row_number() over (partition by name order by seqno) id
from table_name) where id<=3;

 

按照名字分区,再按照seqno升序排序得到排名id,只返回id前2的结果,最终返回过滤id后的结果

8.7.4 lag() lead()

lag(expr,offset,default) lead(expr,offset,default)

lag(列):取上一个该列值作为值

lead(列):取下一个该列值作为值

OFFSET是缺省为1 的正数,表示相对行数。希望检索的当前行分区的偏移量

default是超出范围时自动返回的值,默认是null

8.8其它函数

9多表查询

多表查询要克服笛卡尔积的问题,需要使用where设置关联条件。

等值连接:where后面的逻辑运算符是=。

非等值连接:where后面使用其他逻辑运算符。

内连接:结果集中只包括匹配且关联列不为null的行。

外连接:结果集中也可以匹配关联列为null的行。

外链接的实现:(1)关键字left outer join /right outer join/full outer join

(2)在where子句的列后面加上"(+)",表示这个表可以有null,另一个表全部显示

全部显示的表是主表,另一个表是从表。

(+)在左边是右外连接。

(3)join 关键字后面用on不用where。(+)前面只能用where

叉集:cross join 得到笛卡尔积

自然连接:natural join 以表中具有相同名字的列作为条件,创建等值连接。

使用using子句创建连接:using(列名),using与join连用,不需要给表取别名

使用on子句创建连接:on与join连用,可以进行多表连接

10子查询

子查询:where后面的子句是另一个查询的结果,称为子查询

子查询优先于父查询执行

多行子查询、嵌套子查询

子查询修饰符:

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯