Loading

Oracle数据库基础学习笔记

Oracle 数据库基础

Oracle → 甲骨文

Oracle数据库是一种关系型数据库,由行和列组成

数据:文字、图片、视频

  • DB(DataBase) 数据库: 用于存储数据的仓库
  • 数据库存储数据的最小单位是表 Table,遵循sql标准
  • DBS(DataBase System): 数据库系统
  • DBMS(DataBase Management System)数据库管理系统
Oracle:数据库的版本
Oracle DB 版本功能
Oracle7、Oracle8 本地化访问
Oracle8i、Oracle9i 可以网络访问
Oracle10g、Oracle11g 支持网格访问、分布式操作
Oracle12c 支持云技术访问
市场上常见的数据库:
参数\数据库 Excel、Access Sql、Server(MicroSoft)、MySQL(Oracle) Oracle(Oracle) DB2 (IBM)
存储量 2W条之内 10W 级别 1000W 级别 1000W 级别
安全性 账号/密码 账号/密码 账号/密码/权限
费用 0 0 服务收费 服务收费

单表存储的数据达到了千万级别(不影响查询效率)

SQL(Structured Query Lanuage)结构化查询语言:

不同数据库之间差异性
  1. 数据类型
  2. 库函数
  3. PL/SQL编程:函数、存储过程、触发器、游标等

1. 启动数据服务: (Oracle 控制面板 → 管理工具 → 服务)

OracleService + 实例名(OracleServiceOrcl)

2. 启动数据库服务监听器,让客户端可以连上数据:

OracleOraDb10g_home1TNSListener

帐号密码:system/system 数据库:orcl

3. Oracle的数据类型:

3.1 数据类型:number

​ number():代表一个数值类型,默认是38位最大

​ number(n):代表一个n位的整数,number(3) → (- 999 — 999)

​ number(n,m):代表n位有效数字,小数部分占2位

3.2 字符串类型
char(n) :定长的字符串,最大只能存储3个字节(一个汉字)

char(10):只能存储10个字符 不足也用10字符存储 —— 浪费存储空间,但查询效果高于varchar,最大值是2000字符

varchar(n):变长的字符串

varchar(10):最多10个字符,不足按照实际大小存储 —— varchar最大值是4000字符

varchar2(Oracle10g 开始)

varchar2(n):变长的字符串对varchar进行优化 —— 查询效率比varchar高,其他都一样,varchar最大值是4000字符

3.3 时间类型

data:精确到 年、月、日、时、分、秒

timestamp:精确到 年、月、日、时、分、秒、毫秒的后5位)

3.4 大字段类(大数据)

blob:二进制方式存储的大字段(大数据):视频文件、图片文件(最大值4G)

clob:字节码存储的大字段(大数据):(最大值4G)

DDL:数据定义语言

DML:数据操纵语言

TCL:事务控制语言

DCL:数据控制语言

DQL:数据查询语言

4. DDL语句(数据库定义语言)

表名、列名命名规范:
以(字母,- $ _)为首字母,后面跟(字母,- $ _ 数字),不能是Oracle关键字
4.1 创建表
create table 表名{
	列名1 数据类型,
	列名2 数据类型,
	.......
	列名n 数据类型
	}
4.2 修改表结构
新增列:
alert table 表名
	add(
	列名1 数据类型,
	列名2 数据类型,
	.......
	列名n 数据类型
	)
修改列的数据类型:
alter table 表名
modify 列名 新的数据类型;
注意:新的数据类型必须兼容老的数据类型
删除列:
alter table (表名) drop column (列名);
修改列名:
alter table 表名rename(列名) to(新的列名);
修改表名:
rename (表名)to (新的表名)
4.3 表的约束
数据设计的三大范式

​ 1、第一范式:列不可在分(原子性)
​ 2、第二范式:先在满足第一范式的基础上 行数据要可以区分(主键)
​ 3、第三范式 :先在满足第二范式的基础上 本表的非主属性依赖其他表 必须只能依赖其他表的主属性(外键)

添加约束:
alter table t_class
add constraint 约束名 约束类别 列
约束类别

​ 1、主键约束 primary key
​ 2、唯一键约束 unique
​ 3、检查约束 check
​ 4、外键约束 foreign key
​ 5、默认值 default

4.4 SQL 结构化查询语言 (Structured Query Language)

​ create table、alter table、drop table、truncate table

数据定义语言(DML Data Manipulation Language)

