欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初识Oracle数据库基础笔记

程序员文章站 2022-03-05 17:07:33
Oracle 数据库 Oracle → 甲骨文 Oracle数据库是一种关系型数据库,由行和列组成 数据:文字、图片、视频 DB(DataBase) 数据库: 用于存储数据的仓库 数据库存储数据的最小单位是表 Table,遵循sql标准 DBS(DataBase System): 数据库系统 DBM ......

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