GVKun编程网logo

Oracle DDL(Oracle ddl语句)

4

在本文中,您将会了解到关于OracleDDL的新资讯,同时我们还将为您解释Oracleddl语句的相关在本文中,我们将带你探索OracleDDL的奥秘,分析Oracleddl语句的特点,并给出一些关于

在本文中,您将会了解到关于Oracle DDL的新资讯,同时我们还将为您解释Oracle ddl语句的相关在本文中,我们将带你探索Oracle DDL的奥秘,分析Oracle ddl语句的特点,并给出一些关于2.3 Oracle 之 DDL 语句(约束、伪列、视图、序列、同义词) 精简版、For oracle databases, if the top showing the oracle database, then oracle process is using the top c、NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)、Oracle --DML、DDL、DCL的实用技巧。

本文目录一览:

Oracle DDL(Oracle ddl语句)

Oracle DDL(Oracle ddl语句)

DDL是“数据定义语言”( Data Defination Language )的缩写,它包含CREATEALTERDROP 、RENAME 、TRUNCATE等命令,用来对数据库对象进行创建、修改、删除、重命名等操作。
其中CREATE 、ALTER和DROP命令的功能十分强大,几乎可以对所有的数据库对象进行管理,例如表、视图、索引、存储程序等。

表的创建

CREATE命令可用来创建表。

创建表时要确定表的结构,即确定表中各列的名字和类型。
在关系数据库中,表被看做是一个关系,表中的每个列是关系中的属性,是一个不可再分割的基本单位。
表中的行对应关系中的一个元组。

表的结构确定下来以后,就可以通过INSERT语句向表中插入数据了。
用来创建表的CREATE命令格式为:

CREATE TABLE 表名称(

列 l 数据类型,
列 2 数据类型,
..

);

表名是代表这个数据库对象的名称,对表名的要求是必须以字母开头,长度为l ~ 30个字符,而且只能包含A ~ Z 、a ~ z 、0 ~ 9 、一、$和#等字符,不能使用Oracle 的保留字,在同一个用户模式中不能拥有两个同名的表。

表中的每个列都有一个名字,在同一个表中不能有同名的列。

列的数据类型可以是系统预定义的类型,也可以是用户自定义类型。

