前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle 基础--【表空间与表】【约束】【视图】

Oracle 基础--【表空间与表】【约束】【视图】

作者头像
颍川
发布于 2019-11-20 17:18:16
发布于 2019-11-20 17:18:16
88300
代码可运行
举报
文章被收录于专栏:颍川颍川
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/wangtongxue123456/article/details/79681846

  • Oracle 基础
    • 用户和表空间
      • 用户
      • 表空间
        • 查看用户的表空间
        • 设置用户默认或临时表空间 (普通用户没有次权限)
        • 查看表空间储存位置
      • 表中的数据类型
      • 创建表
      • 修改表
      • 操作表中数据
    • 约束
      • 非空约束
      • 主键约束
      • 外键约束
      • 唯一约束
      • 查看约束
      • 检查约束
      • 默认值约束
    • 视图
      • 关系视图
      • 内嵌视图
      • 对象视图
      • 物化视图

Oracle 基础

用户和表空间

用户

  • #### 系统用户
    • sys,system (系统用户)
    • sysman (操作企业管理器)
    • scott
  • #### 创建 scott
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sys@CNHTM> create user scott identified by tiger; --创建 scott 用户并设置密码 tiger
sys@CNHTM> grant connect,resource to scott; --赋予权限
  • #### 登录
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[USERNAME/PASSWORD][@SERVER][as sysdba|sysoper]
-- 如果连接远程orcle 需要输入用户名
orcle 就是设置自己设置的服务名


--连接登录实例
sql>connect scott/tiger
  • #### 查看用户登录
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show user
  • #### desc dba_users数据字典(desc 查看表结构)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
desc dba_users

表空间

我们知道oarcle数据库真正存放数据的是数据文件(datafiles),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。

表空间属性

一个数据库可以包含多个表空间,一个表空间只能属于一个数据库 一个表空间包含多个数据文件,一个数据文件只能属于一个表空间 表这空间可以划分成更细的逻辑存储单元

  • 查看用户的表空间
    • 数据字典 表空间 dba_tablespaces、user_tablespaces 数据字典(用来查看登录用户所有的表空间) 前一个是为管理员提供,后一个为普通用户提供 查看用户表空间 dba_users,user_users 数据字典 查看用户默认表空间和临时表空间 SELECT DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='SYSTEM' -- USERNAME 用户名
  • 设置用户默认或临时表空间 (普通用户没有次权限)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name
--username 登录用户名
--DEFAULT 默认表空间 TEMPORARY 临时表空间
--tablespace_name 表空间名
--实例
SQL> ALTER USER system DEFAULT TABLESPACE system;
  • #### 创建表空间
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'XX.dbf' SIZE xx
--TEMPORARY 创建临时表空间时添加 
--tablespace_name 表空间的名字
--XX.dbf 文件名
--SIZE 数据文件的大小
sql>create TABLESPACE test1_tablespace datafile 'test1file.dbf' size 10m --创建永久表空间
sql>create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m --创建临时表空间
  • 查看表空间储存位置 数据字典 dba_data_files
    • #### 修改表空间的状态
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLESPACE tablespace_name OFFLINE|ONELINE 

--实例
sql> ALTER TABLESPACE test1_tablespace OFFLINE --脱机状态
sql> select status from dba_tablespace where tablespace_name='test1_tablespace' --查看表空间状态
sql> ALTER TABLESPACE test1_tablespace onelie --联机状态
  • #### 修改表空间只读或可读写状态(脱机状态无法修改)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLESPACE tablespace_name READ ONLY | ORAD WRITE 
