扒扒数据库长长知识(下载资源组合看day2)之09 (DML语言)

来源:互联网 发布:mysql 并发 设置 编辑:程序博客网 时间:2024/05/05 03:53


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







OCA认证 OCP(dba)一起考, 参加oracle的培训  2w
Oracle数据库管理员认证专员(OCA):Oracle Certified Associate
Oracle数据库管理员认证专家(OCP): Oracle Certified Professional


Oracle数据库管理员认证大师(OCM): Oracle Certified Master









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 行。


--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  (1=2为假只把表结构复制过去)

====
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  emp10
set deptno = 20
where empno = 7782

=================== ===============
删除数据
---删除指定数据
delete (from) emp10   //from可写可写
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;   //消除结果集,就是delete table ;秒显示结果集(已删除几行)
SQL> drop table testdelete purge;
SQL> @c:\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

0 0
原创粉丝点击