SQL資料庫基礎知識複習
1. 三大資料庫:
a) 甲骨文 oracle
b) IBM DB2
c) Microsoft SQL
2. 微軟的SQL Server資料庫,是一種關係資料庫,屬於C/S架構。資料管理需要登入連線到服務進行。
3. SQL資料庫的圖形管理介面工具是SQL Server Management Studio
4. 伺服器管理
a) 在電腦右鍵管理—服務或者在資料服務配置中啟動、暫停、停止服務
b) 連線登入到伺服器,正確填寫伺服器型別(一般為“資料庫引擎”),伺服器的名稱、使用者名稱、密碼
c) 身份驗證模式:
i. Windows身份驗證:
ii. 混合驗證模式,即可用Windows身份驗證,也可用SQLServer驗證。SQL驗證時,需要輸入使用者名稱和密碼:——預設為sa賬號(資料庫中的超級管理員),密碼為123或空密碼;這裡主要看安裝此例項時的設定
d) 連線/斷開伺服器操作
5. 資料庫管理:資料庫DB(Data Base)是表的集合,存放資料。
a) 物理上,資料庫的結構,由檔案和檔案組構成:
i. 主要資料檔案(Primary)——.mdf檔案,有且僅有一個,在SQL2012中最小5MB
ii. 次要資料檔案(Secondary)——.ndf,有0個或多個
iii. 事務日誌檔案(Log)——.ldf,最小512KB,至少有一個
b) 可將資料檔案分成不同的檔案組
i. 主要檔案組(primary)
ii. 預設檔案組(default)
c) 邏輯上,資料庫是由表格等物件組成
d) 系統資料庫
i. Master主資料庫是SQL Server系統最重要的資料庫,必須保留
ii. Model模板資料庫,必須保留
iii. Msdb是代理服務資料庫
iv. Tempdb是一個臨時資料庫
e) 建立資料庫
create database 資料庫名
on
[ PRIMARY ](主資料檔案屬性 ),
[(輔助資料檔案屬性)]
log on
(日誌檔案屬性)
每一個檔案的屬性
NAME = 邏輯檔名 ,
FILENAME = ‘物理檔名’,
SIZE = 起始大小,
MAXSIZE = 最大大小,
FILEGROWTH = 增長速度
f) 修改資料庫
alter database 資料庫名
add file (檔案屬性)--新增檔案
modify file(檔案屬性)--修改檔案
remove file 邏輯名 --移除檔案
g) 刪除資料庫: drop database 資料庫名
h) 分離、附加資料庫
6. SQL(Structured Query Language)即結構化查詢語言,關係資料庫標準語言。分為資料定義功能(DDL語言)、資料操縱功能(DML語言),也可把 select分離為DQL語言、資料控制功能(DCL語言)
7. SQL中的唯一識別符號:包括字母,符號(_、@或#)及數字,不允許有空格,要用不合法識別符號,加[ ]限制。變數名宣告加@,兩個@是全域性變數,臨時變數加#
8. SQL中的資料型別:
a) 整數int,微整型tinyint(0-255)
b) 小數decimal(總長度,小數位數),real,float
c) 貨幣money
d) 位型別bit(1,0)
e) 時間型別:datetime
f) 日期型別:date
g) 字元型別
i. 定長字元char(長度)、nchar(長度)
ii. 變長長符varchar(長度)、nvarchar(長度)
iii. 大於8000位元組用text文字型別
9. SQL中的常用關鍵字
10. SQL中運算子和註釋
a) 註釋:- -;/* */
b) 運算子:算術、邏輯、比較、位、連線運算子
c) 萬用字元:%、_、[]、[^]
11. 資料表管理
a) 表結構:組成表的各列名稱及資料型別,行為記錄、列為欄位。表應有標識列、主鍵 ;一個表只儲存一種型別實體的資料;表中不應該有重複的列或記錄
b) 新建表
create table 表名
(
列名1 資料型別[長度] [完整性約束] ,
列名2 資料型別[長度] [完整性約束] ,
……
)
c) 修改表
alter table 表名
add 列名 資料型別[長度] [完整性約束] –新增列
drop column 列名—移除列
alter column 列名 資料型別[長度]—修改列
d) 刪除表:DROP TABLE 表名
12. 重新命名:
a) exec sp_rename ‘原物件名’,’新物件名’[,’物件型別’]
b) 物件型別可以是以下5種:
Column——列名
Database——資料庫名
Index——索引名
Object——約束、表、檢視、觸發器名
Userdatatype——使用者自定義的資料名稱
13. 資料記錄管理
a)增加insert
向表中指定的列插入值
insert into 表名(欄位1 ,..欄位n ) values(值1,..值n )
向表中除了標識列外,每列依次插入值
insert into 表名 values(值1,值2,...值n )
b) 刪除delete
delete [from] 表名 where 條件
--刪除全表所有資料
delete [from] 表名速度慢,保留日誌,可恢復
truncate table 表名 速度快,不留日誌,不可恢復
c) 修改update
update 表名 set 欄位1=修改後的值,欄位2=修改後的值,…where 條件
14. 資料完整性—約束
完整性型別 |
約束型別 |
描述 |
域完整性 |
default |
Insert時,為列指定預設值 |
check |
指定在列中可接受的值範圍 |
|
Not null |
列中不接受空值 |
|
實體完整性 |
primary key |
表中最重要的列,不能為空,不能重複 |
unique |
唯一 |
|
參照完整性 |
foreign key |
匹配另一表中的主鍵 |
a) 新建列時新增約束
欄位名 資料型別[長度] primary key
欄位名 資料型別 unique
欄位名 資料型別 default 預設值
欄位名 資料型別 check(條件)
欄位名 資料型別 foreign key(欄位名) references 表名(欄位名)
b) 已有列的基礎上新增約束
alter table 表名
add constraint 約束名 primary key(欄位名) –-主鍵
addconstraint 約束名 unique (欄位名) --唯一
add constraint 約束名 default(預設值) for 欄位名 –預設
add constraint 約束名 check(條件) –檢查
add constraint 約束名 foreign key(欄位名) references 主鍵表(參照欄位名) --外來鍵
c)刪除約束 alter table 表名 drop 約束名
d} 級聯刪除 on delete cascade
級聯更新 on update cascade
15. 資料查詢
a) 基本查詢語法
SELECT <查詢目標列組>
FROM <參與查詢的表>
[WHERE <查詢條件> ]
GROUP BY <分組表示式>][HAVING<分組查詢條件>]
[ORDER BY <排序表示式> [ASC∣DESC ]]
Select 後接查詢的目標列,可用as起別名;消除重複distinct;顯示前幾條top n;聚合函式
from 後接參與的表名
where 後接查詢條件各種比較運算子:=,!=,<>,>,>=,<,<=,!>,!<,and,or,(not)in,is (not ) null
b) 聚合查詢:COUNT( ),MIN(列名 ),MAX(列名 ),SUM(列名),AVG(列名)
c) 模糊查詢:like子句與萬用字元配合使用,%、_、[]、[^]
d) 分組查詢:group by子句對查詢的結果集進行分組,如果分組後還要求按一定的條件對這些組進行篩選,則可以使用HAVING短語指定篩選條件
使用group by時,必須注意:
SELECT子句的欄位列表中,除了聚合函式以外,其他所出現的欄位一定要在group by子句中有定義才行。
group by子句中不能使用欄位別名.
Sql server中text,ntext,image型別的資料不能作group by子句的分組依據
group by可與order by連用,order by 子句中可包含聚合函式
e) 排序查詢:order by排序:asc升;desc降
f) 巢狀查詢:將一個查詢塊巢狀在另一個查詢塊的where子句或having短語的條件中的查詢稱為巢狀查詢。其中外層查詢叫父查詢或主查詢,內層的查詢叫子查詢或從查詢。子查詢的SELECT總是用圓括號括起來
i. Where 查詢表示式 比較運算子 [any|all|some](子查詢)
ii. where 查詢表示式 [not] in (子查詢)
iii. Where [not]exists(子查詢)
g) 連結查詢
內連線:基本內連線、多表連線、自連線。內連線方式:
在select語句的where子句中使用比較運算子給出連線條件對錶進行連線.
用 表名1 inner join 表名2 on 連線條件 語句進行連線,
join指定需要連線的資料表,on指定連線條件(inner可省略)
外連結:左外連線、右外連線、全外連線、交叉連線
16. 檢視:檢視是從一個或多個表匯出的虛表,通過查詢基本表產生的,檢視建立好後可像使用基本表一樣使用檢視
a) 新建語法:
create view 檢視名
as
select語句
b) 修改、刪除檢視:alter view 檢視名 ;drop view 檢視名
17. 儲存過程:定義子程式存放在資料庫中,這樣的子程式稱為儲存過程
a) 建立儲存過程
CREATE PROCEDURE 儲存過程名
(
引數列表
@名稱 型別
)
AS
SQL語句
b) 修改儲過程
ALTER PROCEDURE 儲存過程名
AS
SQL語句
c) 刪除儲存過程
DROP PROCEDURE 儲存過程名
d) 執行儲存過程
EXEC 儲存過程名 引數值列表
18. 觸發器:觸發器是一種特殊的儲存過程,它被分配給某個特定的表。當對這個表進行插入、更新或刪除操作時,自動呼叫觸發器執行觸發器裡規定的操作
a) 種類
i. 插入型觸發器
ii. 刪除型觸發器
iii. 更新型觸發器
b) SQL Server建立了兩個專用表:inserted表和deleted表,在使用觸發器時可呼叫
c) 建立觸發器
create trigger 觸發器名
on 表名
for delete /insert /update
as
觸發器要執行的操作
d) 修改觸發器
alter trigger 觸發器名
on 表名
for delete /insert /update
as
觸發器要執行的操作
e) 刪除觸發器
drop trigger 觸發器名
a) 啟用、禁用觸發器
禁用語法:
Alter table 表名
disable trigger 觸發器名
啟用語法:
Alter table 表名
enable trigger 觸發器名