8、Oracle中的创建和管理表

最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。
视频链接:
【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用
如果有侵权,请联系删除,谢谢。

学习目标:

  • 描述主要的数据库对象
  • 创建表
  • 描述各种数据类型
  • 修改表的定义
  • 删除,重命名和清空表

1、常见的数据库对象

对象 描述
基本的数据存储集合,由行和列组成。
视图 从表中抽出的逻辑上相关的数据集合。
视图 提供有规律的数值。
索引 提高查询的效率
同义词 给对象起别名

1.1 Oracle 数据库中的表

用户定义的表:

  • 用户自己创建并维护的一组表
  • 包含了用户所需的信息

如:SELECT * FROM user_tables;查看用户创建的表

数据字典:

  • 由 Oracle Server 自动创建的一组表
  • 包含数据库信息

1.2、查询数据字典

  • 查看用户定义的表.
select table_name from user_tables;
  • 查看用户定义的各种数据库对象
SELECT DISTINCT object_type FROM user_objects;结果:
OBJECT_TYPE    |
---------------+
INDEX PARTITION|
TABLE PARTITION|
SEQUENCE       |
TRIGGER        |
TABLE          |
INDEX          |
VIEW           |
  • 查看用户定义的表, 视图, 同义词和序列
select * from user_catalog;结果:
TABLE_NAME                    |TABLE_TYPE|
------------------------------+----------+
APWJ06                        |TABLE     |
APWJ06_SEQ                    |SEQUENCE  |
BIN$F+5ZVUIVvVjgYBGsAgAo5Q==$0|TABLE     |
BIN$Fgw30nMia/jgYBGsBgBYGQ==$0|TABLE     |
BIN$Fzf9Yeh1EzvgYBGsAgA5ag==$0|TABLE     |
BIN$Fzf9Yeh8EzvgYBGsAgA5ag==$0|TABLE     |
BIN$Fzf9YehnEzvgYBGsAgA5ag==$0|TABLE     |
BIN$HQdt+RevHwzgYBGsAgBlgw==$0|TABLE     |

2、命名规则

表名和列名:

  • 必须以字母开头
  • 必须在 1–30 个字符之间
  • 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
  • 必须不能和用户定义的其他对象重名
  • 必须不能是Oracle 的保留字

3、CREATE TABLE 语句

必须具备:

  • CREATE TABLE权限
  • 存储空间

必须指定:

  • 表名
  • 列名, 数据类型, 尺寸
CREATE TABLE [schema.]table(column datatype [DEFAULT expr][, ...]);

3.1、创建表

  • 语法
CREATE TABLE dept	(deptno 	NUMBER(2),dname 	VARCHAR2(14),loc 	VARCHAR2(13));Table created.
  • 确认
describe dept;不一定能够查询,使用 DBeaver 不能够正确查询,会报错。

3.2、数据类型

3.3、使用子查询创建表

使用 AS subquery 选项,将创建表和插入数据结合起来

  • 指定的列和子查询中的列要一一对应
  • 通过列名和默认值定义列
CREATE TABLE table[(column, column...)]
AS subquery;

复制现有的表:

create table emp1 as select * from employees;
create table emp2 as select * from employees where 1=2;
--创建的emp2是空表

使用子查询创建表举例

CREATE TABLE 	dept80AS     SELECT  employee_id, last_name, salary*12 ANNSAL, hire_date    FROM    employees   WHERE   department_id = 80;
Table created.

4、ALTER TABLE 语句

使用 ALTER TABLE 语句可以:

  • 追加新的列
  • 修改现有的列
  • 为新追加的列定义默认值
  • 删除一个列
  • 重命名表的一个列名

4.1、ALTER TABLE 语句

使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.

-- 追加
ALTER TABLE table
ADD		   (column datatype [DEFAULT expr][, column datatype]...);-- 修改
ALTER TABLE table
MODIFY	   (column datatype [DEFAULT expr][, column datatype]...);-- 删除
ALTER TABLE table
DROP COLUMN  column_name;-- 重命名
ALTER TABLE table_name RENAME COLUMM old_column_name 
TO new_column_name

4.2、追加一个新列

使用 ADD 子句追加一个新列

ALTER TABLE dept80
ADD		   (job_id VARCHAR2(9));Table altered.

新列是表中的最后一列

4.3、修改一个列

可以修改列的数据类型, 尺寸和默认值

