1. DML语句包含以下语法:

    INSERT:往一个表中增加新行

    DELETE:从一个表中删除掉现有的行

    UPDATE:更改一个表中现有的行

  2. INSERT语句
    语法:INSERT INTO TABLE(COLUMN1,COLUMN2,....) VALUES(VAL1,VAL2,...)
    使用这种方法只能一次插入一行数据

    插入包含每一个列值的新行,按缺省顺序列出表中所有的列值.

  3. 创建带有结构的空表
    SQL> create table t as select * from  emp where 1=2;---1是不会等于2的,给了这个假条件是使得创建的表只有emp里面的表结构,而没有数据Table created.SQL> select count(*) from e;COUNT(*)
    ----------0SQL> desc e名称                                    是否为空? 类型----------------------------------------- -------- ----------------------------EMPNO                                              NUMBER(4)ENAME                                              VARCHAR2(10)JOB                                                VARCHAR2(9)MGR                                                NUMBER(4)HIREDATE                                           DATESAL                                                NUMBER(7,2)COMM                                               NUMBER(7,2)DEPTNO                                             NUMBER(2)

  4. 插入一条数据,日期值和字符值要用单引号括起来
    SQL>insert into t values(7369,' SMITH', ' CLERK' ,' 7902',' 17-DEC-80',800,null,20);1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369  SMITH  CLERK     7902 17-DEC-80   800           20SQL>commit;
    Commit complete.

  5. 指定某列进行插值
    SQL> insert into t (empno,ename) values(1111,'ywb');1 row created.SQL> commit ;Commit complete.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369  SMITH  CLERK     7902 17-DEC-80   800           201111 ywb

  6. truncate表,删除表的数据,不删除结构,drop才是一锅端

    ---Truncate是DDL语言,和其他DDL语言一样,他将进行隐式提交。

    SQL> truncate table t;Table truncated.SQL> select * from t;no rows selectedSQL> rollback;Rollback complete.SQL> select * from t;no rows selected

  7. 修改某列的默认值alter table t modify column default value;
    SQL> alter table t modify sal default '100';Table altered.SQL> insert into t (empno,ename) values(1112,'ywb');1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------1111 ywb1112 ywb                                100

  8. 插入特殊的值:例如日期---sysdate,自动获取日期
    SQL> insert into t(empno,ename,hiredate) values (1113,'ywb',SYSDATE);1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------1111 ywb1112 ywb                                1001113 ywb                    20-AUG-14   100

  9. 日期对格式比较敏感:虽然插入是安装yyyy-mm-dd格式,但是显示又是另一种格式
    SQL> insert into e values(7521,'WARD','SALESMAN',7698,to_date('2014-08-19','yyyy-mm-dd'),1250,500,30);已创建 1 行。SQL> commit;提交完成。SQL> select * from e;EMPNO ENAME  JOB         MGR HIREDATE         SAL       COMM DEPTNO
    ----- ------ --------- ----- -------------- ----- ---------- ------7369 SMITH  CLERK      7902 17-12月-80       800                207499 ALLEN  SALESMAN   7698 19-8月 -14      1600        300     207521 WARD   SALESMAN   7698 19-8月 -14      1250        500     30

  10. 从另一个表中拷贝行:

    创建带有子查询的 INSERT语句

    不要使用 VALUES 子句

    SQL> insert into t select * from emp where empno=7369;1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------1111 ywb1112 ywb                                1001113 ywb                    20-AUG-14   1007369 SMITH  CLERK      7902 17-DEC-80   800           20

  11. 子查询中的列要与INSERT子句中的列相匹配,不然会报错
    SQL> insert into t (empno,ename,job,sal) select empno,ename,job,sal from emp where empno=7499;-------------------注意:这里没有加关键字:values----
    1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------1111 ywb1112 ywb                                1001113 ywb                    20-AUG-14   1007369 SMITH  CLERK      7902 17-DEC-80   800           207499 ALLEN  SALESMAN                   1600---插入过多的值---
    SQL> insert into t (empno,ename,job,sal) select * from emp where empno=7499;
    insert into t (empno,ename,job,sal) select * from emp where empno=7499*
    ERROR at line 1:
    ORA-00913: too many values

  12. 替代变量插入值:
    [oracle@oracle~]$ cd /u01
    vi 1.sql写入如下内容:
    insert into t values(&DEPTNO,'&DNAME','&LOC'); ---注意插入字符需要加引号
    在sqlplus中执行如下操作:
    SQL>@/u01/1.sql;
    SQL> @/u01/1.sql;
    Enter value for empno: 110
    Enter value for ename: yeb2
    Enter value for sal: 120
    old   1: insert into t(empno,ename,sal) values(&EMPNO,'&ENAME','&SAL')
    new   1: insert into t(empno,ename,sal) values(110,'yeb2','120')1 row created.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------1111 ywb1112 ywb                                1001113 ywb                    20-AUG-14   1007369 SMITH  CLERK      7902 17-DEC-80   800           207499 ALLEN  SALESMAN                   1600110 yeb2                               1206 rows selected.

  13. UPDATE 语句
    SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 SMITH  CLERK      7902 17-DEC-80   800           20SQL> update t set ename='ywb' where empno=7369;1 row updated.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 ywb    CLERK      7902 17-DEC-80   800           20

  14. 同时更改多行多列:
    SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 ywb    SALESMAN   7902 17-DEC-80  1600           207488 ALLEN  SALESMAN   7698 20-FEB-81  1600   300     30SQL> update t set (ename,job)=(select ename,job from emp where empno=7499) where empno=7369 or empno=7488;2 rows updated.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           207488 ALLEN  SALESMAN   7698 20-FEB-81  1600   300     30这里尤其要注意,set(xx,xx)=(xx,xx)后面如果跟的是值则会报错:
    SQL> update t set (job,sal)=('haha',120) where empno=7369 or empno=7499;
    update t set (job,sal)=('haha',120) where empno=7369 or empno=7499*
    ERROR at line 1:
    ORA-01767: UPDATE ... SET expression must be a subquery
    后面跟的必须是子查询。

  15. DELETE语句:从表中删去现存的行
    SQL> delete  from t where empno=7488;1 row deleted.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           20

  16. 参照另一个表来删除行:

    (注:‘SCOTT’要大写)

    SQL> delete t where empno in(select empno from emp where ename='SCOTT');1 row deleted.SQL> select * from t;EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           20

  17. TRUNCATE语句:
    TRUNCATE语句:1. 删除表中的所有数据,保留表结构,不能使用where子句2. 是DDL语句,不是DML语句,一旦删除,不能回退SQL> truncate table e ;表被截断。SQL> select * from e;未选定行SQL> roll
    回退已完成。
    SQL> select * from e;未选定行 