--默认联机状态就是读状态
SQL> alter tablespace test1_tablespace read only --只读状态
sql> alter tablespace test1_tablespace read write --读写状态
  • #### 表空间修改数据文件
    • 增加数据文件 ALTER TABLESPACE tablespace_name ADD DATAFILE 'XX.dbf' size xx
    • 删除数据文件(不能删除表空间的第一个数据文件及创建表空间时创建的数据文件) ALTER TABLESPACE tablespace_name DROP DATAFILE 'XX.dbf'
  • #### 删除表空间
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP TABLESPACE tablespace_name [INCLUDING CONTENTS]
--INCLUDING CONTENTS 添加后 会把该表空间下的数据文件也一并删除

  • ### 什么是表 表存在表空间中,表是数据库的基本储存单位,表为二维结构,有行和列组成
  • ### 表的约定 1、每一列数据必须具有相同数据类型 2、列名唯一 3、每一行数据的唯一性
  • 表中的数据类型
    • 字符型 CHAR(N) -n max:2000、NCHAR(N) -n max:1000 不可表 VARCHAR2(N)-n max 4000,NVARCHAR2(n) -n max:2000 可变
    • 数值型 NUMBER(p,s) number类型的语法很简单:number(p,s): p:精度位,precision,是总有效数据位数,取值范围是38,默认是38,可以用字符*表示38。 s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。 最高整数位数=p-s s正数,小数点右边指定位置开始四舍五入 s负数,小数点左边指定位置开始四舍五入 s是0或者未指定,四舍五入到最近整数 当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p位必须是0,保留s位小数。 p>0,对s分2种情况: 1. s>0 精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。 2. s<0 精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s| FLOAT(n)
    • 日期型 DATE --储存范围 公元前4712年1月1日到公元前9999年12月31日 可以精确到秒 TIMESTAMP -- 可以精确到小数秒
    • 其他类型 BLOB --最大储存4个G ,储存二进制 CLOB --最大储存4个G ,储存字符串
  • 创建表 create table table_name( column datatype);– 创建表的语法
  • 修改表 添加字段 alter table table_name add column_name datatype;

更改字段的数据类型

alter table table_name MODIFY column_name datatype;

删除字段

alter table table_name DROP COLUMN column_name;

修改字段名

alter TABLE table_name RENAME COLUMN column_name TO new_column_name;

修改表名

RENAME table_name to new_table_name;

  • ### 删除表 TRUNCATE 删除表中数据(比delete速度快) TRUNCATE TABLE table_name;

DROP 删除表 DROP TABLE table_name;

  • 操作表中数据
    • #### 添加数据

    INSERT INTO table_name (column1,…)values(value1,…)

    • #### 复制表中数据
    • 在建表的时候复制 CREATE TABLE table_new AS SELECT column1,.. | * from table_old;
    • 再添加时复制

    INSERT INTO table_new [(column1,…)] select column1,…|*from table_old;

    • 删除表中数据

    – DELTE 语句 DELETE FROM table_name [WHERE conditions];

约束

约束条件也称作完整性约束条件,是在数据表上强制执行的一些数据检验规则,当执行DML操作时必须符合约束条件,否则不能成功执行。 约束条件包括有非空(Not null)、唯一(Unique)、主键(Primary Key)、外键(Foreign Key)和检查(Check)。 约束条件可以在建表时建立也可以在建表后建立。约束条件需要命名,可以由用户指定,否则由系统按照SYS_Cn的默认格式来命名,n是一串数字。

非空约束

约束字典 user_constraints

非空(Not Null)约束用于确保字段值不为空。非空约束是五个约束条件中唯一一个只能定义在列级的约束条件。非空约束条件可以在建表时建立,也可以在建表后建立。

创建表时添加非空约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table_name(
 column_name datatype NOT NULL,..
)

建表后添加非空约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name MODIFY(column datatype NOT NULL);

建表后去除非空约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name MODIFY(column datatype NULL);

主键约束

主键是能确定一条记录的唯一标识的一个字段和多个字段组合 主键约束条件从功能上看相当于非空且唯一。主键可以是单字段也可以是多字段组合。在一个表上只允许建立一个主键,而其他约束条件则没有明确的个数限制。

在创建表时添加剂主键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table_name(
  column_name datatype PRIMARY KEY
)

CREATE TABLE table_name(
  column_name datatype,
  constraint constraint_name PRIMARY KEY(column1_name,..)
)

--constraint_name 约束的名字

在修改表时添加主键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name ADD CONSTRAINT column_name PRIMARY KEY(column_name1,...) 
--column_name 约束的名字

更改主键约束的名字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name rename CONSTRAINT old_name TO new_name

删除主键约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name
DISABLE | ENABLE CONSTRAINT constraint_name;
--DISABLE 禁用约束 , ENABLE 启用被禁用约束
--constraint_name 约束名字

--删除约束 (两种都可以)
ALTER TABLE table_name
DROP CONSTAINT constraint_name

ALTER TABLE table_name
DROP PRIMARY KEY[CASCAD]

外键约束

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字 外键约束条件定义在两个表的两个字段或一个表的两个字段上,用于保证相关两个字段的关系。外键约束包括两个方面的数据约束: (1):子表上定义的外键的列值,必须从主表被参照的列值中选取,或者为NULL; (2):当主表参照的值被子表参照时,主表的该行记录不允许被删除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table1(
  column_name datatype REFERENCES table2(column_name,...)
)

