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)结构化查询语言:
不同数据库之间差异性
- 数据类型
- 库函数
- 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