1. 程式人生 > >Oracle DDL+DML+DCL實例

Oracle DDL+DML+DCL實例

ora 定義 格式 和數 滿足 名稱 影響 技術 並不是

SQL語言共分為四大類:

數據查詢語言DQL:

數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE子句組成的查詢塊。

數據操縱語言DML:

DML是“數據操縱語言”( Data Manipulation Language )的簡寫。如果說SELECT語句對數據進行的是讀操作,那麽DML語句對數據進行的是寫操作。DML語句的操作對象是表中的行,這樣的語句一次可以影響一行或多行數據。

數據定義語言DDL:

DDL(Data Definition Language 數據定義語言)用於操作對象和對象的屬性,這種對象包括數據庫本身,以及數據庫對象,像:表、視圖等等,DDL對這些對象和屬性的管理和定義具體表現在Create、Drop和Alter上。特別註意:DDL操作的“對象”的概念,”對象“包括對象及對象的屬性,而且對象最小也比記錄大個層次。以表舉例:Create創建數據表,Alter可以更改該表的字段,Drop可以刪除這個表,從這裏我們可以看到,DDL所站的高度,他不會對具體的數據進行操作。

數據控制語言DCL:

DCL(Data Control Language 數據控制語句)的操作是數據庫對象的權限,這些操作的確定使數據更加的安全,用戶對某類數據具有何種操作權限是有DBA決定,DCL的操作對象(用戶)此時的用戶指的是數據庫用戶。

放一張網上三者之間的關系圖

技術分享

DDL

DDL的主要語句(操作)
Create語句:可以創建數據庫和數據庫的一些對象。
Drop語句:可以刪除數據表、索引、觸發程序、條件約束以及數據表的權限等。
Alter語句:修改數據表定義及屬性。

-創建一個名為p_student的表
create table p_student(
sno varchar2(5) not
null primary key, sname varchar2(50) not null, ssex varchar2(1) not null, sage varchar2(2));

創建之後表狀態見下圖

技術分享

--修改列的類型
alter table p_student modify(sno number(4));
--重命名一個列
alter table p_student rename column sage to age;
--增加一個數據列
alter table p_student add(score number(2));
--刪除一個數據列
alter table p_student drop
column ssex; --重命名表名稱 alter table p_student rename to student;

修改完成表結構後的表的屬性狀態見下圖

技術分享

--刪除已存在的p_student表
drop table student;

DML

DML包括三種操作:插入( INSERT )、刪除(DELETE )、修改( UPDATE )。

INSERT語句的作用是往表中插入一行,它的語法格式為:

INSERT INTO 表(列1 ,列2 …) VALUES (表達式1 ,表達式2 .. ) ;

--不加列選項默認全插入
insert into student values(1,abc,23,99);

--插入指定的列
insert into student (sno,sname,age) values (2,oka,24);

利用INSERT語句還可以從另一個表中復制數據,這時要在INSERT語句中使用子查詢,對應的語法格式為:
INSERT INTO 表1 (列1 ,列2 …)
SELECT 列 1 ,列2 ??? FROM 表2 WHERE 條件表達式;

這裏的SELECT子句實際上是一個子查詢。

執行這樣的語句時,首先執行SELECT 子句,將返回的查詢結果作為指定列的值,插入到表中。
用這種方法可以-次向表中插入多行,但是需要註意的是,表指定的各列要與SELECT子句中的各列在排列順序、數據類型和數量上保持一致。

 --復制表

create table student_copy as select * from student;

--修改表中的數據
update student_copy set sno=3 where sno=1;
update student_copy set sno=4 where sno=2;

--整個記錄的每一列都插入
insert into student select * from student_copy where sno=3;

--插入記錄的指定列
insert into student (sno,sname) select sno,sname from student_copy where sno=4;

操作完畢數據狀態見下圖

技術分享

UPDATE語句

UPDATE語句的作用是對表中已經存在的數據進行修改。

它可以一次修改一行,也可以修改多行。
這條語句的語法格式為:

UPDATE 表名稱 SET 列名稱=表達式1, 列名稱=表達式2 WHERE 條件;

UPDATE語句通過SET子句為指定列指定新值,將列值修改為指定的表達式。

在SET子句中指定所有需要修改的列。
在默認情況下,UPDATE語句不需要WHERE子句,這時UPDATE語句將修改表中的所有行。

如果通過WHERE子句指定了條件,那麽UPDATE語句只修改滿足條件的行。

在UPDATE語句的WHERE子句中,也可以使用子查詢。這時的條件並不是一個確定的條件,而是依賴於對另一個表的查詢。

--不加where條件的話默認修改表中的所有行
update student set score=66;

技術分享

--更新指定列
update student set sname=xiaoming,age=20 where sno=4;

--使用子查詢進行更新
update student set (sname,age) =(select sname,age from student_copy where sno=3) where sno=4;
update student set sname=(select sname from student_copy where sno=3),age=(select age from student_copy where sno=4) where sno=3; 
update student set sname=(select sname from student_copy where sno=3),age=(select age from student_copy where sno=4);

DELETE語句

DELETE 語句用來從表中刪除指定的行,它一次可以刪除一行,也可以刪除多行。
DELETE語句的語法格式為:

DELETE FROM 表名稱 WHERE 條件;

在默認情況下, DELETE語句可以不使用WHERE子句,這時將刪除表中的所有行。

如果希望只刪除表中的一部分數據,需要通過WHERE指定條件。

在DELETE語句的WHERE子句也可以使用子查詢,子查詢與SELECT語句中的子查詢用法相同。

--刪除指定行數據
delete from student where sno=4;
--刪除名稱為abc的行數據
delete from student where sname=abc
--刪除全部數據
delete from student;

--使用子查詢的刪除
delete from student where sname=(select sname from student_copy where sno=3);
delete from student where sname in (select sname from student_copy);

DCL

DCL的主要語句(操作)

Grant語句:允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的權限。
Revoke語句:可以廢除某用戶或某組或所有用戶訪問權限

--DCL數據控制語言
/**
系統權限:是在數據庫中執行某種特定操作的權利,系統權限並不針對某個特定的對象,而是針對整個數據庫範圍。常用的系統權限有:
CREATE SESSION 連接到數據庫上
CREATE SEQUENCE 創建序列,序列是一系列數字,通常用來自動填充主鍵列
CREATE SYNONYM   創建同名對象
CREATE TABLE  創建表
CREATE ANY TABLE 在任何模式中創建表
DROP TABLE 刪除表
DROP ANY TABLE    刪除任何模式中的表
CREATE PROCEDURE 創建存儲過程
EXECUTE ANY PROCEDURE 執行任何模式中的存儲過程
CREATE USER 創建用戶
DROP USER   刪除用戶
CREATE VIEW 創建視

對象權限
是針對特定的模式對象執行操作的權利,只能針對模式對象來設置和管理對象全新啊,這些對象包括 表、 視圖、 存儲過程 等常用的對象權限有:

SELECT 允許執行查詢操作
INSERT 允許執行插入操作
UPDATE 允許執行修改操作
DELETE 允許執行刪除操作
EXECUTE 語序執行存儲過程
**/
--創建用戶
create user xiaoming identified by 123;
--給用戶分配權限
grant create session,create user,create table to xiaoming;
--收回用戶某一權限
revoke create table from xiaoming;
--查看當前用戶下所對應的系統權限和對象權限
select * from user_sys_privs;
select * from user_tab_privs;

Oracle DDL+DML+DCL實例