Oracle DB 使用DDL语句创建和管理表

article/2025/9/12 22:44:44
               

 

• 对主要的数据库对象进行分类
• 查看表结构
• 列举列可以使用的数据类型
• 创建简单的表
• 说明创建表时如何创建约束条件
• 描述方案对象如何工作

• 数据库对象
– 命名规则
• CREATE TABLE语句:
– 访问另一个用户的表
– DEFAULT选项
• 数据类型
• 约束条件概览:NOT NULL、UNIQUE、PRIMARY KEY、
FOREIGN KEY、CHECK约束条件
• 使用子查询创建表
• ALTER TABLE
– 只读表
• DROP TABLE语句

  • 数据库对象

Oracle DB 可以包含多种数据结构。在数据库设计中应对每种结构加以概述,以便可在 数据库开发的构建阶段创建数据库结构。
• 表:用于存储数据
• 视图:一个或多个表中数据的子集
• 序列:用于生成数字值
• 索引:提高某些查询的性能
• 同义词:给出对象的替代名称
Oracle 表结构
• 在任何时候都可以创建表,即使用户正在使用数据库时也是如此。
• 无需指定表的大小。表的大小最终由全部分配给数据库的空间量确定。但是,需要 估计一个表将要使用的空间大小,这一点非常重要。
• 可以联机修改表结构。

  • 命名规则
表名和列名必须满足以下条件:
• 以字母开头
• 长度为1-30 个字符
• 只包含A-Z、a-z、0-9、_、$ 和#
• 不与同一用户拥有的其它对象重名
• 不是Oracle Server 的保留字

应根据命名任意Oracle DB 对象的标准规则来命名数据库表和列:
• 表名和列名必须以字母开头,长度必须为1-30 个字符。
• 名称中只能包含字符A-Z、a-z、0-9、_(下划线)、$ 和#(这两个字符是合法字符, 但建议不要使用它们)。
• 不能与同一Oracle Server 用户拥有的其它对象重名。
• 不能是Oracle Server 的保留字。
- 还可以使用 加引号的标识符来表示对象名称。加引号的标识符以双引号(“”) 开始 和结束。如果使用加双引号的标识符为方案命名,那么,只要引用该对象,就必
须使用双引号。加引号的标识符可以是保留字,不过建议不要这样做。
命名准则
对于表和其它数据库对象,应使用描述性名称。
注:名称不区分大小写,例如,EMPLOYEES与eMPloyees或eMpLOYEES被认为是 同一名称。但是,加引号的标识符区分大小写。

  • CREATE TABLE语句
• 必须具有以下项才能使用此语句:
– CREATE TABLE权限
– 一个存储区
CREATE TABLE [schema.]table
(column datatype[DEFAULT expr][, ...]);
• 可以指定:
– 表名称
– 列名、列数据类型和列大小


通过执行SQL CREATE TABLE语句可以创建用于存储数据的表。此语句是一条DDL 语 句,DDL 语句是SQL 语句的子集,用于创建、修改或删除Oracle DB 结构。这些语句会 对数据库产生直接的影响,它们还会在数据字典中记录信息。
要创建一个表,用户必须具有CREATE TABLE权限和一个用于在其中创建对象的存储区。
数据库管理员(DBA) 可以使用数据控制语言(DCL) 语句为用户授权。
在该语法中:
schema 与所有者的姓名相同
table 是表名称
DEFAULT expr 指定当INSERT语句中省略了值时所使用的默认值语句
column 是列名称
datatype 是列的数据类型和长度

  • 引用另一个用户的表
• 在用户方案中没有属于其他用户的表。
• 应使用所有者姓名作为那些表的前缀。


方案是由数据或方案对象构成的一组逻辑结构。方案由数据库用户拥有,而且与该用户 具有相同的名称。每个用户都拥有一个方案。
方案对象可使用SQL 来创建和操作;方案对象包括表、视图、同义词、序列、存储过程、 索引、集群和数据库链接。
如果某个表不属于该用户,则必须将所有者的姓名作为该表的前缀。例如,假设存在名为 USERA和USERB的两个方案,每个方案都有一个EMPLOYEES表,如果USERA要访问 属于USERB的EMPLOYEES表,USERA就必须将USERB方案名作为该表名的前缀:
SELECT * FROM userb.employees;
如果USERB要访问属于USERA的EMPLOYEES表,USERB就必须将USERA的方案名 作为该表名的前缀:
SELECT * FROM usera.employees;

  • DEFAULT选项
