1. 程式人生 > >資料庫筆記之三 SQL

資料庫筆記之三 SQL

SQL (Structured Query Language )

sql特點

綜合統一 集資料定義語言DDL 資料操縱語言 DML 資料控制語言 DCL 事務控制語言 TCL 和資料查詢語言DQL一體,語言風格統一。

高度非過程化  只需提出做些什麼 而無需關注資料的物理儲存細節 減輕使用者負擔 提高資料的獨立性

面向集合的操作方式 非關係資料模型操作資料面向記錄 而sql 關係型資料模型採用集合的操作方式 不僅操作物件 查詢結果是元組的集合 而且一次的插入刪除 更新也可以是元組的集合

 

sql分類

sql包括 資料定義 資料操縱 資料查詢 資料控制 事務控制

資料定義語言data definition language  DDL用於定義資料庫的資料庫物件(邏輯結構)表 索引 檢視 包括物件的建立 create 物件的結構的更改 alter table 和物件的刪除drop

資料操縱語言 data manipulation language DML 主要用於表資料的更新 比如資料的插入 insert 資料的修改update 資料的刪除delete

資料的查詢語言 data query language 負責資料的獲取 可以從單個或多個表中獲取資訊 select

資料控制語言data control language DQL

主要負責資料的存取許可權控制 具體的操作包括 許可權授予 grant 許可權撤銷 revoke 

事務控制語句 Transaction Control Language 用於控制事務 包括事物的提交 commit 事物的撤銷 rollback 事務提交相當於更新資料事物的撤銷相當於取消更新將資料復原

 

資料定義語言ddl 資料庫物件有檢視 表 索引  分別對應三級模式的外模式 模式 和內模式 sql中沒有提供對檢視和索引的修改操作 也就是說 只能對錶進行修改 如對索引和試圖進行修改需要先刪除後建立

基本的表操作

關係資料庫中的關係就是以表的形式出現的 

1 建立表 

create table emp( eno int  ,ename char(20)  , eage int , dept int );//建立一個員工表 

2修改表 修改表包括對錶的列的 刪除 增加 和列的型別的修改

alter table emp{ add phone char(int)};增加列

alter table emp{alter  column name char(40) };修改列的屬性

alter table emp{ drop column phone };刪除某列

3 刪除表 drop table emp;刪除員工表

索引操作 

建立索引是加快表的查詢的手段 建立索引後 查詢資料可以先根據條件讀取索引的資料 進而獲取表資料行所在的位置 即先找到資料行地址 然後直接獲取資料 這樣就無需對資料逐行進行篩選提高資料的查詢效率

 

建立唯一索引 create unique index indexname on emp (eno);在員工表emp的員工編號列上建立一個唯一索引

create unique index indexname on emp(age DESC); 建立一個唯一索引且資料按從大到小排序

刪除索引 drop unique  index indexname 

檢視操作 

檢視是從一個表或者多個表中匯出的資料 他與基本表不同 只是一個虛假的表 他並不儲存資料 只存定義的內容 只是將基本表的資料經過加工後顯示給看 檢視像是表的一個視窗 看到你需要的表的資訊 而不需要的可以隱而不現。

create view emp as select ename eage from emp where age>30 and gender ='男';

建立一個檢視 顯示員工表中不同性別員工的平均年齡

create view vemp(gender ,avg)as select gender avg(age) from emp group by gender ;

刪除檢視 drop view  vemp

資料操縱語句 資料操縱語句dml是指對資料的增加 刪除 修改 是對行進行操作 而資料定義語句ddl 是對列進行操作

分別有insert update 和delete 構成

巢狀查詢

在查詢語句中 有些值無法直接給出 但這些值可以通過另一個查詢語句獲得

這是可以將這個查詢語句巢狀在徐亞這些值的地方 裡面的叫子查詢 外面的叫父查詢

查詢管理其他員工的員工的編號和員工姓名

select eno,ename from emp where eno in(select agr from emp)

查詢工資大於所有部門平均工資的員工編號 員工姓名 和工資

select eno,ename esal from emp where esal >all(select avg (esal) from emp group by dno);

相關子查詢 

select eno,ename,esal from emp outer where esal>(select avg(esal) from emp inner where inner.dno =outer.dno);

集合查詢 

集合查詢主要包括 union instersect except 參與集合操作的集合要有相同的結構 屬性數量 屬性型別 

查詢選了課程c01但未選c02的學生學號

select sno from emp where cno='co1' except select sno from emp where cno ='c02'

交select sno from emp where cno ='c01' intersect select sno from emp where cno='c02'

並 select sno from emp where cno='c01'union select sno from emp where cno ='c02'

許可權控制語句 許可權控制語句是保障資料安全的一個重要方面 只有具有相關圈許可權的資料庫使用者才可以在資料庫中建立物件 

許可權控制相關的語句只有兩個 grant 和revoke 資料庫中的許可權一般分為兩種 指在資料庫中執行特殊語句的許可權 這些語句包括create table create view create prodefure 

物件許可權 指某個資料庫物件上進行操作的許可權 包括選擇 select insert delete update 

許可權授予 將建立表 建立檢視的許可權授予使用者u1

grant create table ,create  view to u1;

將表emp 上的查詢 插入 刪除 和修改許可權授予 其他使用者

grant select update delete on emp to u1

許可權回收 

撤銷使用者u1建立表建立檢視的許可權

revoke create table ,create view from u1

事物控制語句

事物時資料庫中的一個邏輯操作單元 可包含多個操作 該單元作為一個整體執行  事物相關的控制語句有commit和rollback