使用DML语句【weber出品必属精品】
DML语句包含以下语法:
INSERT:往一个表中增加新行
DELETE:从一个表中删除掉现有的行
UPDATE:更改一个表中现有的行
INSERT语句
语法:INSERT INTO TABLE(COLUMN1,COLUMN2,....) VALUES(VAL1,VAL2,...)
使用这种方法只能一次插入一行数据插入包含每一个列值的新行,按缺省顺序列出表中所有的列值.
- 创建带有结构的空表
SQL> create table t as select * from emp where =;---1是不会等于2的,给了这个假条件是使得创建的表只有emp里面的表结构,而没有数据 Table created. SQL> select count(*) from e; COUNT(*)
---------- SQL> desc e
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NUMBER()
ENAME VARCHAR2()
JOB VARCHAR2()
MGR NUMBER()
HIREDATE DATE
SAL NUMBER(,)
COMM NUMBER(,)
DEPTNO NUMBER() - 插入一条数据,日期值和字符值要用单引号括起来
SQL>insert into t values(,' SMITH', ' CLERK' ,'',' 17-DEC-80',,null,); row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
SMITH CLERK -DEC- SQL>commit;
Commit complete. - 指定某列进行插值
SQL> insert into t (empno,ename) values(,'ywb'); row created. SQL> commit ; Commit complete. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
SMITH CLERK -DEC-
ywb - truncate表,删除表的数据,不删除结构,drop才是一锅端
---Truncate是DDL语言,和其他DDL语言一样,他将进行隐式提交。
SQL> truncate table t; Table truncated. SQL> select * from t; no rows selected SQL> rollback; Rollback complete. SQL> select * from t; no rows selected
- 修改某列的默认值alter table t modify column default value;
SQL> alter table t modify sal default ''; Table altered. SQL> insert into t (empno,ename) values(,'ywb'); row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb
ywb - 插入特殊的值:例如日期---sysdate,自动获取日期
SQL> insert into t(empno,ename,hiredate) values (,'ywb',SYSDATE); row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb
ywb
ywb -AUG- - 日期对格式比较敏感:虽然插入是安装yyyy-mm-dd格式,但是显示又是另一种格式
SQL> insert into e values(,'WARD','SALESMAN',,to_date('2014-08-19','yyyy-mm-dd'),,,); 已创建 行。 SQL> commit; 提交完成。 SQL> select * from e; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- -------------- ----- ---------- ------
SMITH CLERK -12月-
ALLEN SALESMAN -8月 -
WARD SALESMAN -8月 - - 从另一个表中拷贝行:
创建带有子查询的 INSERT语句
不要使用 VALUES 子句
SQL> insert into t select * from emp where empno=; row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb
ywb
ywb -AUG-
SMITH CLERK -DEC- - 子查询中的列要与INSERT子句中的列相匹配,不然会报错
SQL> insert into t (empno,ename,job,sal) select empno,ename,job,sal from emp where empno=;
-------------------注意:这里没有加关键字:values----
row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb
ywb
ywb -AUG-
SMITH CLERK -DEC-
ALLEN SALESMAN ---插入过多的值---
SQL> insert into t (empno,ename,job,sal) select * from emp where empno=;
insert into t (empno,ename,job,sal) select * from emp where empno=
*
ERROR at line :
ORA-: too many values - 替代变量插入值:
[oracle@oracle~]$ cd /u01
vi .sql写入如下内容:
insert into t values(&DEPTNO,'&DNAME','&LOC'); ---注意插入字符需要加引号
在sqlplus中执行如下操作:
SQL>@/u01/.sql;SQL> @/u01/.sql;
Enter value for empno:
Enter value for ename: yeb2
Enter value for sal:
old : insert into t(empno,ename,sal) values(&EMPNO,'&ENAME','&SAL')
new : insert into t(empno,ename,sal) values(,'yeb2','') row created. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb
ywb
ywb -AUG-
SMITH CLERK -DEC-
ALLEN SALESMAN
yeb2 rows selected. - UPDATE 语句
SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
SMITH CLERK -DEC- SQL> update t set ename='ywb' where empno=; row updated. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb CLERK -DEC- - 同时更改多行多列:
SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ywb SALESMAN -DEC-
ALLEN SALESMAN -FEB- SQL> update t set (ename,job)=(select ename,job from emp where empno=) where empno= or empno=; rows updated. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ALLEN SALESMAN -DEC-
ALLEN SALESMAN -FEB- 这里尤其要注意,set(xx,xx)=(xx,xx)后面如果跟的是值则会报错:
SQL> update t set (job,sal)=('haha',) where empno= or empno=;
update t set (job,sal)=('haha',) where empno= or empno=
*
ERROR at line :
ORA-: UPDATE ... SET expression must be a subquery
后面跟的必须是子查询。 - DELETE语句:从表中删去现存的行
SQL> delete from t where empno=; row deleted. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ALLEN SALESMAN -DEC- - 参照另一个表来删除行:
(注:‘SCOTT’要大写)
SQL> delete t where empno in(select empno from emp where ename='SCOTT'); row deleted. SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
ALLEN SALESMAN -DEC- - TRUNCATE语句:
TRUNCATE语句: . 删除表中的所有数据,保留表结构,不能使用where子句 . 是DDL语句,不是DML语句,一旦删除,不能回退 SQL> truncate table e ; 表被截断。 SQL> select * from e; 未选定行 SQL> roll
回退已完成。
SQL> select * from e; 未选定行
使用DML语句【weber出品必属精品】的更多相关文章
- 全世界最详细的图形化VMware中linux环境下oracle安装(二)【weber出品必属精品】
<ORACLE 10.2.05版本的升级补丁安装> 首先我们解压 $ unzip p8202632_10205_LINUX.zip 解压后我们会发现多出了个文件夹,他是:Disk1,进入D ...
- 全世界最详细的图形化VMware中linux环境下oracle安装(一)【weber出品必属精品】
安装流程:前期准备工作--->安装ORACLE软件--->安装升级补丁--->安装odbc创建数据库--->安装监听器--->安装EM <前期准备工作> 安装 ...
- oracle数据库事务相关【weber出品必属精品】
事务的概念:事务:一个事务由一组构成一个逻辑操作的DML语句组成 事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束.以下情况会使得事务结束: 1. 执行COMMIT 或者 ...
- 数据库对象(视图,序列,索引,同义词)【weber出品必属精品】
视图视图的定义:视图就是一个查询的别名为什么使用视图限制数据的存取 SQL> conn /as sysdba 已连接. SQL> grant create view to scott; 授 ...
- 静默安装ORACLE【weber出品必属精品】
安装配置系统环境安装linux ,所有服务都不选择,只是选择安装开发工具,不要安装防火墙(当然也可以在后面关闭) 打开终端,执行如下命令,检查安装包,没有的都要安装 make, glibc, liba ...
- 集合运算符之全集、交集、补集【weber出品必属精品】
集合的概念 与数学中的全集.交集.补集的概念是一样的 常用的集合运算符 集合运算符的作用:把两个查询构造为一个联合查询 1. 全集:求连个查询的全集 union all:将两个查询的所有数据全部列出, ...
- 高级子查询【weber出品必属精品】
多列子查询 where条件中出现多列与子查询进行比较 多列子查询分为:成对比较和非成对比较 成对比较: SQL> select ename,sal,job from emp where (dep ...
- ORACLE SQL 组函数【weber出品必属精品】
组函数:对一组数据进行加工,每组数据返回一个值 常用的组函数:count() avg() max() min() sum() count()函数 1. count(*) :返回总共的行 ...
- ORACLE SQL单行函数(三)【weber出品必属精品】
16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...
随机推荐
- iOS8之后CoreLocation定位的使用
在Info.plist文件中添加如下配置: //始终允许访问位置信息 (1)NSLocationAlwaysUsageDescription //使用应用程序期间允许访问位置数据 (2)NSLocat ...
- 转:PHP 使用ZipArchive压缩文件并下载
原文来自于:http://courages.us/archives/176 网站上需要提供一些打印数据给用户下载,这些文件每次都需要重新生成,因为随时都会有新的数据产生.网络上关于PHP的压缩功能实现 ...
- 转:Netty系列之Netty高性能之道
1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用 ...
- GitHub NetFlow
https://github.com/search?l=Java&p=1&q=netflow&ref=searchresults&type=Repositories&a ...
- 第23章 COM和ActiveX(COM可以实现跨进程跨机器的函数调用)
控件对象既可在EXE中实现,也可在DLL中实现.这种实现对于COM对象的用户来说是透明的.因为COM提供了调度服务(marshaling).COM调度机制能够化进程甚至跨机器的函数调用,这使得16位程 ...
- 理解java中的ThreadLocal(转)
一.对ThreadLocal概述 JDK API 写道: 该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的 ...
- 由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考
背景 我们使用的HiveServer2的版本为0.13.1-cdh5.3.2,目前的任务使用Hive SQL构建,分为两种类型:手动任务(临时分析需求).调度任务(常规分析需求),两者均通过我们的 ...
- delphi 通过控件的handle取得控件
例子代码如下: vartsg:TstringGrid;begintsg:=Tstringgrid(FindControl(handle));//正常使用TstringGrid//tsg......./ ...
- [置顶] 自己写代码生成器之生成Dal层代码(获取数据库所有表名称)
自己写代码生成器之生成Dal层代码(获取数据库所有表名称) --得到数据库birthday所有表名称 select name from sysobjects where [type]='U' --se ...
- jQuery.holdReady()方法用法实例
调用此方法可以延迟jQuery的ready事件,也就是说尽管文档已经加载完成,也不会执行ready事件处理方法.可以多次调用jQuery.holdReady()方法,以延迟jQuery的ready事件 ...