• 指定插入过程中列的默认值。
... hire_date DATE DEFAULT SYSDATE, ...
• 文字值、表达式或SQL 函数都是合法值。
• 其它列的名称或假列是非法值。
• 默认数据类型必须与列的数据类型相匹配。

CREATE TABLE hire_dates (id  NUMBER(8), hire_date DATE DEFAULT SYSDATE);

在定义表时,可以使用DEFAULT选项指定列的默认值。当插入的行中没有某列的相应值 时,使用此选项可以防止将空值输入到列中。默认值可以是文字值、表达式或SQL 函数 (例如SYSDATE或USER),但是该值不能是其它列或假列的名称(例如NEXTVAL或 CURRVAL) 。默认表达式必须与列的数据类型相匹配。
请看如下示例:
INSERT INTO hire_dates values(45, NULL);
以上语句将插入空值而非默认值。
INSERT INTO hire_dates(id) values(35);
以上语句将在HIRE_DATE列中插入SYSDATE。

  • 创建表
• 创建表:
CREATE TABLE dept
(deptno  NUMBER(2),
dname  VARCHAR2(14),
loc  VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
• 确认表创建:
DESCRIBE dept

示例中创建的DEPT表包含以下四列:DEPTNO、DNAME、LOC和CREATE_DATE。
CREATE_DATE列具有默认值。如果没有为INSERT语句提供值,则会自动插入系统日期。 <

http://chatgpt.dhexx.cn/article/os6W5Y3L.shtml

相关文章

C++值传递和引用传递的区别

c中参数传递的区别&#xff1a; 1.值传递&#xff1a; 可以想象改变的只是实参的“替身”的值&#xff0c;而实参本身不会被改变。 值传递&#xff1a;将实参的值传递给形参&#xff1b;形参是实参的“替身”&#xff0c;但与实参本质上不是“同一个人”&#xff0c;只是值复…

Java值传递和引用传递基础分析

&#xff08;尊重劳动成果&#xff0c;转载请注明出处&#xff1a;http://blog.csdn.net/qq_25827845/article/details/77688416冷血之心的博客&#xff09; 一年前我总结过一篇博客&#xff1a;Java基础之引用&#xff08;String&#xff0c;char[]&#xff0c;Integer&#x…

C#中的值传递和引用传递

在C#语言中&#xff0c;传递参数的方式有两种&#xff1a;值传递和引用传递。 在介绍这两种参数传递方式我们先简单理解一下值类型和引用类型。 在C#语言中的char,int,short,long,byte,float,double,boolean类型都是值类型&#xff0c;另外enum枚举类型和struct结构类型也是值…

Python值传递和引用传递(详细分析)

目录 1. 形参与实参 2. Python的数据类型 3.Python变量及其赋值 3.1 不可变对象赋值 3.2 可变对象赋值 3.3 变量删除 3.4 变量赋值总结 4.Python函数的参数传递 4.1 参数传递定义 4.2 不可变对象的参数传递 4.3 可变对象的参数传递 5.总结 6 不可变与可变对象赋值对…

Java值传递和引用传递详细说明(详细分析)

1. 形参与实参 我们先来重温一组语法&#xff1a; 形参&#xff1a;方法被调用时需要传递进来的参数&#xff0c;如&#xff1a;func(int a)中的a&#xff0c;它只有在func被调用期间a才有意义&#xff0c;也就是会被分配内存空间&#xff0c;在方法func执行完成后&#xff0…

Java中是值传递和引用传递

值传递 / 引用传递 值传递&#xff1a;就是在方法调用的时候&#xff0c;实参是将自己的一份拷贝赋给形参&#xff0c;在方法内&#xff0c;对该参数值的修改不影响原来的实参。 引用传递&#xff1a;是在方法调用的时候&#xff0c;实参将自己的地址传递给形参&#xff0c;此…

Java的值传递和引用传递

Java的值传递和引用传递 值传递&#xff1a;对形参的修改不会影响到实参 。引用传递&#xff1a;对实参的修改能够影响到实参 **Java是值传递&#xff1a;如果是基本数据类型&#xff0c;就是复制一份值传递给形参&#xff1b;如果是引用类型&#xff0c;那就将引用复制一份&…

Java 值传递和引用传递

值传递:在调用函数的时候,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改的时候,就不会影响到原来的实际参数 引用传递:在调用函数的时候,将实际参数的地址直接传递函数中,这样在函数中对参数进行修改的时候,就会影响到实际参数值传递 引用传递…

go 语言值传递和引用传递

值传递 普通的值传递 package main import "fmt" func main(){fmt.Println(Hello("hello"," fpp")); } func Hello(stringName string,stringName2 string)(string){return stringNamestringName2; }string类型是引用传递吗? package main i…

Java 的值传递和引用传递

一、概述 Java数据类型分为基本类型和引用类型。相应的&#xff0c;变量也有两种类型&#xff1a;基本类型和引用类型。 1️⃣基本类型的变量保存原始值&#xff0c;即它代表的值就是数值本身。包含&#xff1a; 整型&#xff1a;byte&#xff0c;short&#xff0c;int&#…

java值传递和引用传递(附实例)

java值传递和引用传递&#xff08;附实例&#xff09; 1.数据类型1.1 基本数据类型1.2 引用数据类型 2.形参与实参2.1 函数中使用2.2 调用 3.值传递和引用传递3.1 定义3.2 例子3.3 结论 观前提示&#xff1a; 本文所使用的IDEA版本为ultimate 2019.1&#xff0c;JDK版本为1.8.…

java中的值传递和引用传递

个人理解&#xff0c;可能会有错误之处&#xff0c;请仔细甄别&#xff0c;谨慎参考&#xff01;如有错误或不同见解请指出&#xff01; 值传递&#xff08;Pass By Value或者Call By Value&#xff09;是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。…

【JAVA】值传递与引用传递

一.声明 Java中没有引用传递 二.值传递和引用传递 值传递&#xff1a;就是在方法调用的时候&#xff0c;实参是将自己的一份拷贝赋给形参&#xff0c;在方法内&#xff0c;对该参数值的修改不影响原来的实参。 引用传递&#xff1a;是在方法调用的时候&#xff0c;实参将自…

值传递与引用传递详解

1、关于值传递 值传递&#xff1a;是指在调用函数时&#xff0c;将实际参数复制一份传递到函数中&#xff0c;这样在函数中如果对参数进行修改&#xff0c;就不会影响到实际参数 如下图所示&#xff0c;当传递参数之前会将参数进行复制&#xff0c;函数中修改了参数&#xff0c…

值传递与引用传递的区别

一、值传递&#xff1a;是指在调用函数时将实际参数复制一份传递到函数中&#xff0c;这样在函数中如果对参数进行修改&#xff0c;将不会影响到实际参数。 ​ 代码在内存中的执行流程&#xff1a; 1、首先加载main方法&#xff1b; ​ 2、接下来int number 100&#xff1…

什么是值传递,什么是引用传递?

1、什么是值传递&#xff0c;什么是引用传递&#xff1f; 值传递&#xff08;pass by value&#xff09;是指在调用函数时将实际参数复制一份传递到函数中&#xff0c;这样在函数中如果对参数进行修改&#xff0c;将不会影响到实际参数。引用传递&#xff08;pass by referenc…

Java复习总结之快速区分值传递和引用传递

引言 为了搞清楚值传递和引用传递的区别&#xff0c;查阅了许多资料&#xff0c;加以自身理解&#xff0c;做出本篇博客用于记录。 概念 值传递&#xff1a;指在调用函数时将实际参数复制一份传递到函数中&#xff0c;这样在函数中如果对参数进行修改&#xff0c;将不会影响到…

华为应聘进展状态码解析(附加性格测试攻略)

多方查找咨询终于终于看到了自己的状态码&#xff0c;总结一下~ 性格测试攻略&#xff1a; https://blog.csdn.net/guomutian911/article/details/48915301 https://blog.csdn.net/twc829/article/details/51226358 https://blog.csdn.net/twc829/article/details/51226247 第三…

华为OD机试2023 最新最全备考攻略助你轻松上岸

【华为OD机试真题 2022&2023】真题目录 点这里 【华为OD机试真题】信号发射和接收 &试读& 点这里 【华为OD机试真题】租车骑绿道 &试读& 点这里 什么是华为OD 华为OD是Outsourcing Dispacth模式&#xff0c;是华为和外企德科联合招聘的简称。目前华为大多…

idea 怎么导入maven项目

1、打开一个现有的IntelliJ IDEA工程&#xff0c;点击菜单的“File”->“new”->“Module from Existing Sources”。 更详细请点击&#xff1a;http://yayihouse.com/yayishuwu/chapter/1826