CREATE TABLE table1(
  column_name datatype,
  CONSTRAINT  constraint_name FOREIGN KEY(column_name)REFERENCES table_name(column_name)[ON DELETE CASCADE]

)
-- constraint_name 外键约束名
-- table_name 关联的主表
-- ON DELETE CASCADE 可选 选择后增加级联删除的功能

修改表的时候添加外键约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table1_name CONSTRAINT constraint_name FOREIGN KEY(column_name)REFERENCES table_name(column_name)[ON DELETE CASCADE]

--table1_name 添加外键的表
--table_name 关联的主表

删除外键约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--禁用外键约束
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name
-- DISABLE 禁用主键约束
-- ENABLE 启用主键约束

--删除外键约束

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

唯一约束

唯一约束保证值得唯一性,区别主键,主键不允许值为空,唯一约束允许一个值为NULL,主键在一个表中只能有一个,唯一约束可以有多个。

再创建表时设置唯一约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table_name (
 column_name datatype UNIQUE
)

--第二种方式
CREATE TABLE table_name(
 column_name datatype,
 CONSTRAINT constraint_name UNIQUE(column_name)
)

修改表时添加唯一约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name)

删除唯一约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name
-- DISABLE 禁用约束
-- ENABLE 启用约束

--删除约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

查看约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select constraint_name,constraint_type,status from user_constraints  WHERE table_name='TESTUL';

检查约束

检查约束的作用:让字段值更具有意义。 创建表时设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table_name (
 column_name datatye CHECK(expressions)
)

CREATE TABLE table_name (
 column_name datatye,
 CONSTRAINT constraint_name CHECK(expressions)
)

在修改表时添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions)

删除唯一约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name
-- DISABLE 禁用约束
-- ENABLE 启用约束

--删除约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;

默认值约束

默认值约束的作用对象为列,每个列只能有一个默认值约束。

创建默认值约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE table_name(
 column_name datatype default def_name
)

修改默认值约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE table_name MODIFY column_name datatype default def_name;

视图

视图是数据库中特有的对象,视图用于储存查询,但不会储存数据(物化视图外)。可以利用视图进行查询、插入、更新和删除数据.Orcle中有4中视图。

关系视图

关系视图是四种视图中最简单,同时也是最常用的视图,可以将关系视图看做对简单或复杂的定义。它的输出可以看做一个虚拟的表,该表的数据是有其他基础数据提供。由于关系视图并不储存真正的数据,因此占用数据库资源也较少。

创建关系视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE VIEW view_table_name as select * from table_name 

修改关系视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE view_table_name as select * from tale_name
-- CREATE OR REPLACE 命令用于创建或者替换视图。

删除视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drop view view_table_name

内嵌视图

对象视图

物化视图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python学习:内建属性、内建函数的教程
子类没有实现__init__方法时,默认自动调用父类的。 如定义__init__方法时,需自己手动调用父类的 __init__方法。
闻说社
2025/02/25
770
Python学习:内建属性、内建函数的教程
盘一盘 Python 系列特别篇 - 面向对象编程
在写 Keras (下) 时,发现很多内容都要用到类 (class) 和对象 (object),因此本文作为 Python 系列的特别篇,主要介绍面向对象编程 (Object-Oriented Programming, OOP)。
用户5753894
2019/10/08
9180
盘一盘 Python 系列特别篇 - 面向对象编程
python 之 内置函数大全[通俗易懂]
  戳:https://docs.python.org/2/library/functions.html