ALTER TABLE	dept80
MODIFY		(last_name VARCHAR2(30));
Table altered.ALTER TABLE	dept80
MODIFY		(salary number(9,2) default 1000);
Table altered.

对默认值的修改只影响今后对表的修改

4.4、删除一个列

使用 DROP COLUMN 子句删除不再需要的列.

ALTER TABLE  dept80
DROP COLUMN  job_id; 
Table altered.

4.5、重命名一个列

使用RENAME COLUMN [table_name] TO子句重命名列

ALTER TABLE  dept80
RENAME COLUMN  job_id TO id; 
Table altered.

5、删除表

  • 数据和结构都被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
  • DROP TABLE 语句不能回滚
DROP TABLE dept80;
Table dropped.

6、清空表

TRUNCATE TABLE 语句:

  • 删除表中所有的数据
  • 释放表的存储空间
TRUNCATE TABLE detail_dept;
Table truncated.
  • TRUNCATE语句不能回滚
  • 可以使用 DELETE 语句删除数据,可以回滚
    对比:
  delete from emp2;select * from emp2;rollback;select * from emp2;

7、改变对象的名称

执行RENAME语句改变表, 视图, 序列, 或同义词的名称

RENAME dept TO detail_dept;
Table renamed.

必须是对象的拥有者

总结

以上这些DDL的命令,除了操作外,皆不可回滚!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/743123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 快速回到桌面

如下设置快捷键为 Super + D,

TCP三次握手的意外情况分析

> 其实很简单,就像我个人给别人发信息一样,有个重传机制,毕竟对方可能突然有事忘看了,或者说看完了忘了回,所以我本人会重传,那么接下来就以聊天的角度来给大家解析一下TCP三次握手时的意外情况以及应对方针注文中的大部分知识非我原创,我只是知识的搬运工,并且尝试搬运进脑…

MBR20200FCT-ASEMI无人机专用MBR20200FCT

MBR20200FCT-ASEMI无人机专用MBR20200FCT编辑:ll MBR20200FCT-ASEMI无人机专用MBR20200FCT 型号:MBR20200FCT 品牌:ASEMI 封装:TO-220F 批号:最新 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM):200V 最大正向电压(VF):0..90V 工作温度:-50C~175C 反向恢…

fiddler笔记

fiddler汉化 只抓取指定浏览器的包

CDN在App分发中的作用

CDN(Content Delivery Network,内容分发网络)在App分发中扮演着至关重要的角色。它通过一系列技术手段,将App的内容高效、快速地传递给用户,显著提升用户体验和下载速度。以下是CDN在App分发中的具体作用和优势: 一、CDN在App分发中的作用提升下载速度:CDN分发系统能够将…

配置文件的编写

1. 在application.yml里面配置需要的参数 2. pom.xml文件引入配置文件依赖<!-- 配置生成配置文件处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><op…

全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则

本文主要介绍了 Python 中创建自定义类时子类如何实现对父类方法的重写、方法重写的定义和多态的基本概念,并对开闭原则进行介绍。全网最适合入门的面向对象编程教程:16 类和对象的 Python 实现-多态、方法重写与开闭原则 摘要: 本文主要介绍了 Python 中创建自定义类时子类…

TapData 医疗美容行业数字化白皮书上线

本白皮书全面分析和探讨了医疗美容行业的数字化现状、驱动力及应用场景,旨在为行业从业者提供深度洞察和实用建议。随着颜值经济的发展,人们追求“美”的热情也不断高涨,而作为近年来被资本频频下注的赛道之一,医疗美容逐渐走进大众视野。 一方面,社会对外貌的重视程度不断…

华为超融合FusionCude8.1.5实施手册(三)

登录平台,初始化系统 平台默认密码:修改为Admin@2024默认用户名:admin 默认密码:fc2HW@CLOUD8! 摘录官方文档关闭关闭iBMC平面网关Ping校验。后重新执行初始化 关闭校验后重新执行校验校验失败,后排查因为带外和管理网络不能互通的原因导致的。因ip地址资源不足,重新申请…

如何pr到别人仓库(无废话)

如何PR到别人仓库(指定分支) 记录一下,之前都是直接master分支,现在记录如何pr到别人仓库的其他分支 首先进入别人仓库然后点击fork到自己仓库步骤(以博主自己一个例子为例) (1)拉取你fork到你仓库 git clone https://github.com/dragonforward/MaixCDK.git(2)添加原…