转载于:https://www.cnblogs.com/yaoweber/p/3925538.html

使用DML语句【weber出品必属精品】相关推荐

  1. 全世界最详细的图形化VMware中linux环境下oracle安装(三)【weber出品必属精品】...

    数据库软件和数据库都建好了,基本上可以说完成90%的工作,但是美中不足的就是企业管理器还没有安装好,现在我们就开始安装企业管理器吧. 安装之前我们先将补丁给补上.补丁我们也是采用禁默安装.补丁:p83 ...

  2. 解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...

    习惯linux中上下键回退历史输入的人们肯定也希望sqlplus中也能实现相同的效果,可是不幸的是,sqlplus中不提供诸多方便的快捷键,这个时候我们就需要另外安装一个插件来实现这个想法. 这个插件 ...

  3. 控制用户的访问之权限、角色【weber出品必属精品】

    权限的作用 限制用户对数据的访问 权限的分类 1. 系统权限:能够存取数据库的权限 2. 对象权限:操作数据库对象的内容 系统权限   1.1 如何创建用户: SQL> create user ...

  4. 【阿朱出品 必属精品】你也说医院,我也说医院

    怎么说俺也是在卫生部官办国企做了4年啊,那就说道说道.由于中国医疗制度牵扯全民利益所以变革非常谨慎微小,中国医生圈子大多属于几个院系派系嫡系自我近支繁衍,体制内有事业单位编制问题,体制外有莆田系金钱交 ...

  5. ChatGPT团队出品,必属精品—Bito插件完全指北

    Bito是一个IntelliJ IDEA插件,由ChatGPT团队开发,用于提高开发效率和生产力. 首先,安装Bito插件非常简单.在IntelliJ IDEA编辑器中打开"Plugins& ...

  6. 剪映,最简单的PC端视频处理工具,大厂出品必属精品~

    相信在座的小伙伴都用过抖音app,看的多了难免也有想要发视频的冲动. 这时我们就会想到诸如Ae.Pr之类的视频制作工具,但他们都有一定的上手难度-- 好在抖音霸霸很早就推出了免费的官方全能剪辑工具,也 ...

  7. Python 编程笔记(本人出品,必属精品)

    文章目录 Part.I 准备工作 Chap.I 下载安装 Chap.II 实现快捷键清屏 Chap.III 概念汇编 & 注意事项 Part.II 基础知识 Chap.I 快应用 Chap.I ...

  8. 吾爱出品,必属精品~

    前言 吾爱破解论坛目前是一个非常老牌的软件解密与技术交流地,从名字可以看出论坛内有着非常丰富的PJ软件资源,但随着最近的几次整改,论坛实质也逐渐与破解无缘.这也是没有办法的事,作为一个日访问量10万+ ...

  9. 关于电信重组(华为中兴观察员出品,必属精品)

    关于电信重组 论坛里很多人对国产设备商的未来在我看来过于乐观,电信重组最简单的结果就是运营商减少,这使得第四名第五名直接kill掉了,重组前这些运营商处于弱势,对技术的前沿性要求不高,从而在外国设备商 ...