全栈程序员站长
2022/09/08
4260
python 之 内置函数大全[通俗易懂]
一文让你彻底搞懂`__str__`和`__repr__`?
我们都知道,Python的内置函数repr()能够把对象用字符串的形式表达出来,方便我们辨认。这就是“字符串表示形式”。repr()就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式的。如果没有实现__repr__,当我们在控制台里打印一个向量的实例时,得到的字符串可能会是 <Vector object at 0x10a514f98>。
宇宙之一粟
2020/10/26
1.6K0
可以格式化Python自定义对象的3个魔术方法
在Python中,下划线用于属性名时具有特殊含义。一种特殊形式是使用两对双下划线,一个在属性名之前,另一个在属性名之后,这被称为特殊方法或魔术方法。
deephub
2021/03/10
4340
Python 5.4 定制类
看到类似的__slots__这种形如__xx__的变量或者函数名就要注意,这些在Python中有特殊用途。
py3study
2020/01/14
6970
Python格式化字符串format
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
Tyan
2020/06/22
5550
python3--面向对象进阶之内置方法
print执行时,是去内部寻找__str__方法,所以print没有输出不了的数据,因为每一个对象都有__str__方法
py3study
2018/08/02
4860
Python 中的魔法函数
魔法函数是Python中的特性,学习好魔法函数将有助于我们写出优秀的pythonic(优雅的、地道的、整洁的)代码,同时因为Python语言的特性,我们在进行框架设计的时候除了设计模式等高级技能,魔法函数是必须使用的,因此学习好魔法函数是Python语言进阶的必经之路。下面我们就为大家介绍Python里的常用魔法函数。
星星在线
2021/01/04
8650
Python 中的魔法函数
Python之面向对象四
面向对象进阶 一、关于面向对象的两个内置函数 isinstance   判断类与对象的关系    isinstance(obj,cls)检查obj是否是类 cls 的对象,返回值是bool值 issubclass     判断类与类的关系             issubclass(sub, super)检查sub类是否是 super 类的派生类,返回值是bool值 class A: pass class B(A): pass a = A() print(isinstance(a,A))
新人小试
2018/04/12
8700
python的字符串学习(三)
学习Python语言,不得不学习在Python中,对字符串的处理,事实上,在Str类中提供了很多的方法来对字符串的处理,比如我们经常见的字符串的大小小写的处理,字符串的分割合并等,那么我们是怎么知道这些方法了?比如我定义了一个字符串,我怎么知道字符串的操作方法有哪些?
无涯WuYa
2018/10/25
5350
python的字符串学习(三)
python基础-内置函数详解[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 一、内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.htm
全栈程序员站长
2022/09/07
5110
python基础-内置函数详解[通俗易懂]
python字符串内置函数
定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串
用户7886150
2021/01/09
3060
10 Python 基础: 如何定制类,这里有答案
看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。
野原测试开发
2019/09/19
7070
python字符串String模块
>>> print str.center(20)           #生成20个字符长度,str排中间
py3study
2020/01/09
9790
Python 中的字符串 — str
由于 Python 源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为 UTF-­8 编码。当 Python 解释器读取源代码时,为了让它按 UTF-­8 编码读取,我们通常在文件开头写上这两行:
忆想不到的晖
2021/12/06
1.3K0
python ——面向对象进阶
1.staticmethod和classmethod staticmethod  静态方法: 让类里的方法,直接被类调用,就像正常的函数一样 宝宝,男 博博,女 海娇,男 海燕,女 海东,男 海峰,男 class Student: # f = open('student', encoding='utf-8') def __init__(self): pass @staticmethod def show_student_info(): f
用户1214487
2018/01/23
5950
学习Python的利器:内置函数dir()和help()
(1)内置函数dir()用来查看对象的成员。在Python中所有的一切都是对象,除了整数、实数、复数、字符串、列表、元组、字典、集合等等,还有range对象、enumerate对象、zip对象、filter对象、map对象等等,函数也是对象,类也是对象,模块也是对象。这样的话,dir()的用武之地就大了。 >>> dir(3) #查看整数类型的成员,这里省略了输出结果 >>> dir('a') #查看字符串类型的成员 >>> import math >>> dir(math) #查看math模块的成员 >
Python小屋屋主
2018/04/17
1.3K0
反转字符串/列表、改变递归次数限制、else用法...Python 冷知识(四)
本文转载自Python编程时光(ID:Python-Time) 交互式“_”操作符
AI科技大本营
2019/05/14
1.1K0
反转字符串/列表、改变递归次数限制、else用法...Python 冷知识(四)
Python基础常见面试题总结[通俗易懂]
以下是总结的一些常见的Python基础面试题,帮助大家回顾基础知识,了解面试套路。会一直保持更新状态。 PS:加粗为需要注意的点。
全栈程序员站长
2022/11/19
2.4K0
Python基础常见面试题总结[通俗易懂]
相关推荐
Python学习:内建属性、内建函数的教程
更多 >
目录
  • Oracle 基础
    • 用户和表空间
      • 用户
      • 表空间
    • 约束
      • 非空约束
      • 主键约束
      • 外键约束
      • 唯一约束
      • 查看约束
      • 检查约束
      • 默认值约束
    • 视图
      • 关系视图
      • 内嵌视图
      • 对象视图
      • 物化视图
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档