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,....)