Oracle系列:(19)增删改数据

准备
col empno for 9999;
col ename for a10;
col job for a10;
col mgr for 9999;
col hiredate for a12;
col sal for 9999;
col comm for 9999;
col deptno for 99;
col tname for a40;
set pagesize 80;
--创建新表xxx_emp,复制emp表中的结构,同时复制emp表的所有数据
create table xxx_emp
as 
select * from emp;

回顾SQL92/99标准的四大类

(1)DML(数据操纵语言):select,insert,update,delete

(2)DDL(数据定义语言):create table,alter table,drop table,truncate table

(3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott

(4)TCL(事务控制语言):commit,rollback,savepoint to 回滚点

向emp表中插入一条记录(方式一:按表默认结构顺序)insert into 表名 values ...语法

insert into emp values(1111,‘JACK‘,‘IT‘,7788,sysdate,1000,100,40);

向emp表中插入一条记录(方式二:按自定义顺序)insert into 表名(列名) values ...语法

insert into emp(ENAME,EMPNO,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) 
values(‘MARRY‘,2222,‘IT‘,7788,sysdate,1000,100,40);

向emp表中插入NULL值(方式一:采用显示插入NULL值)

insert into emp values(3333,‘SISI‘,‘IT‘,7788,sysdate,1000,NULL,40);

向emp表中插入NULL值 (方式二:采用隐式插入NULL值),前提是所插入的字段允许插入NULL值

insert into emp(ENAME,EMPNO,JOB,MGR,HIREDATE,SAL,DEPTNO) 
values(‘SOSO‘,4444,‘IT‘,7788,sysdate,1000,40);

&占位符应用于insert】使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在values子句中使用,例如:‘&ename‘和&sal

insert into emp values(&empno,‘&ename‘,‘&job‘,&mgr,&hiredate,&sal,&comm,&xxxxxxxx);

注意:&是sqlplus工具提供的占位符,如果是字符串或日期型要加‘‘符,数值型无需加‘‘符

&占位符应用于select的表名】使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在from子句中使用

select * from &table;

&占位符应用于select的列名】使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在select子句中使用

select empno,ename,&colname from emp;

&占位符应用于where】使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在where子句中使用

select * from emp where sal > &money;

&占位符应用于group by和having】使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在group by 和 having子句中使用

select deptno,avg(sal)
from emp
group by &deptno
having avg(sal) > &money;

删除emp表中的所有记录

delete from emp;

将xxx_emp表中所有20号部门的员工,复制到emp表中,批量插入,insert into 表名 select ...语法

insert into emp
select * 
from xxx_emp
where deptno=20;

将‘SMITH‘的工资增加20%

update emp set sal=sal*1.2 where ename = upper(‘smith‘);

将‘SMITH‘的工资设置为20号部门的平均工资,这是一个条件未知的事物,优先考虑子查询

第一:20号部门的平均工资

select avg(sal) from emp where deptno=20;

第二:将‘SMITH‘的工资设置为2207

update emp set sal=2207 where ename = ‘SMITH‘;

子查询:

update emp 
set sal = (
    select avg(sal) 
    from emp 
    where deptno=20
    ) 
where ename = ‘SMITH‘;

删除工资比所有部门平均工资都低的员工,这是一个条件未知的事物,优先考虑子查询

第一:查询所有部门的平均工资

select avg(sal) from emp group by deptno;

第二:删除工资比(*,*,*)都低的员工

delete from emp where sal<all(*,*,*);

子查询:

delete 
from emp 
where sal < all(
    select avg(sal) 
    from emp 
    group by deptno
);

删除无佣金的员工

delete from emp where comm is null;

将emp表丢入回收站,drop table 表名

drop table emp;

从回收站将emp表闪回,flashback table 表名 to before drop

flashback table emp to before drop;

查询回收站,show recyclebin

show recyclebin;

清空回收站,purge recyclebin

purge recyclebin;

使用关键字purge,彻底删除emp表,即不会将emp表丢入回收站,永久删除emp表,drop table 表名 purge

drop table emp purge;

依据xxx_emp表结构,创建emp表的结构,但不会插入数据

create table emp
as
select * from xxx_emp where 1<>1;
create table emp(empno,ename)
as
select empno,ename from xxx_emp where 1=2;

创建emp表,复制xxx_emp表中的结构,同时复制xxx_emp表的所有数据

create table emp
as
select * from xxx_emp where 1=1;

注意:where不写的话,默认为true

将emp截断,再自动创建emp表,truncate table 表名

truncate table emp;

向emp表,批量插入来自xxx_emp表中部门号为20的员工信息,只包括empno,ename,job,sal字段

insert into emp(empno,ename,job,sal)
select empno,ename,job,sal 
from xxx_emp 
where deptno=20;

向emp表(只含有empno和ename字段),批量插入xxx_emp表中部门号为20的员工信息

insert into emp(empno,ename)
select empno,ename from xxx_emp where deptno=20;
drop table 和 truncate table 和 delete from 区别

drop table

1)属于DDL

