oracle数据库的使用

文章目录

1.Oracle 的表空间分类

1.1永久表空间

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存
放在指定的表空间中。但主要存放的是表,所以称作表空间。

1.2临时表空间

Oracle 临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因
是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间。

1.3创建永久表空间命令

create tablespace 永 久 表 空 间 名 称 datafile ' 永 久 表 空 间 物 理 文 件 位 置 ' size 15M
autoextend on next 10M permanent online;      autoextend on next 10M 表示表空间大小如果超过15M则自动扩容10M,autoextend on next 10M 表示永久的意识

记住oracle的安装目录,创建表空间需要用户目录
在这里插入图片描述
创建永久表空间,位置在oracle安装目录下
在这里插入图片描述
在这里插入图片描述
当我们创建用户时,选则自己创建的表空间,此时的用户创建的表和表中的数据都在自己创建的表空间里
临时表空间不需要创建
注:创建表空间需要在sys和system用户下创建表空间,普通用户没有权限

2 、创建用户

2.1 通过 PL/SQL Developer 工具创建用户

在这里插入图片描述
注意:需要sys用户登陆数据库
在这里插入图片描述

登陆用户
在这里插入图片描述
缺少会话的权限,没有权限,需要分配连接权限
在这里插入图片描述

3 分配用户权限

在这里插入图片描述

3.1对象权限(Object privileges)

对象权限是指在指定的表,视图,序列上制定执行动作的权限或权利。(表和视图序列存储过程都称为数据库对象)

3.2角色权限(Role privileges)

角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理。

3.3系统权限(System privileges)

为用户分配创建表、创建用户、创建视图、创建存储过程等权限。

4 分配链接权限

为当前用户分配一个 connect 链接角色,connect表示链接
在这里插入图片描述

5 分配系统权限

创建表的时候提示没有权限,需要创建系统权限
在这里插入图片描述
设置权限
在这里插入图片描述

在这里插入图片描述

此时创建表后提交,发现继续报错:提示用户对表空间无权限
在这里插入图片描述
添加不限制表空间
在这里插入图片描述
设置用户全部权限,可以给用户dba角色
在这里插入图片描述

6、oracle的连接配置

6.1 文件位置

Oracle 目录\product\11.2.0\dbhome_1\NETWORK\ADMIN
在这里插入图片描述

6.2 sqlnet.ora

名称解析。通过这个文件来决定怎么样找一个连接中出现的连接字符串。
如:sqlplus bjsxt/oracle@orcl
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

在这里插入图片描述

6.3 tnsnames.ora

用在 oracle client 端,用户配置连接数据库的别名参数,就像系统中的 hosts 文件一样。
在这里插入图片描述

6.3.1ORCL

客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。

6.3.2PROTOCOL

客户端与服务器端通讯的协议,一般为 TCP,该内容一般不用改。

6.3.3HOST

ORACLE 服务器端 IP 地址或者 hostname。确保服务器端的监听启动正常。

6.3.4PORT

数据库侦听正在侦听的端口,此处 port 的值一定要与数据库侦听正在侦听的端口一样。

6.4 listener.ora

用在 oracle server 端,可配置 Oracle 的监听端口

6.4.1LISTENER

监听名称,可以配置多个监听,多个监听的端口号要区分开来。

6.4.2PROTOCOL

监听协议,一般都使用 TCP 。

6.4.3HOST

本机 IP 地址或者 localhostname。

6.4.4PORT

监听的端口号。

7、 Net Configuration Assistant 工具

7.1 配置监听程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 Oracle 本地网络服务配置

7.2.1配置本地网络服务要求:

1,防火墙需要关闭
2,相互是可 ping 通的

7.2.2配置方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8、Oracle 基本操作

1 Oracle 中的数据类型

1.1 字符类型

字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型
(VARCHAR2/NVARCHAR2)两种。

1.1.1 CHAR 类型

CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR (12)
总是包含 12 字节信息。一个汉字是3个字节,CHAR 字段最多可以存储 2,000 字节的信息。如果创建表时,不指定 CHAR 长度,则默认为 1。

1.1.2 VARCHAR2 类型

变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度,一个汉字是3个字节,VARCHAR2 最多可以存储 4,000 字节的信息。

1.1.3 NVARCHAR2 类型

这是一个包含 UNICODE 格式数据的变长字符串。无论是汉字和其他类型,都是统一的格式,一个表示一个字符, NVARCHAR2 最多可以存储 4,000字节的信息。

1.2数字类型

1.2.1 NUMBER 类型

NUMBER(P,S)是最常见的数字类型。
P 是 Precision 的英文缩写,即精度缩写,表示整数的位数,最多不能超过 38 个有
效数字。
S 是 Scale 的英文缩写,表示小数点数字的位数。
例如:
a、number(4,3)是表示这个数一共有4位是有效位,后面的3表示有3个是小数也就是这个数,只能是1.234,这样格式的最大只能是9.999,
b、number(3,4) 表示这个数,有效位数是3位。但是有四位小数,也就是只能是这个格式0.0123最大只能是0.0999;
c、number(3,-3) 就是这个数有效位数一共3位,如果是正3,则是3位小数。如果是负数的话就是3位整数,也就是123这个格式,最大只能是999.
d、还有这样的number(2,-3) 就是这个数的有效位数是2位 但是有三位整数 所以只能是230 这样的 最大是990;

1.2.2 INTEGER 类型

INTEGER 是 NUMBER 的子类型,它等同于 NUMBER(38,0),用来存储整数。若插
入、更新的数值有小数,则会被四舍五入。

1.3浮点数

1.3.1 BINARY_FLOAT 类型

BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个
BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

1.3.2 BINARY_DOUBLE

BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE
的值需要 9 个字节,包括长度字节。

1.4日期类型

1.4.1 DATE 类型

DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数
字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值, Oracle
存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空
间。

1.4.2 TIMESTAMP 类型

这是一个 7 字节或 12 字节的定宽日期/时间数据类型。它与 DATE 数据类型不同,因为
TIMESTAMP 可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。

1.4.3 TIMESTAMP WITH TIME ZONE 类型

这是 TIMESTAMP 类型的变种,它包含了时区偏移量的值。

1.4.4 TIMESTAMP WITH LOCAL TIME ZONE 类型

将时间数据以数据库时区进行规范化后进行存储

1.5 LOB 类型

1.5.1 CLOB 类型(Character Large Object)

二进制数据,存储单字节和多字节字符数据。最大长度 4G。

1.5.2 BLOB 类型(Binary Large Object)

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度 4G。

1.5.3 NCLOB 数据类型

存储 UNICODE 类型的数据 ,最大长度 4G。

1.6 LONG & RAW & LONG RAW 类型

1.6.1 LONG 类型

它存储变长字符串(超长字符串),最多达 2G 的字符数据(2GB 是指 2 千兆字节, 而不
是 2 千兆字符)。

1.6.2 LONG RAW 类型

能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。

1.6.3 RAW 类型

用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字
符集转换。可存放多媒体图象声音等。

2 在 Oracle 中创建表

2.1 Oracle 表名命名规则

必须以字母开头
长度不能超过 30 个字符
避免使用 Oracle 的关键字
只能使用 A-Z、a-z、0-9、_#$
2.2使用带有特殊符号的表名
Oracle 在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双
引号。

3 数据库中的约束(未完待续)

3.1 定义

对一个表中的属性操作的限制叫做约束

3.2 分类

3.2.1 主键约束

不允许重复元素,不能为空,避免了数据冗余

3.2.2外建约束

保证事物所关联的其他事物一定是存在的,事物与事物之间的关系是通过外建来体现的

3.2.3 check约束

限制某一个值,在某一范围之内,保证事物属性的取值在合法的范围之内

  create table student (
   student_id  int primary key,
   stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)