最新文章

  1. 使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色
  2. 【计算理论】图灵机 ( 非确定性图灵机 | 非确定性图灵机指令分析 | 计算过程 | 非确定性指令出现多个分支 | 非确定性图灵机转为计算树 | 计算树 )
  3. X-Frame-Options防止自己的网页放被在别人iframe中
  4. mod auth mysql_Apache使用mysql认证用户
  5. java多线程总结(二)
  6. 第4课 防卫导弹(第十章 动态规划--DP)
  7. 扩展图形输出 1111 java
  8. 求带权中位数的Select算法
  9. 怎么钢枪_和平精英有战术钢枪和无脑冲有何区别?你们怎么看待这个问题
  10. windows时间设置
  11. Python实战案例:金庸的功夫流派、人物关系的分析案例(下)
  12. AI出现的历史渊源,透过现象看实质
  13. pppd参数中文解释
  14. 【MySQL-设置定时任务】
  15. Python 绘制高斯曲面图
  16. 架构道术-时间的力量有多大
  17. 二维码教程之如何制作表白二维码
  18. 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题
  19. centos 7.2执行yum -y install报错Metadata file does not match checksum
  20. 微星小飞机没有osd显示怎么办?

热门文章

  1. jquery 使用jquery操作Dom
  2. EL表达式和JSTL
  3. android获取屏幕尺寸、密度
  4. TFS 2010 使用手册(二)项目集合与项目
  5. NHibernate: Session.Save 采用版本控制时无必要地自动Update版本字段的问题
  6. NameError: name 'go' is not defined
  7. 搜狗·疫情数据爬取(Python)
  8. java 空串占用内存吗_java空字符串“”和null区别
  9. nodejs redis 发布订阅_SpringBoot整合Redis,怎么实现发布/订阅?
  10. java编写十个评委_Java题 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分...