首页 > 数据库 >8、Oracle中的创建和管理表

8、Oracle中的创建和管理表

时间:2024-07-13 15:51:34浏览次数:7  
标签:Table name 管理 column 创建 table Oracle TABLE ALTER

最近项目要用到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 	dept80
  AS     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的命令,除了操作外,皆不可回滚!

标签:Table,name,管理,column,创建,table,Oracle,TABLE,ALTER
From: https://www.cnblogs.com/huageyiyangdewo/p/18299928

相关文章

  • 基于ssm+vue.js+uniapp的汽车养护管理系统附带文章和源代码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于springboot+vue.js+uniapp的江西郊医院血库管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于Java+Vue的采购管理系统:实现采购业务数字化变革(整套代码)
    前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保供应商符......
  • ISA95-Part5-安全和权限管理的设计思路
    1、具体要求:在MES/MOM系统中实现ISA-95标准的安全和权限管理,具体要求通常包括以下几个方面:1.--数据保护--:确保敏感数据通过加密和安全存储来保护,防止数据泄露或被未授权访问。2.--访问控制--:实施基于角色的访问控制(RBAC),确保只有授权用户才能访问相应资源和数据。3.--......
  • 根据自定义名称批量创建sheet页,详细操作步骤!
    在VBA(VisualBasicforApplications)中,可以很根据工作表(Sheet1)上的一个名称列表来自动创建多个新的工作表,每个名称对应一个新的工作表。假设Sheet1的A列从A2开始包含了需要创建的工作表名称(A1可以是标题行,如"Sheet名称")。如图所示:第一步:没有officeexcel的宝子请先安装,下载......
  • 最新计算机专业开题报告案例28:基于Web的人事信息管理系统设计与实现
    计算机毕业设计100套微信小程序项目实战java项目实战需要源码可以滴滴我目录一、选题依据(一)研究目的和意义1.目的2.意义(二)国内外研究现状1.国外研究现状2.国内研究现状(三)学术准备情况(四)研究思路及方法1.研究思路2.研究方法二、结构框架(一)写作提纲(二)参考文献......
  • 【计算机毕业设计】医院管理系统小程序
    博主介绍:✌全网粉丝3W+,csdn特邀作者、CSDN新星计划导师、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视......
  • [0071]基于JAVA的上门服务费用智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的上门服务费用智慧管理系统的设计与实现指导老师(一)选题的背景和意义随着社会的发展,越来越多的服务行业开始注重服务质量和服务效率的提升,以满足消费者日益增长的需求。而上门服务作为一种方便......
  • [0074]基于JAVA的专利信息智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的专利信息智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当今社会,知识产权保护越来越受到重视,专利作为知识产权的重要组成部分,其管理对于企业的创新能力和市场竞争力具有重要影响。然......
  • [0073]基于JAVA的专业娱乐器材租赁智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的专业娱乐器材租赁智慧管理系统的设计与实现指导老师(一)选题的背景和意义随着科技的发展,越来越多的人开始追求高品质的生活,娱乐器材的需求也在不断增加。然而,传统的娱乐器材租赁方式存在诸多问......