3.2.4 default 约束

保证事物属性一定会有一个值,不给该属性取值时,系统会自动给该属性取默认值

create table student 
(student_id int primary key 
 stu_sal int check  (stu_sal >=1000 and stu_sal <= 8000)
 stu_sex  char(1) default '男')

insert into student(stu_id,stu_sal) values (1,100) 性别没有插入,此时执行默认值为男

3.2.5 unique(唯一约束)

保证了事物属性不允许重复,但允许为空

  create table student (
   student_id  int primary key,
   stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)
    stu_sex  char(1) default '男'
    stu_name varchar2(200) unique
    
insert into student2 values (1,6000,‘男’,‘张三’) 
insert into student2 values (2,6000,‘男’,‘张三’)  --error,违反了唯一性约束
insert into student2 values (null,6000,‘男’,‘王五’)  --error,主键不能为空
insert into student2 values (null,6000,‘男’,‘ ’)  唯一建能为空

注:stu_name varchar2(200) unique not null  unique和not null 约束可以组合使用

唯一约束和主键约束的区别
不要用业务逻辑当主键
用一个编号当主键,把哪个本来可以当主键的当做唯一建,不需要用业务逻辑当主键

create table student4 (
   student_id  int primary key identity
   stu_name  varchar2(50)  unique not null
    stu_email  varchar2(50)  not null
    stu_address varchar2(50) 
    )

3.2.6 not null 约束

要求用户必须为该属性赋一个值,否则语法出错

  create table student (
   student_id  int primary key,
   stu_email  varchar2(50)  not null,
   stu_name varchar2(200) unique,
   stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)
   stu_sex  char(1) default '男'
    
insert into student5 values (1,hb.qq.com,zhangshan,6000)    --error  有默认值也需要附值
 insert into student5 (stu_id,stu_email,stu_name,stu_sal) values (1,hb.qq.com,zhangshan,6000)  正确写法
 
insert into student5 values (stu_id, stu_email,stu_sal)values(3,'hb.qq.com',5000) --ok
select * from student5 返回直:3,hb.qq.com,null,5000,男
如果一个字段不写null,也不写not null则默认是null,即默认值允许为空可以不给该字段赋值

null 和 default区别
相同点:都允许用户不赋值
不同点:null修饰的字段如果用户不赋值则默认null。default修饰的字段如果用户不赋值则默认是default指定的值

表和约束的区别
数据库是通过表来解决存储问题
数据库是通过约束来解决事物的取直的有效性和合法性
建表的过程就是指定事物属性及其事物属性各种约束的过程

4 数据库中的表关系

4.1 定义

表和表之间的联系

4.2 实现方式

通过设置不同形式的外建来体现表和表不同关系

4.3 分类

4.3.1 一对一

既可以把表A的主键充当表B的外建
也可以把表B的主键充当表A的外建

4.3.2 一对多

把表A的主键充当表B的外键或则讲:表A表的主键添加到B表的外键,在多的一方添加外键
在这里插入图片描述

4.3.3 多对多

班级 老师
学生 老师

一个班级对应多个老师,一个老师对应多个班级
一个学生对应多个老师,一个老师对应第一个学生

在这里插入图片描述
创建表

班级表 --
create table banji 
( banji_id  int primary key 
 banji_num int not null
 banji_name varchar2(200)
 )

--教师表
create table jiaoshi
(jiaoshi_id  int primary key 
 jiaoshi_name   varchar2(200)
 )

--第三张表,用来模拟班级和教师关系
create table banji_jiaoshi_mapping
(banji_id  int constraint fk_banji_id foreign key references banji(banji_id)
jiaoshi_id int forign key references jiaoshi(jiaoshi_id),
kecheng varchar(20),
constraint pk_banji_id_jioashi_id primary key(banji_id,jiaoshi_id,kecheng)  班级id和教师id和课程组合为主键
  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小莫细说linux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值