数据类型描述
VARCHAR2(n) (可变长度的字符串.最大长度可达4000KB)
CHAR ( n) (固定长度的字符串,最大长度可达2000KB)
NUMBER (浮点类型的数据)
NUMBER ( m.n) (可表示整数和小数, m和n 分别为精度和1 小数位数)
DATE (日期型数据)
LONG (可变长度的字符串,最大长度可达2GKB)
RAWLONG RAW (存储二进制数据可变长度字符串
LOB 大对象类型  (存储大型的无结构的数据,如图形图像文本等数据,最大可达4GKB)

在创建表时,可以通过DEFAULT关键字为列指定一个默认值,这样当用INSERT语句插入一行时,如果没有为该列指定值,就以默认值填充,而不是插入空值。

如果要验证表的结构是否与期望的结果一致,可以在表创建之后通过DESC命令查看表的结构。
这个命令只能列出表中各列的列名数据类型以及是否为空等属性。

在创建表时,还可以以另一个表为模板确定当前表的结构。一般情况下,可以从一个表复制它的结构,从而快速创建一个表。
复制表的结构是通过子查询来实现的,即在CREATE语句中可以嵌套SELECT语句。这时的CREATE语句格式为:

CREATE TABLE 表名称 AS SELECT 语句;

CREATE语句将根据SELECT子句中指定的列,确定当前表的结构,然后将子查询返回的数据插入到当前表中,这样在创建表的同时向表中插入了若干行。

一般情况下,在通过这种方式创建的表中,列名和列的定义与原来的表一致。

如果希望在创建一个新表时指定与原来的表不同的列名,可以在CREATE语句中的表名之后指定新的列名。
如果只希望拷贝表的结构,而不复制表中的数据,可以将SELECT子句中的条件指定为一个永远为假的条件。

实际上,创建表的语句是非常复杂的,在表上可以定义约束,可以指定存储参数等属性。

在这里,顺便向读者介绍两个概念,一个是模式( Schema ),一个是数据字典( Datadictionary )。
模式指的是一个用户所拥有的所有数据库对象的逻辑集合。

在创建一个新用户时,同时创建了一个同名的模式,这个用户创建的所有数据库对象都位于这个模式中。
用户在自己的模式中创建表,需要具有CREATE TABLE 系统权限,如果需要在别人的模式中创建表,则需要具有CREATE ANY TABLE权限。
在访问其他用户的数据库对象时,要指定对方的模式名称,例如,通过SCOTT.EMP 引用SCOTT用户的emp表。

数据字典是一些视图,从这些视图中可以查看一些重要的系统数据,如数据库中的表、索引、权限、表空间等信息。
这些视图是在创建数据库时自动创建的,它们的内容也是由数据库服务器自动维护的。
用户可以查看以下几种形式的数据字典视图:
·以USER_开始的视图,
·以ALL_开始的视图,
.以DBA_开始的视图。
从USER_视图中可以查看当前用户所创建某类数据库对象,如在USER_TABLES 中可以查看当前用户所创建的任何一个表的信息。
从ALL_视图中可以查看当前用户有权限访问的某类数据库对象,如在ALL_TABLES 中可以查看当前用户有权限的任何一个表的信息。
在DBA视图中可以查看当前数据库中所有的某类对象的信息,如在DBA TABLES 中可以查看当前数据库中所有的表。
DBA_视图只能由数据库管理员(一般是SYS 用户)查看。

如何修改表的结构

表在创建以后,如果在使用的过程中发现表的结构不合理,可以通过执行ALTER命令修改它的结构。
修改表结构的操作包括增加列、修改某个列的定义、删除列、增加约束修改约束
表的重命名等。
ALTER命令可以使用若干个子句,通过这些子句可以完成修改表结构的操作。

可以使用的子句包括ADDDROPMODIFYRENAME等。

如果要在表中增加一个列,通过ADD子句指定一个列的定义,至少要包括列名和列的数据类型。
增加列的语句结构为:
ALTER TABLE 表名
ADD (列 1 ,数据类型,
列 2, 数据类型,
. . . ) ;

需要注意的是,如果一个表中已经有数据,这时增加一个列时,不能将该列约束为“非空(NOT NULL )”,因为我们不能一方面要求该列必须有数据,而另一方面又无法在增加列的同时向该列插入数据。
 

也就是说,要往一个表中增加一个非空列时,这个表必须是空的。

如果表中已经有数据,单独使用“NOT NULL”约束是不行的。
一种好的解决办法是为该列指定默认值,这样在增加一个非空列的同时,为这个列填充了指定的默认值。
ALTER TABLE 表名称 ADD 列名称 数据类型 DEFAULT 默认值 NOT NULL;

利用ALTER语句还可以从表中删除一个列。

用来完成这个操作的子句是DROP 。

用于删除列的ALTER语句格式为:

ALTER TABLE 表名称 DROP COLUMN 列名称;

一个列时,这个列将从表的结构中消失,这个列的所有数据也将从表中被删除。

原则上可以删除任何列,但是一个列如果作为表的主键,而且另一个表已经通过外键在两个表之间建立了关联关系,这样的列是不能被删除的。

注:此时可以通过删除外键约束,这样就可以删除主键列;亦或者可以通过删除主键约束,在删除主键约束时要加上关键字CASCADE。

一旦主键约束被删除了,外键约束也就被存在了,因为外键是依赖于主键列的。

如果要修改表中一个列的定义,可以使用ALTER语句的MODIFY 子句。

通过MODIFY 子句可以修改列的长度、非空、数据类型等属性。

注:MDOIFY子句修改列属性要根据表中已有数据来决定能否修改。
使用了MODIFY子句的ALTER语句格式为:

ALTER TABLE 表名称 MODIFY 列名称;

需要注意的是,如果表中目前没有数据,那么可以将一个列的长度增加或减小,也可以将一个列指定为非空。
如果表中已经有数据,那么可以增加列的长度,但在减少列的长度时,可能会因为列长度小于列的最大值而不允许修改;如果该列有空值,不能将该列指定为非空。

通过ALTER语句,还可以为表进行重命名,也就是将表的名字改为另一个名字。

为表重命名的ALTER语句格式为:

ALTER TABLE 表名称 RENAME TO 新表名称;

其他的DDL命令

除了CREATE和ALTER两条主要的命令外, DDL还包括DROP 、RENAME和TRUNCATE等几条命令。
其中DROP命令的功能是删除一个对象,通过这条命令几乎可以删除任何类型的数据库对象。
用来删除表的DROP命令的格式为:

DROP TABLE 表名称;

数据库对象删除后,它的有关信息就从相关的数据字典中删除。
RENAME命令的作用是对数据库对象重新命名。

对表进行重新命名的命令格式为:

RENAME 原表名称 TO 新表名称;

表被重新命名以后,它的信息就会在相关的数据字典中更新。

TRUNCATE命令的作用是删除表中的数据。

与DELETE语句不同的是, TRUNCATE命令将删除表中的所有数据,不需要指定任何条件,而且数据被删除后无法再恢复。
这条命令的语法格式为:

TRANCATE TABLE 表名称;

TRUNCATE命令作用的结果是删除所有的数据,而且不可恢复,所以这条命令要慎用。

从执行结果来看,一条TRUNCATE语句相当于下列两条语句的组合:

DELETE FROM 表名称;

COMMIT;

2.3 Oracle 之 DDL 语句(约束、伪列、视图、序列、同义词) 精简版

2.3 Oracle 之 DDL 语句(约束、伪列、视图、序列、同义词) 精简版

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

DDL Data Definition(重点)

n. 定义;[] 清晰度;解说)用于定义数据的结构,创建,修改,删除数据库对象

