天天看點

sql語言類别

SQL語言分類:

資料定義語言(DDL Data Definition):create建立、alter更改、truncate截斷、drop删除

資料操縱語言(DML Data Manipulation Language):insert插入、select選擇、delete删除、update更新

事務控制語言(TCL Transaction Control Language):commit送出、savepoint儲存點、rollback復原

資料控制語言(DCL Data Control Language):grant授予、revoke回收

資料定義語言DDL:

1.create table指令:

create table [schema.]table_name

(

column_name datatype,

column_name datetype,

....

)

schema表示對象的所有者,即模式的名稱。如果使用者在自己的模式中建立表,則可以不指定所有者名稱。

table表示表的名稱。

column表示列的名稱。

datatype表示該列的資料類型及其寬度。

表名命名規則:

1)表名首字元應該為字母。

2)不能使用Oracle保留字來為表命名。

3)表各的最大長度為30個字元。

4)同一使用者模式下的不同表不能具有相同的名稱。

5)可以使用下劃線、數字、字母,但不能使用空格和單引号。

Oracel和SQL Server資料庫對象表之間的差異:

列數:Oracle,254; SQL Server,1024

行大小:Oracle沒有限制;SQL Server,8060位元組,加16位元組指向每個text或image列。

最大行數:Oracle沒有限制;SQL Server沒有限制

表命名規則:Oracle,[schema.]table_name; SQL Server,[[[server.]database.]owner.]table_name

2.truncate table指令:

可以隻删除表中的記錄而不删除表結構,删除表中的所有行而不記錄日志。

truncate table <table_name>;

資料操縱語言DML:(insert,select,update,delete)

1.選擇無重複的行,在select指令中包含distinct子句。

select distinct stuName,stuAge from stuInfo;

2.使用列别名,列别名不會影響列的實際名稱。列别名位于清單達式後面。

select stuName as “姓 名”,stuAge as 年齡,stuNo 編号 from stuInfo;

如果列别名中指定有特殊字元(如空格)的列标題使用雙引号括起來。

3.利用現有表建立新表。

文法: create table <newTable_name>

as

select {* | column(s)} from <oldTable_name> [where <condition>];

複制表結構和記錄:

create table newStuInfo

select * from stuInfo;

複制表指定列和記錄:

select stuName,stuAge,stuNo from stuInfo;

隻複制表結構:

select * from stuInfo where 1=2;

4.檢視表中行數:

select count(1) from stuInfo; --1比*号效率較高

5.取出stuName,stuAge列不存在重複的資料記錄:

select stuName,stuAge from stuInfo

group by stuName,stuAge

having(count(stuName||stuAge));//“||”在這裡是連接配接操作符,類似于“+”,意思為将兩部分内容連接配接在

一起,因為count()裡面隻能有一個列,是以連接配接起來。

6.删除stuName、stuAge列重複的行(相同資料隻保留一行)

delete from stuInfo where rowid not in(

select max(rowid) from stuInfo group by stuName,stuAge

having (count(stuName||stuAGe)>1)

union

having (count(stuName||stuAge)=1)

);

7.根據目前使用者所有資料量>100萬的表的資訊

select tabke_name from user_all_tables a where a.num_rows>1000000;

--user_all_tables為系統提供的資料視圖,使用者可以通過查詢該視圖獲得目前使用者表中描述。

事務控制語言TCL:

1)commit:送出事務,提事務中對資料庫的修改進行永久儲存。

2)rollback:復原事務,即取消對資料庫所做的作何修改。

3)savepoint <savepoint_name>:在事務中建立存儲點。

4)rollback to savepoint <savepoint_name>:将事務復原到存儲點。即savepoint 建立的存儲點

開啟事務:在Oracle中,上一次事務結束以後,資料第一次被修改時自動開啟。

結束事務: ①資料被送出:發出commit指令;執行DDL或DCL語句後,目前事務自動commit;與Oracle分離。

②資料被撤銷:發出rollback指令;伺服器程序異常結束;DBA停止會話。

例: insert into dept values (10,’ACCOUNTING’,’NEW YORK’);

commit;

savepoint a;//a隻是一個名稱

insert into dept values (20,’SALES’,’NEW YORK’);

rollback to savepoint a;

rollback;--結果隻有第一條記錄插入成功

資料控制語言DCL:

資料控制語言為使用者提供權限控制指令。資料庫對象(如表)的所有者對這些對象擁有控制權限。所有者可以根據自己

的意願決定其他使用者如何通路對象,授予其他使用者權限(insert,select,update,delete,....)

上一篇: 20命名管道

繼續閱讀