Oracle基础(十) DML数据操作
一、DML数据操作语言
主要用于检索、插入和修改数据库信息。它是最常用的SQL命令,如INSERT(插入)、UPDATE(更新)、SELECT(选择)、DELETE(删除)。
1、INSERT插入语句:
语法:
INSERT INTO tablename[column1[,column2...]]
VALUES (value1[,value2...]);
说明:
INSERT INTO:为插入的关键字。
tablename:表示要插入的表。
column1:可选参数,表示要插入的列,多个列使用,分隔。
values(value1..):插入的值,这里的value1,必须和前面的列相对应,如果不写列,则必须和表的结构一致。
例:
--创建学员信息表,并添加约束
CREATE TABLE stuinfo
(
stuName VARCHAR2(20) NOT NULL CONSTRAINT pk_name PRIMARY KEY,
stuPass VARCHAR2(20) NOT NULL CONSTRAINT ck_pass CHECK (LENGTH(stupass) > 3),
stuAge NUMBER(3,0) NOT NULL CONSTRAINT ck_age CHECK (stuage>18),
birthday DATE DEFAULT SYSDATE
)
向学员信息表中插入数据
--向学生表中插入一条记录
INSERT INTO stuinfo(stuname,stupass,stuage,birthday)
VALUES ('张三','',20,DEFAULT) --添加自定义日期类型的数据
INSERT INTO stuinfo
VALUES ('李四','',25,to_date('1999-9-20','yyyy-Mm-dd'))
这里需要注意:
1)插入的列必须和插入的值一一对应,包括数据类型,个数,顺序必须要全一致。
2)如果数据表中包含了默认值,则可以使用default关键字插入默认值。
3)插入的数据必须满足数据约束。否则插入失败。
4)插入的列可以省略,但是必须按照表中列的顺序插入数据。
5)通过to_date完成对日期函数数据的添加。
6)插入字符串类型必须使用'包含起来。
插入多行记录:
1、insert..into...select...生成自定义数据
--一次插入多行数据,通过union关键字拼接查询
INSERT INTO stuinfo(stuname,stupass,stuage,birthday)
SELECT '王五','',20,to_date('1999-8-8','yyyy-Mm-dd') FROM dual UNION
SELECT '赵六','',25,to_date('195-8-20','yyyy-Mm-dd') FROM dual
将多个查询结果拼接起来一次插入数据库,这里查询的类型数据必须和插入的数据类型和顺序完全一致。
2、insert..into...select...将已经存在表的记录插入到新表中
INSERT INTO stuinfo (stuname,stupass,stuage,birthday)
SELECT NAME,pass,age,SYSDATE FROM backuser
将查询结果插入到一个已经存在的表中,如果表不存在则报错。
3、select...into...
--将查询到的数据生成一张新的表
CREATE TABLE backuser AS
SELECT stuname,stupass,stuage,birthday
FROM stuinfo
将查询到的结果插入到一张新表中,表必须不存在,如果存在则报错。
2、update语句
语法:
update tablename set column_name=value[,column=value,...]
[where=condition];
说明:
update:关键字
tablename:表明
column=value:设置列的值,多个列使用,隔开,不需要set。
where condition:条件,必须为boolean表达式。如果不带条件则更所表中所有数据,操作要谨慎。
例:
--将赵六的密码修改为8个6,然后将出生日期改为1989-5-20
UPDATE stuinfo
SET stupass='',
birthday=to_date('1989-5-20','yyyy-MM-dd') --插入日期需要进行格式转换
WHERE stuname = '赵六' --指定修改数据的条件,条件不满足不执行任何操作
commit; --执行完毕后自动进行提交
注意:
1)修改的数据同样必须满足数据库中的约束。
2)修改后的数据如果在PLSQL中需要使用comit提交事务,数据才算修改成功。
3)修改后的条件需要跟上,否则是修改表中所有记录。
3、删除语句
1)DELETE语法:
DELETE [FROM] tablename
[WHERE condition];
说明:
DELETE [FROM]:为删除的关键字。FROM可以省略不写。
tablename:要删除数据的表。
where condition:要删除数据的条件,不写则删除表中所有记录
例:
DELETE stuinfo WHERE stuname = '赵六' --删除用户名为'赵六的用户信息';
DELETE stuinfo --删除表中所有的记录
2)TRUNCATE table 清空表
语法:
truncate tablename;
说明:
truncate:清空关键字。
tablename:要清空的表明。
例:
TRUNCATE TABLE backuser; --清空backuser表
delete和truncate的区别:
a)truncate快速删除记录并释放空间,不适用事务处理,因此无法回滚,而delete命令可在执行删除之后,通过rollback撤销删除。
b)truncate将删除表中的所有记录,而DELETE不仅可以删除表中的记录,还可以通过where条件删除表中的部分数据。
Oracle基础(十) DML数据操作的更多相关文章
- HIVE之 DDL 数据定义 & DML数据操作
DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create dat ...
- ORACLE链接SQLSERVER数据库数据操作函数范例
ORACLE链接SQLSERVER数据库数据操作函数范例 create or replace function FUN_NAME(LS_DJBH IN varchar2 ,LS_ITM varchar ...
- 6.1课堂笔记—DML(数据操作语言),DQL查询语句
一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...
- hive从入门到放弃(三)——DML数据操作
上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...
- DML数据操作语言
DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...
- DML数据操作语言之增加,删除,更新
1.数据的增加 数据的增加要用到insert语句 ,基本格式是: insert into <表名> (列名1,列名2,列名3,......) values (值1,值2,值3,..... ...
- DML数据操作语言之复杂查询
1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...
- DML数据操作语言之常用函数
所谓函数,就是输入某一值,得到相应的输出结果的功能.相当于一个加工厂,给了原料,最终产出成品. 其中原料 就是参数(parameter). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...
- DML数据操作语言之查询(二)
当我们查询出了N条记录之后 ,我们知道一共是几条记录,或者这些记录某一字段(列值)的最大值,最小值,平均值等,就可以使用聚合函数. 1.聚合函数 聚合函数会将null 排除在外.但是count(*)例 ...
随机推荐
- 对Spring.Net的AOP一些思考及应用
前言 这几天在配置Spring.NET,配到AOP的时候发现自己现在还是没有理解到Spring AOP的实现,只是认识到了一个思想,以前配的时候,看的是给好的例子用,真正用的时候还是要想一下 ...
- jQuery实现等比例缩放大图片让大图片自适应页面布局
通常我们处理缩略图是使用后台代码(PHP..net.Java等)根据大图片生成一定尺寸的缩略图,来供前台页面调用,当然也有使用前台javascript脚本将加载后的大图强行缩放,变成所谓的缩略图,这种 ...
- 微信内置浏览器图片查看方式的原生实现(非jssdk)
对于非公众平台网页,想调起图片预览组件,就跟公众号文章一样的图片阅读方式,实现起来是比较简单的,官方也提供了jssdk来做这个.详见 http://mp.weixin.qq.com/wiki/7/aa ...
- 基于FlashPaper的文档播放器
本文主要讨论.描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制,也就是说只允许浏览操作.对下载.打印进行控制. FlashPaper FlashPap ...
- Keil MDK AGDI Drivers, ULink, JLink, ST-Link, NuLink, JTAGjet
AGDI Drivers AGDI is an Application Program Interface (API) third-party developers can use to create ...
- jQuery生成全页面的悬浮覆盖层效果(overlay)
可能在大家开发的过程中,往往需要自己生成一个全页面的覆盖层,以便让用户能够把注意力专注于开发者指定的某一个区域,在这里开发小技巧里,我们使用非常简单的代码生成类似的效果,如下: $("#ov ...
- DNS端口说明
DNS服务器之间的区域复制需要使用TCP 53端口 客户端通过DNS服务器解析域名需要使用UDP 53端口 如果DNS转发配置未生效,则可尝试重启DNS服务
- 【M30】代理类
1.考虑二维数组,在栈上分配,必须在编译时确定大小,也就是大小是常量.另外一点,C++不支持在堆上分配二维数组.怎么解决这个问题? 二维数组可以看成,一维数组的数组.因此,可以使用代理类,Array2 ...
- hdu 4597 Play Game 区间dp
Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...
- 【JavaScript】前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js
摘要:透过对Github,StackOverflow,YouTube等社区进行数据收集后可知,AngularJS在各大主流社区中都是最受欢迎的,Backbone.js与Ember.js则不相伯仲.本文 ...