1.简单的SQL

SELECT * FROM DUAL

dual是什么?

???? Oracle下的一个字典表

???? 属于sys用户

???? 用于构造一个标准的SQL

???? 对优化器有一定影响。

SQL语句的种类

DML ---data manipulation language

– SELECT

– INSERT

– UPDATE

– DELETE

DDL---data definition language

– Create…

– Drop…

– Truncate…

– Alter… .

DCL---data control language

– Grant

– revoke

简单的SQL示例—创建测试用户和它的对象

(之前可能要开启权限  conn / as sysdba

   // grant connect to scott;)

???? Create user test identified by test default tablespace users;

???? grant dba to test;

???? connect test/test;

???? create table t(id int,name varchar2(10));

???? Insert into t values(1,’tigerfish’);

???? Update t set name=‘tiger’ where id=1;

???? Delete from t where id=1;

???? Drop table t purge;

(conn / as sysdba)

???? drop user test;

一些常见的SQL语法

???? 条件查询

– select * from dba_objects where object_id=100 and object_name='T';

???? 排序

– select * from dba_obects order by object_id;

???? 分组

– select object_name,count(*) from t group by object_name;

???? 两表关联

– select a.* from dba_objects a,dba_objects b where a.object_id=b.object_id;

揭去SQL的面纱—Oracle是如何工作的?

 

???? Select idname from t order by id ;

– SQL 解析

执行计划

执行SQL

? 从磁盘中读取数据(如果内存中没有)

? 数据处理

? 返回结果

 

???? Insert into t values(1,‘tigerfish’);

– SQL 解析

执行计划

执行SQL

? 从磁盘中读取数据块(如果内存中没有)

? 修改回滚段数据块(同时产生redo log)----Oracle特性

? 修改原始数据块(同时产生redo log

 

???? Create table t values(id int,name varchar2(10);

– SQL 解析

执行计划

执行SQL

? 给对象分配初始化的存储空间(段),产生一些undoredo日志。

? Oracle字典表中创建新的对象相关信息(表,字段,各种属性….),产生一些Undoredo日志。

 

???? Drop table t purgetruncate table t);

– SQL 解析

执行计划

执行SQL

? 收回对象占用的空间,产生一些undoredo日志。

? Oracle字典表中删除的对象的相关信息(表,字段,各种属性….),产生一些Undoredo日志。

请使用浏览器的分享功能分享到微信等