`

Oracle的基本语法——DDL & DML

阅读更多

一、DDL和DML的区别

DDL和DML都是数据库语言,DDL是数据库模式定义语言(Data Definition Language),主要包括创建、修改数据库表。DML是数据操纵语言(Data Manipulation Language),主要包括insert 、update、delete等。

二、DDL语句

1.创建数据库表

 

要指明表的名称、列的名称、列的数据类型、列的宽度、是否有默认值等。

 

create table stu( name char(8), salary number(5) default 0, content char(4 char), hiredate date 	);	
//name为8个字节,content为4个字。

 

 在现有表的基础上建立表

 

create table t1 as select ename name,sal salary from emp;//可以给列改别名 
create table t2 (c1,c2,c3)as select ename,empno,sal from emp where 9=1; 
//不想要数据,只建立表结构,c1,c2,c3是给列起的别名

 

 注:表的命名规则

(1)标准ASCII码描述;

(2)必须以字母开头;

(3)不能是保留字;

(4)可以包含大小写字母、数字、$、#;

(5)不能和所属用户的其它对象重名。千万不要使用汉语做表和列的名称,因为汉语是 ASCII 码所不能描述的,ORACLE 的核心是 ASCII 编写的,你使用汉语只是一时痛快,后患无穷。

2.查询当前用户所拥有的表

 

 

select object_name,object_type from user_objects; 
//user_objects当前用户所拥有的所有对象,不包含你建立的public对象

 

 

 

select table_name from user_tables; 
//user_tables当前用户所拥有的表,拥有表的一切权利

 

 

select * from tab; //tab是当前用户拥有的表和视图

 

 3.修改表信息

 

修改表的结构

如果列为null,可以随便修改列的类型和宽度

如果有数据,修改会受到限制,但不会破坏数据

如果不改变类型,只改变宽度的话,加大宽度是可以的

 

alter table t1 modify(name char(12)); 
alter table t1 modify(name number(12));//如果列为null,可以改变列的类型

 

 修改表的名称

 

rename t1 to t_1;	//必须是表的owner才可以修改表的名称

 

 修改列的名称

 

alter table t4 rename column c1 to name;

 

添加表注释

 

comment on table emp is 'employee table';	//添加注释 select comments from user_tab_comments where table_name = 'emp';	//查询表注释

 

 添加列注释

 

comment on column emp.sal is '员工工资';	//添加列注释 select comments from user_col_comments where tab_name='emp' and column_name='sal';	//查询列注释

 

 丢弃表

 

drop table t2; //此语句并没有将表真的删除,只是改了名称 
show recyclebin;//显示回收站的信息 
select * from user_recyclebin;	//查询该用户的回收站信息

 

 将回收站的表还原

 

flashback table t2 to before drop;	//还原t2 
flashback table t2 to before drop rename to tt2;	//还原表的同时修改表的名称

 

 清空回收站内指定的表

 

purge table t2;	//清空回收站的t2表 purge recyclebin;	//彻底地删除回收站里的表

 

三、DML语句

1.insert 语句 

 

 

insert into t1(c1,c2,c3) values(v1,v2,v3);	//	列的个数和数据类型要匹配
insert into t1(c2) values(sysdate);	//插入当前日期

 

 隐式插入null

在插入中没有列出的列,就会被插入null,如果该列有default值,那么就插入默认值

 

insert into dept(deptno) values(50);//其中dname,loc没有说明,都为null

 

 显示插入null值

明确的写出该列的值为null

 

insert into dept values(60,null,null); insert into dept(loc,dname,deptno) values(null,null,70);

 

日期

 当插入的列为日期的时候,最好强制转化为日期类型,默认的转换在环境变化的时候会报错

 

insert into t3(hiredate) values(to_date('080599','mmddrr'));

 

字符串

字符串大小写敏感

 

 

insert into t2(c1) values ('BEIJNG'); insert into t2(c1) values('beijing');

 

 子查询插入

不加values关键字,一次可以插入多行,列的类型和位置要匹配

 

insert into d1 select * from dept; 
insert into emp2 select * from emp where deptno=30;

 

2.update语句

 

修改表中的数据

 

update emp set sal=sal+1;
update emp set sal=2000 where empno=7900; 
update emp set comm=null where deptno=30;

 

用子查询来更新

 

update emp2 set dname=(select dname from dept where dept.deptno=emp2.deptno);

 

给列设定指定值  

 

create table t1(c1 number(2) default 10,c2 char(10) default 'bj'); 
update emp2 set empno=default;

 

 3.delete删除行

 

delete t1;	//	只删除表t1中的所有行数据,表还在 delete t1 where sal > 2000;	//	将符合条件的行删除

 

4.Merge语句

 

Merge是update和insert的结合体,有就做update,没有就做insert,

Merge into解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表

 语法:

 

MERGE INTO [your table-name] [rename your table here] USING ( [write your query here] )[rename your query-sql and using just like a table] ON ([conditional expression here] AND [...]...) WHEN MATHED THEN [here you can execute some update sql or something else ] WHEN NOT MATHED THEN [execute something else here ! ]

 

 eg:

 

merge into t_a a using (select FP0,FP1,FP2,FP3,REDE from t_b) b on (a.fp0=b.fp0 and a.fp1=b.fp1 and a.fp2=b.fp2 and a.fp3=b.fp3) when matched then update set a.rede=b.rede when not matched then insert (a.fp0,a.fp1,a.fp2,a.fp3,a.org_severity,a.rede, a.event_time,a.int_id) values (b.fp0,b.fp1,b.fp2,b.fp3,b.REDE,b.redefine_severity,sysdate,7777778);

 

 //利用表 t_b跟新表t_a的b.redefine_severity,

条件是a.fp0=b.fp0 and a.fp1=b.fp1 and a.fp2=b.fp2 and a.fp3=b.fp3,

如果tfa_alarm_act_nms表中没有该条件的数据就插入。如果数据量很大,此sql效率非常高

 

分享到:
评论

相关推荐

    Oracle语法参考(大全).

    Oracle语法参考(大全) ,里面都是chm帮助文档,是我收集的oracle入门资料中相当不错的语法速查和实例参考,包括各种DDL,DML语法以及进阶指南

    全面oracle接触sql语法

    全面接触sql语法,具体包含DML,DDL操作语句

    Direct Oracle Access v4.1.3 bcb6

    SQL脚本 ——如果需要执行多条数据定义语言(DDL)语句,例如运行您程序的数据库安装部分,就可以使用TOracleScript组件。该组件含有一个专有编辑器,可以开发脚本和单个命令。可扩展的脚本语言遵循基本的SQL*Plus...

    数据库语法SQL牛哥版.doc

    oracle数据库语法SQL SQL是啥 结构化查询语言(structured query language),使用SQL可以对数据库进行读写操作。 SQL的分类 DDL 数据定义语言(data definition language),create(创建)、alter(修改)、drop(删除) DML ...

    oracle管理应用工具和sql高级应用视频教程详细完整版

    第八章:DML和DDL语句 第九章:Select的高级应用 第十章:Oracle的国际化支持。 由于文件过大,只提供百度网盘下载地址和提取码,请放心下载。 信誉第一,如有任何问题,可以给我发私信或者评论区留言

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    目录回到顶部↑第1章 开发成功的Oracle应用 1 1.1 我的方法 2 1.2 黑盒方法 4 1.3 开发数据库应用的正确(和不正确)方法 8 1.3.1 了解Oracle体系结构 8 1.3.2 理解并发控制 14 1.3.3 多版本 19 1.3.4 数据库...

    Oracle文档.docx

    详细的Oracle帮助文档,包括增删改查,DDL,DCL,DML各种操作数据库的语法。

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     3.2.7 在DDL,DML语句中使用子查询  3.3 维护数据  3.3.1插入数据  3.3.2 更新数据  3.3.3 删除数据  3.4 事务与事务控制  3.4.1 事务的概念  3.4.2 事务控制的基本语句及其功能  3.4.3 事务的...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 用法:sqlplus 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户...

    mysql数据库的基本操作语法

    注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改 但是MySQL可以通过多个modify的方式完成: alter table user modify tel varchar(15) default '02087654321' first, modify name varchar(20) ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...

    SQL语句基础用法大全(DML)

    DML(DataManipulationLanguage,数据操作语言),用于检索或者更新数据DDL(DataDefinitionLanguage,数据定义语言),用于定义数据的结构,如创建,修改或者删除数据库对象DCL(DataControlLanguage,数据控制语言),定义...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4...

    oracle学习经典教程

    1.4.1.2.3 按操作划分,可分为DML 锁(data locks,数据锁)、DDL 锁 (data dictionary lock) 和System Locks。.........84 1.4.1.2.4 DML 锁..........84 1.4.1.2.5 DDL 锁(dictionary locks).........

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

Global site tag (gtag.js) - Google Analytics