2)不可回滚

3)不可带where

4)表内容和结构删除

5)删除速度快


truncate table

1)属于DDL

2)不可回滚

3)不可带where

4)表内容删除

5)删除速度快


delete from

1)属于DML

2)可回滚

3)可带where

4)表结构在,表内容要看where执行的情况

5)删除速度慢,需要逐行删除

时间: 2024-10-08 18:44:16

Oracle系列:(19)增删改数据的相关文章

extjs_03_grid(弹出框&amp;行编辑器 增删改数据)

1.弹出框(新增,删除) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP "index

Oracle【增删改&amp;数据的备份】

增删改的SQL语句执行完毕后,不会立马进行数据的写入数据库(这时数据在内存中),需要手动对数据进行提交(commit),如果数据出问题,可以使用回滚.主键:非空唯一的 --在一张表中,某字段值是非空唯一的,将此字段设置为主键. --唯一的标识一条数据[增加数据源]insert into 表名(字段名1,字段名2,字段名2...)values(值1,值2,值3...); --注意1:主键必须有值,允许为空的字段可以给值 --注意2:插入语句表名后跟的字段名为赋值的字段,值和字段必须一一对应. --

对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了

原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: //增删改 public int executeUpdate(String sql,Object[] params){ int update = 0; try { pstm = connection.prepareStatement(sql); for(int i=0;i<params.length

sql server连接oracle并实现增删改查

需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2  sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpReEJcPg4wNESWy61Q 服务器先安装.net 2.0和3.5 安装好以后 解压ODAC112040Xcopy_64bit 最好是放到磁盘跟目录,不要有带中文目录名 打开cmd 进入解压目录 运行命令 install.bat all c:\oracle odac 安装好以后c盘会有一个ora

Oracle基本的增删改查语句--本人使用scott用户中的表

--感觉有用点个赞^v^ 1 --创建表空间 2 create tablespace mykebai 3 datafile 'c:\mykebai.dbf' --数据问价存放位置 4 size 100m --数据文件初始大小 5 autoextend on --当存储文件满时,自动增长 6 next 10m --每次增长10m大小 7 8 --删除表空间 9 drop tablespace mykebai; 10 11 12 --创建用户 13 create user mykebai 14 id

[jQuery EasyUI系列] 创建增删改查应用

一.数据收集并妥善管理数据是网络应用共同的必要.CRUD允许我们生产页面列表并编辑数据库记录. 本文主要演示如何使用jQuery EasyUI实现CRUD DataGrid. 将使用到的插件有: datagrid:向用户展示列表数据 dialog:创建并编辑一条单一的数据 form:用于提交表单数据 messager:显示一些操作信息 二.操作步骤 1.准备数据库并创建实例数据 2.创建DataGrid来显示用户信息 创建没有JavaScript代码的DataGrid 1 <table id=&qu

mysql给用户增删改数据表的权限

本是关于如何给用户指定表权限的过程. 首先要创建一个用户,并且输入密码. mysql> insert into mysql.user(Host,User,Password) values('localhost','test',password('abcd1234')); 其中Host的值也可以是% %和localhost的区别如下:        %代表任何客户机都可以连接        localhost代表只可以本机连接 User的值就是用户的名字 Password的值是密码,passwor

3、pandas的数据结构之Series——增删改数据

一.修改Series  二.Series增加数据 append函数和列表的append函数类似,将另外一个series连接在某series后边. Series删除数据 删除在Series很少用.常用布尔选择或mask来选择数据组成新的Series,而原来的Series没有变 原文地址:https://www.cnblogs.com/yhms/p/12244014.html

Oracle 增删改(INSERT、DELETE、UPDATE)语句

?  简介 本文介绍 Oracle 中的增删改语句,即 INSERT.DELETE.UPDATE 语句的使用.是时候展现真正的技术了,快上车: 1.   插入数据(INSERT) 2.   修改数据(UPDATE) 3.   删除数据(DELETE) 4.   注意事项 1.   插入数据(INSERT) u  语法: INSERT INTO TABLE_NAME [(column1[, column2-]] VALUES(value1[, value2-]); 说明: 1)   INSERT