​ DML语句做添 删 改 只能影响缓冲区内容
​ DML语句必须与TCL语句配合使用才能真正影响表数据

insert into 表名(列名1,...列名n) values(值1,...值n);
			
update 表名 set 列名1=值1,...列名n=值n [where 列名xx=xxx];
			
delete from 表名 [where 列名xx=xxx];
事务控制语言(TCL->Transaction Control Language)

​ commit; 提交事务
​ rollback; 回滚

数据查询语言(DQL Data Query Language)
select 列名1,...列名n from 表名 [where 列名xx=xxx];

5. 内置函数

5.1 字符函数:

​ lower: 大写转为小写
​ upper: 小写转为大写
​ initcap: 把首字母转为大写
​ instr: 查找某个字符在字符串中的下标
​ concat: 拼接字符串
​ substr: 截取字符串
​ trim: 去除前后空格
​ lpad: 从左边对字符串使用指定的字符进行填充
​ rpad: 从右边对字符串使用指定的字符进行填充
​ replace: 替换
​ length: 计算字符串长度

5.2 数值函数:

​ round: 四舍五入
​ floor: 向下取整
​ ceil: 向上取整
​ trunc: 截断

5.3 时间函数:

​ sysdate: 获取当前系统时间
​ current_date: 获取当前系统时间
​ current_timestatmp: 获取当前系统时间(毫秒)
​ months_between: 计算两个时间相隔多少个月
​ add_months: 计算当前时间后面n个月之后的时间
​ last_day: 计算当前时间所在月份的最后一天
​ next_day: 从当前时间开始计算,距离最近的一个星期几的日期(外国一个星期的第一天是星期日)

5.4 转换函数:

​ to_number: 把数据转为数值型
​ to_char: 把数据转为字符型
​ to_date: 把数据转为时间型

5.5 通用函数:

​ mvl:nvl(值,1) 判断值是否为null,若为null,取1,否则取值
​ nvl:nvl2(值,值1,值2) 判断值是否为null,若为null,取值2,否则取值1

5.6 case when: 通用条件表达式
5.7 decode: 特有函数计算方式
5.8 dense_rank() over(partition by)不考虑并发情况下的分区域
5.9 row_number() over(partition by)考虑并发情况下的分区域
5.10 rank() over(partition by) rownum 如果没有出现并发情况则只出现前三个的分区域排序,如果出现并发情况,则显示所有并列的数据

is null 数据为null

is not null 数据不为null

= 等于

<> != 不等于

or 或者

and 并且

in 在...里面

not in 不在...里面

between and 在...范围内

not between and 不在...范围内

group by 目的是为了使用聚合函数 sum avg min max count

group by 哪个字段,就只能查询哪个字段

子查询:把查询出来的结果当作条件继续查询

6. 表链接:

6.1 自连接:是内连接的一种特殊形式,自己与自己连接
A表 inner join A表 on A.字段 = A.字段
A表 A表 where A.字段 = A.字段
6.2 内连接:n张表进行连接,约束条件至少为 n-1 个,相匹配的数据显示出来,不相匹配的数据不显示
等值连接:
A表 inner join B表 on A.字段 = B.字段
A表 B表 where A.字段 = B.字段
非等值连接:
在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>
6.3 外连接:
左外链接:

​ N 张表进行连接,约束条件至少为 n - 1 个,以左表为驱动表(主表),左表中数据都显示出来,右表中相匹配的数据显示出来,不相匹配的显示为null

右外连接:

​ N 张表进行连接,约束条件至少为 n - 1 个,以右表为驱动表(主表),右表中数据都显示出来,左表中相匹配的数据显示出来,不相匹配的显示为null

全外链接:

​ N 张表进行连接,约束条件至少为 n - 1 个,内连接相匹配的数据 + 左外链接没有匹配的数据 + 右外连接没有匹配到的数据

6.4 笛卡尔连接
select * from A表,B表
select * from A表 cross join B表

7. DCL语言(数据控制语言):grant revoke

DBA、RESOURCE、CONNECT 三种标准角色
赋权方式:

​ 直接把权限赋予用户

​ 把角色赋予用户,不同的角色所拥有的权限不一样

7.1 创建用户
create user ztkj1710 identified by admin
7.2 赋予权限 grant
grant connect to ztkj1710
grant create session to ztkj1710
7.3 收回权限 revoke
revoke connect from ztkj1710

posted @ 2021-05-12 02:38  Schieber  阅读(343)  评论(0编辑  收藏  举报