一、表的增删改查

1、创建表:CREATE TABLE temp AS (SELECT * FROM emp WHERE 1==2) 创建表结构。

CREATE TABLE temp(字段名称 字段类型(默认值))

2、删除表:DROP TABLE person (需要回滚);

TRUNCATE TABLE tperson ;(直接截断)

3、增加表字段:ALTER TABLE person ADD (address VARCHAR(200) DEFAULT '' '') ;

4、修改表字段结构:ALTER TABLE MODIFY ( DEFAULT )

RENAME 旧名称 TO 新名称 ;

二、约束:

DROP TABLE person ;

CREATE TABLE person

(

pid VARCHAR2(18)PRIMARY KEY(1、主键约束) ,

name VARCHAR2(200)NOT NULL(2、非空约束) ,

age NUMBER(3) ,UNIQUE NOT NULL(3、唯一约束除主键外)

birthday DATE ,NOT NULL (4、非空约束)

sex VARCHAR2(2) DEFA CHECK(age BETWEEN 0 AND 150)/CHECK(sex IN ('''',''''))(5、检查约束)

CONSTRAINT person_pid_pk PRIMARY KEY(pid) pid 约束命名(6、外键约束)

增加外键约束:ALTER TABLE book ADD CONSTRAINT person_book_pid_fk FOREIGN KEY (pid) REFERENCES person (pid) ON DELETE CASCADE ; 表里加外键约束。

删除外键约束:ALTER TABLE 表名称 DROP CONSTRAINT 约束名称 ;

三、伪列:

SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp WHERE ROWNUM<=5;

四、集合:

UNION(无重复) UNION ALL(有重复) INTERSECT (俩个相同)MINUS (不同集合)

五、视图创建:

CREATE VIEW 视图名称 AS 子查询 WITH CHECK OPTION(不更新创建条件);

CREATE VIEW 视图名称 AS 子查询 WITH READ ONLY(只读视图操作)

EgCREATE VIEW empv20 AS SELECT empno,ename,job,hiredate FROM emp WHERE deptno=20 ;

视图删除:DROP VIEW empv20 ;

视图修改:CREATE OR REPLACE 视图名称 AS 子查询 ;

六、序列:

创建格式

CREATE SEQUENCE sequence

[INCREMENT BY n] 每次增长幅度

[START WITH n] 序列从 1 开始

[{MAXVALUE n | NOMAXVALUE}] 最大值

[{MINVALUE n | NOMINVALUE}] 最小值

[{CYCLE|NOCYCLE}] 表示达到最大值后从头开始,也可以为 nocycle

[{CACHE n|NOCACHE}] ; 防止数据库挂掉数据库不能使用

nextVal 方法,取得序列下一个内容,currVal 取得序列当前内容

七、同义词:CREATE SYNONYM 同义词名称 FOR 用户名. 表名称 ;

创建:CREATE SYNONYM emp FOR scott.emp ;

删除:DROP SYNONYM emp ;

Dual sys 用户下。但在所有用户表中都可用 dual 表(虚拟表)

For oracle databases, if the top showing the oracle database, then oracle process is using the top c

For oracle databases, if the top showing the oracle database, then oracle process is using the top c

Note 805586.1 Troubleshooting Session Administration (Doc ID 805586.1) Note 822527.1 How To Find Where The Memory Is Growing For A Process (Doc ID 822527.1) Note 273646.1 How to diagnose the high cpu utilization of ORACLE.EXE in Windows environment Note 728539.1 Find Blocking Sessions In sqlPLUS Note 61552.1 Troubleshooting Oracle Database Hanging Issues for versions from 7 to 9--Exhaustive Note 164760.1 Detecting and Resolving Locking Conflicts using TopSessions

NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)

NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)

如何解决NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)?

