oracle数据库之初步(4)DML
来源:互联网 发布:网络维护外包费用 编辑:程序博客网 时间:2024/05/21 12:08
**
DML语言
**
sql语言的类型
数据语言实现数据的crud
DML语句 (Data Manipulation Language) 数据库操作语言
主要包含: insert update delete select
DDL语言 data definition Lanaguage
create table
create view index sequence synonym同义词
truncate table
DCL语言 data control language数据语言
commit rollback savetpointe
insert 语言
–1插入一个完整记录
insert into emp values (1, ‘aaa’, ‘clerk’, 7092, ‘17-12月-80’, 8000, NULL, 20);
–2插入部分记录
insert into emp(empno, ename, deptno ) values (2, ‘bb’, 20);
–3插入空值 (显示和隐式)
–4插入日期
insert into emp values (3, 'ccc', 'clerk', 7092, sysdate, 8000, NULL, 20);
–5创建脚本 取地址符 &
SQL> insert into emp(empno, ename, deptno ) values (&empno, &ename, 20); 输入 empno 的值: 4 输入 ename 的值: 'cccc4' 原值 1: insert into emp(empno, ename, deptno ) values (&empno, &ename, 20) 新值 1: insert into emp(empno, ename, deptno ) values (4, 'cccc4', 20) 已创建 1 行。如下所示:取地址符也可以用于select语句中
–6 SQL> select ename, job, &tt from emp;
输入 tt 的值: deptno
原值 1: select ename, job, &tt from emp
新值 1: select ename, job, deptno from emp
–7 批量插入数据
---把10号部门的员工 copy到另外一个表中 create table emp10 as select * from emp where 1=2将emp表中的所有内容完全复制到emp10表中 ==== insert into emp10 select * from emp where deptno = 10 SQL> select * from emp10; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7839 KING PRESIDENT 17-11月-81 5000 10 7934 MILLER CLERK 7782 23-1月 -82 1300 10
=================== =============== =============== =============== ===============
update
语法:(其中方括号是可选的意思)
UPDATE table
SET column = value [, column = value, …]
[WHERE condition];
update table emp10 set deptno = 20 where empno = 7782
=================== ===============
删除数据
—删除指定数据
delete emp10
where empno=7782
–删除整个表中的数据
delete emp10 (但是表结构在…)
drop emp10; 删除表
有关删除数据
DELETE [FROM] table
[WHERE condition];
delete(删除表的数据)和truncate表(把表drop 然后再重新建表 )区别 1 delete逐条删除 truncate先摧毁表再重建 2 delete语言是DML语言 truncate是DDL DML语言可以闪回 做错的并且提交了.可通过闪回,撤销操作 DDL语言不可以闪回 flashback 3 delete是逐条删除,会产生碎片, truncate不会产生碎片 行移动功能: 要开启闪回功能,必须要开启行移动功能 4 delete不会释放空间 truncate会 5 delete可以回滚 truncate不可以 6 oracle delete快 mysql truncate快
实验: 从文件中导入数据, 通过命名delete 和 truncate删除表数据 实验
从文件中导入数据 SQL> set timing off; SQL> set feedback off; SQL> drop table testdelete purge; SQL> @c:\Sql.sql;//这是载入一个已经写好的sql脚本的意思。 SQL> SQL> set timing on; //最后删除数据表的时候,把时间打开,记录时间 SQL> delete from testdelete; 已用时间: 00: 00: 00.09 从文件中导入数据 SQL> set timing off; @c:\Sql.sql; set timing off; select count(*) from testdelete; set timing on; //最后删除数据表的时候,把时间打开,记录时间 truncate table testdelete; 已用时间: 00: 00: 00.51
事务
1 基本概念
概念 一个或者多个DML语言组成
特点 要么都成功,要么都失败
特性 原子性 一致性 隔离性 持久性
事物的隔离性 多个客户端同时操作数据库的时, 要隔离他们的操作
否则:脏读 不可重复读 幻读
设置不同的搁置级别来解决
-----oracle默认情况下,事务是打开...
create table t1(tid int, tname varchar2(20));
insert into t1(tid, tname) valudes(1, ‘aaaaa’);
commit;
rollback;
2 oracle中的事务 生命周期
1 事务起始标志 DML语言 (oracle默认事务打开的)
2 事务的结束标志
提交: 显示提交commit
隐式提交
1) 执行DDL语言
eg create table语言 还有I个隐式的功能
提交之前的没有提交的DML语言(insert update)
2) 正常退出
回滚: 显示 rollback
隐式 掉电/宕机/非正常退出==系统出错了
-=–保存点
insert into t3(tid, tname) values(1, 'aaaaa'); insert into t3(tid, tname) values(2, 'bbbbb'); savepoint a; insert into t3(tid, tname) values(3, 'cccc'); rollback to savepoint a
===数据库的隔离级别
read-only
DDL
管理数据库的对象 表 视图 索引 序列 同义词 约束(..... )oracle基于用户的管理方案 借助于管理工具可以方便 看到数据库各个对象....=======
1 创建一个表
2个条件(1 有权限 2 有表空间)
oracle给你提供了默认的resource,
create table t4(tid number, tname varchar2(20), tname2 char(6));
insert into t4 () values(1, ‘12’)
oracle的数据类型:
a) VARCHAR2(size) 可变和定长区别:varchar可变长,就是说在规定了最大存储后,还有实际存储的数据所占的存储空间,而char不可变长,也就是说当规定了字符的最大长度之后,无论存储的数据占据几个字符存储时都会占据已经给定的定长字符空间。
b) varchar2() 不能超过4096KB
c) oracle的数据类型 支持可见字符和不可字符的存储, 存图片使用的是不可见字符(二进制字符),可见字符是base64
—创建并且copy表
create + as
create table t5as select *from emp;
—-查看别的用户下的表
select * from scott.emp;
– rowid 行地址 索引时候用
SQL> select rowid, empno, ename from emp; ROWID EMPNO ENAME ------------------ ---------- ---------- AAAMfPAAEAAAAAgAAA 7369 SMITH AAAMfPAAEAAAAAgAAB 7499 ALLEN AAAMfPAAEAAAAAgAAC 7521 WARD AAAMfPAAEAAAAAgAAD 7566 JONES AAAMfPAAEAAAAAgAAE 7654 MARTIN AAAMfPAAEAAAAAgAAF 7698 BLAKE AAAMfPAAEAAAAAgAAG 7782 CLARK AAAMfPAAEAAAAAgAAH 7788 SCOTT AAAMfPAAEAAAAAgAAI 7839 KING AAAMfPAAEAAAAAgAAJ 7844 TURNER AAAMfPAAEAAAAAgAAK 7876 ADAMS AAAMfPAAEAAAAAgAAL 7900 JAMES AAAMfPAAEAAAAAgAAM 7902 FORD AAAMfPAAEAAAAAgAAN 7934 MILLER 已选择14行。
表的增删改查
alter table t1 add myname varchar2(20);
alter table t1 modify myname varchar2(40);
alter table t1 drop column myname
--删除表
drop table test1;
–oracle的回收站
– 查看回收站 show recyclebin
– 清空回收站 purge recyclebin;
– 彻底删除一张表
drop table test1 purge; –直接删除一张表,不通过回收站
– 还原表(从回收站中返复原表)
闪回的内容
–关于回收站注意问题
–并不是所有的人都有回收站 管理员没有回收站
显示回收站的信息
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
—————- —————————— ———— ——————-
EMP20 BIN
SQL> select * from emp20; 不可以访问表
SQL> select * from BIN
SQL> select * from “BIN
结论:通过回收站的名字,查看原来表的内容,需要双引号
SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE EMP10 TABLE BIN$fzmdJXyITtOZOnFngV2ONQ==$0 TABLE =====>回收站 T2 TABLE TESTDELETE TABLE T1 TABLE T3 TABLE T5 TABLE EMPINCOMEVIEW VIEW HREMP SYNONYM 已选择13行。
练习题
第二天练习
1. 查询和Zlotkey相同部门的员工姓名和雇用日期
select last_name, hire_date
from employees
where department_id = (
select department_id
from employees
where last_name = ‘Zlotkey’
)
- 查询工资比公司平均工资高的员工的员工号,姓名和工资。
select employee_id, last_name, salary
from employees
where salary > (
select avg(salary)
from employees
)
- 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
select employee_id, last_name, salary
from employees e
where salary > (
select avg(salary)
from employees
where department_id = e.department_id
)
查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
select employee_id, last_name
from employees
where department_id in (
select department_id
from employees
where last_name like ‘%u%’
)查询在部门的location_id为1700的部门工作的员工的员工号,
select employee_id
from employees
where department_id in (
select department_id
from departments
where location_id = 1700
)- 查询管理者是King的员工姓名和工资
select last_name, salary
from employees
where manager_id in (
select employee_id
from employees
where last_name = ‘King’
)
- oracle数据库之初步(4)DML
- oracle之数据库事务的边界(DML,DDL,DCL)
- oracle数据库学习之初步(1)
- oracle数据库学习之初步(2)
- oracle数据库之初步(3)
- oracle数据库初步之用户
- oracle数据库初步之约束
- oracle数据库初步之查询
- oracle数据库初步之函数
- oracle数据库基础知识---DML
- Oracle基本语法之DML(二)
- oracle之DML语句
- Oracle之DML
- oracle之DML
- MySQL之数据库操纵语言(DML)
- Oracle数据库学习——数据操纵语言(DML)之连接查询
- Oracle数据库语法之【DML】常用汇总-【更新】
- oracle数据库初步之操作表
- 单源无权最短路径 C实现~
- php下zmq扩展安装-2
- 【C++】【LeetCode】98. Validate Binary Search Tree
- 项目进度汇报5
- Java中"equals()"与"=="区别
- oracle数据库之初步(4)DML
- 主流JS框架技术站点收集
- git学习笔记整理-5-撤销提交
- String StringBuilder StringBuffer
- Simple Monitor Dubbo监控中心部署与使用
- 游戏服务器的登陆框架
- 实现quartz定时器及用quartz做集群的定时任务
- AJAX POST&跨域 解决方案
- python数据分析实践(四)