1.数据准备:

--创建表格的
create table dept as select * from scott.dept;
create table emp as select * from scott.emp;
select * from dept;--部门表
select * from emp;--员工表

2.新增语句

【语法1】
INSERT INTO table_name (column1,column2,...)  VALUES ( value1,value2, ...);
【示例1】
insert into emp (empno,ename) values(1111,'luke');

【语法2】
INSERT INTO <table_name> <SELECT 语句>;
【示例2】

--创建table_test 
create table test_table as select * from emp where 1=2;

--插入工资大于2000的员工数据
insert into test_table select * from emp where sal>2000;

3.更新语句

【语法1】
UPDATE table_name SET column1=new value,column2=new value,... WHERE <条件>;
【示例1】
update emp set sal=3000 where ename='KING';
更新前:
更新后:

 4.删除语句

--根据条件删除表数据,有个习惯就是delete执行时要注意是否需要加where判断语句。
--【示例1】删除员工号等于1111的员工

delete from emp e where 1=1 and e.empno = '1111';

--清空表数据(表还在),不写日志,省资源,效率高,属于数据定义语言
--先创建要清空数据的表
create table myemp as select * from emp;
--清空表数据,不删除表结构
truncate table myemp;
 
5.查询语句(重点,因为工作中这个用的最多)

5.1 dual 伪表,是一个虚拟表,只是一个为了构成select语法

--查询序列下一位值
select [序列名].nextval from dual;
--查询当前的用户
select user from dual;
--查询当前系统时间
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

5.2 rowid 伪列,是一个数据库里面的唯一的物理地址,是插入一条记录时创建的地址。同一条记录,在不同的查询里的地址是相同的。

select e.*,e.rowid from emp e where 1=1 and e.ename = 'KING';

5.3 rownum ,是一个逻辑次序号,查询的时候生产,每次查询都会不同,并不是真实存在的编号。从1开始

select rownum,e.* from emp e where 1=1 and e.sal > 2000.00 and rownum <3;

使用rownum实现查询分页:

5.4 等值查询

select * from emp e,dept d where 1=1 and 

e.deptno = d.deptno;

5.5 左外/右外连接查询

select e.empno,e.deptno,d.deptno,d.dname from emp e left join dept d
on e.deptno = d.deptno
where 1=1 and e.sal > 2000;

5.6 分组查询

【示例1】

--查每个部门的平均工资
select d.deptno,d.dname,avg(e.sal) from emp e,dept d
where 1=1 and e.deptno = d.deptno
group by d.deptno,d.dname;

【示例2】

----查询平均工资大于2000的部门,并按照平均工资降序排序
select d.deptno,d.dname,avg(e.sal) from emp e,dept d
where 1=1 and e.deptno = d.deptno
having avg(e.sal) > 2000
group by d.deptno,d.dname;

【示例3】

--查询除了20部门以外,平均工资大于2000的部门
select d.deptno,d.dname,avg(e.sal) from emp e,dept d
where 1=1 and e.deptno = d.deptno
and e.deptno <> 20
having avg(e.sal) > 2000
group by d.deptno,d.dname;

5.7 模糊查询 like

【示例】

--查询部门名称第三个字符为‘C’的部门信息

select * from dept d
where 1=1 and d.dname like '__C%';

5.8 子查询

【示例】

--where后面的子查询;查询工资比10号部门员工中任意一个员工的工资低的员工信息
select * from emp e
where 1=1 and e.sal <(
select min(sal) from emp where 1=1 and deptno = 10
)

以上只是一些总结,后续如果有新的内容,会继续补充进来。如果有发现sql有更优的查询,也欢迎和我交流。后续,我查找一下查用的查询联系题目作为巩固练习(附上答案)

Oracle基础篇--03DML语言的更多相关文章

  1. Oracle基础篇--00引言

    今天开始,复习oracle基础.主要是以前培训的时候的文档作为结构来梳理知识点,主要目的是把Oracle基础打的扎实点.后面要转做后台开发,或者工作中需要用到数据库知识时也不至于临时抱佛脚. 一直以来 ...

  2. Oracle基础篇--01数据库控制语言DCL

    数据库控制语言,是用户对数据的权限控制语言. 通过GRANT语句进行赋权,通过REVOKE撤回权限.数据库的权限包括2种,一种是数据库系统权限,一种是数据库对象权限.在控制语言里面,存在2个概念, 1 ...

  3. SQL必学必会笔记 —— 基础篇

    基础篇 SQL语言按照功能划分 DDL(DataDefinitionLanguage),也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库.数据表和列.通过使用DDL,可以创建,删除和修改数 ...

  4. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

  5. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

    PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是 ...

  6. [原]Java修炼 之 基础篇(二)Java语言构成

    上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成.        所谓的Java构成,主要是指Java运行环境的组成, ...

  7. Oracle面试题(基础篇)

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  8. C语言读取写入CSV文件 [一]基础篇

    本系列文章目录 [一] 基础篇 [二] 进阶篇--写入CSV [三] 进阶篇--读取CSV 什么是CSV? CSV 是一种以纯文本形式存储的表格数据,具体介绍如下(来自维基百科): 逗号分隔值(Com ...

  9. 大数据系列博客之 --- 深入简出 Shell 脚本语言(基础篇)

    首先声明,此系列shell系列博客分为四篇发布,分别是: 基础篇:https://www.cnblogs.com/lsy131479/p/9914747.html 提升篇:https://www.cn ...

随机推荐

  1. loj10100 网络

    这个题目描述好难理解呀qwq... 传送门 分析 在读懂题之后我们不难发现这道题实际就是在求一张图中有多少个割点.只需要注意读入方式即可. 代码 #include<iostream> #i ...

  2. SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

  3. kaggle Titanic

    # coding: utf-8 # In[19]: # 0.78468 # In[20]: import numpy as np import pandas as pd import warnings ...

  4. Spring第五篇

    在Spring第四篇中 我们主要介绍了set get的注入方式 在Spring第五篇中 我们主要介绍使用注解配置Spring 主要分为两个步骤 1 导包的同时引入新得约束 导包如下 1.1 重写注解代 ...

  5. win10开机时不显示锁屏壁纸

    win10开机壁纸存放在此目录下: C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManage ...

  6. 【Android开源】CircleImageView自定义圆形控件的使用

    github地址:https://github.com/hdodenhof/CircleImageView package de.hdodenhof.circleimageview; import e ...

  7. 解决批处理命令执行完毕后自动关闭cmd窗口方法

    问题描述: 日常开发工作中,为了节省多余操作导致浪费时间,我们经常会自己建一些批处理脚本文件(xx.bat),文件中包含我们需要执行的命令,有时候我们希望执行完毕后看一下执行的结果,但是窗口执行完毕后 ...

  8. 修改Oracle游标数及排查游标问题相关SQL

    查看当前游标数show parameter open_cursors; 修改游标最大数 ; commit; 查看游标消费情况 select o.sid, osuser, machine, count( ...

  9. gRPC官方文档(概览)

    文章来自gRPC 官方文档中文版 概览 开始 欢迎进入 gRPC 的开发文档,gRPC 一开始由 google 开发,是一款语言中立.平台中立.开源的远程过程调用(RPC)系统. 本文档通过快速概述和 ...

  10. Copy拷贝

    前言 copy:需要先实现 NSCopying 协议,创建的是不可变副本. mutableCopy:需要实现 NSMutableCopying 协议,创建的是可变副本. 浅拷贝:指针拷贝,源对象和副本 ...