我正在使用 loopback-connector-oracle 4.1.1 版寻求有关我面临的问题的一些信息。分析如下: 我们有 DB 连接配置,可以使用 json 文件格式的 oracle 连接器使用属性连接到 oracle DB 数据源。 "maxConn": 20,“主机”:DB_HOST, “端口”:DB_PORT, “数据库”:DB_NAME, “密码”:DB_PASSWORD, “用户”:DB_USER, "connector": "oracle",

有两个进程/pod 正在运行,每个进程/pod 都有自己的池供oracle 连接器使用。发生的情况是,在一个实例中,oracle 能够连接并处理请求,但在第二个 pod/进程中,我注意到 njs-040 错误连接超时。由于两者都运行在同一个环境中,所以连接性不会成为问题。我正在寻求您的帮助或意见以了解连接池耗尽的原因?正如我所看到的,DB 上的连接/会话数量配置的数量较少。 当我重新启动 pod/进程时,一切都会恢复正常。在我的流程中遇到的一些问题,如果您可以指导并提供宝贵的意见,我正在寻求您的帮助。

  • 如果使用连接池(oracle 连接器),它也应该释放对象,耗尽的机会会减少吗?
  • 在进程/pod 启动并通过连接器 (oracle) 获取数据源中的连接对象后,发生网络问题并且进程和数据库之间的连接丢失,连接器是否恢复?根据我的观察,我在其他进程中注意到的似乎应该被恢复,当它与范围一起运行时,在一个进程中可能会导致什么?

我非常感谢您的回复。 提前致谢 桑吉夫

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Oracle --DML、DDL、DCL

Oracle --DML、DDL、DCL

DML、DDL、DCL 的区别

1. DML 概述:(data manipulation language),数据操纵语言。用于操纵数据库对象中包含的数据,也就是说操纵的对象是记录。

1.1 DML 的主要语句 (即操作语句)

insert 语句:向表中插入一条记录。

delete 语句:删除数据表中一条或多条记录。

update 语句:用于修改表中的记录。

备注:由上可以看出 DML 操作的对象是表中的记录。

2. DDL 概述:(data definition language),数据定义语言。用于操作对象 (eg: 数据库表) 和对象的属性 (eg: 表字段),这种对象包括数据库本身以及数据库对象,例如:表、视图等。DDL 主要的命令有:create、alter、drop 等,ddl 主要用来定义或改变表 (table) 结构,改变数据类型,改变表之间的连接和约束等初始化工作上,这些工作大多数在建立表时使用。

2.1 DDL 的主要语句

create 语句:创建数据库表。

alter 语句:更改表定义及表的字段。

drop 语句:删除表

备注:由上可以看出,DDL 操作的对象是数据库表。

3. DCL 概述:(data control language),数据控制语言。用来设置或更改数据库用户或更改数据库角色权限等。

3.1 DCL 的主要语句

grant 语句:授权语句,它可以将语句权限或者对象权限授给其他用户或角色。

deny 语句:拒绝语句,用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户通过其它角色成员继承权限。

revoke 语句:它与 grant 语句相反,它用于删除数据库用户的权限,但是不影响该用户从其它角色成员继承过来的权限。
备注:由上可以看出,DCL 操作的对象是数据库用户或者角色。


今天的关于Oracle DDLOracle ddl语句的分享已经结束,谢谢您的关注,如果想了解更多关于2.3 Oracle 之 DDL 语句(约束、伪列、视图、序列、同义词) 精简版、For oracle databases, if the top showing the oracle database, then oracle process is using the top c、NodeJS-Oracle DB - NJS-040 连接超时,在 ICP 中使用带有 Lopback 的 oracle 驱动程序(loopback-connector-oracle)、Oracle --DML、DDL、DCL的相关知识,请在本站进行查询。

本文标签: