目錄:
數(shù)據(jù)庫基本知識(shí)
數(shù)據(jù)庫管理系統(tǒng)
一、數(shù)據(jù)庫基本知識(shí)
數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用系統(tǒng)和數(shù)據(jù)庫管理員構(gòu)成
1.數(shù)據(jù)庫定義
數(shù)據(jù)庫實(shí)際上就是一個(gè)文件集合,是一個(gè)存儲(chǔ)數(shù)據(jù)的倉庫,本質(zhì)就是一個(gè)文件系統(tǒng),數(shù)據(jù)庫是按照特定的格式把數(shù)據(jù)存儲(chǔ)起來,用戶可以對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行增刪改查操作。
2.關(guān)系型數(shù)據(jù)庫
依照關(guān)系模型建立的數(shù)據(jù)庫稱為關(guān)系數(shù)據(jù)庫。 它是在某個(gè)應(yīng)用領(lǐng)域的所有關(guān)系的集合。
補(bǔ)充:非關(guān)系型數(shù)據(jù)庫:
通常用來解決某些特定的需求如:數(shù)據(jù)緩存,高并發(fā)訪問。 存儲(chǔ)數(shù)據(jù)的形式有多種,舉例:Redis數(shù)據(jù)庫:通過鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù);
關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別:
關(guān)系型數(shù)據(jù)庫:安全(保存在磁盤基本不會(huì)丟失),容易理解和掌握,比較浪費(fèi)磁盤空間
非關(guān)系型數(shù)據(jù)庫:不安全(斷電數(shù)據(jù)會(huì)丟失),效率高(運(yùn)行在內(nèi)存上比磁盤效率要高)
3.表
某種特定類型數(shù)據(jù)的結(jié)構(gòu)化清單
4.二維表
在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)表示為一個(gè)二維表,一個(gè)關(guān)系就是二維表。
5.列
表中的一個(gè)字段,所有表都是一個(gè)或多個(gè)列組成
6.行
表中的一個(gè)記錄。
7.主鍵
能夠唯一地標(biāo)識(shí)一個(gè)元組的屬性或?qū)傩越M稱為關(guān)系的鍵或候選鍵。 若一個(gè)關(guān)系有多個(gè)候選鍵則可選其一作為主鍵(Primary key)。
外鍵:如果一個(gè)關(guān)系的一個(gè)或一組屬性引用(參照)了另一個(gè)關(guān)系的主鍵,則稱這個(gè)或這組屬性為外碼或外鍵(Foreign key)
二、數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMS,Database Management System),是一個(gè)軟件,用來管理數(shù)據(jù)庫文件的軟件,用戶可以訪問DBMS對(duì)數(shù)據(jù)進(jìn)行增刪改查操作,常見DBMS有: MySQL、oracle、DB2、sqlite、sqlserver等。
(1)數(shù)據(jù)定義功能:提供數(shù)據(jù)定義語言(DDL)
常見的有:
DROP(刪除數(shù)據(jù)庫)
刪除數(shù)據(jù)庫:drop database if exists 數(shù)據(jù)庫名
CREATE(創(chuàng)建數(shù)據(jù)庫)
創(chuàng)建表:create table if not exists 表名(列名 列名約束)
ALTER(修改數(shù)據(jù)庫)
添加列名:alter table 表名 add 列名 約束條件
修改列名:alter table 表名 change 老列名 新列名 數(shù)據(jù)類型
修改列字段數(shù)據(jù)類型:alter table 表名 modity 列名 數(shù)據(jù)類型
刪除列名:alter table 表名 drop 列名
修改表名:alter table 表名 rename 新表名
GRANT(賦予權(quán)限)
REVOKE(從當(dāng)前用戶或組中取消權(quán)限)、TRUNCATE(只刪除表中的所有數(shù)據(jù),不刪除表的結(jié)構(gòu))
(2)數(shù)據(jù)操縱功能:提供數(shù)據(jù)操縱語言(DML)
操縱數(shù)據(jù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的基本操作:
SELECT(查詢)
select from 表名 where 條件(條件1 and 條件2)
INSERT(插入)
insert into 表名(列1,列2) values(' ',' '),(' ',' '),(' ',' ')
DELETE(刪除)
delete from 表名 where 條件
UPDATE(修改)
update 表名 set 列名=' ',列名=' ' where 條件
(3)數(shù)據(jù)庫的運(yùn)行管理
a、保證數(shù)據(jù)的安全性、完整性
b、多用戶對(duì)數(shù)據(jù)的并發(fā)使用
c、發(fā)生故障后的系統(tǒng)恢復(fù)
(4)數(shù)據(jù)庫的建立和維護(hù)功能(實(shí)用程序)
a、數(shù)據(jù)庫數(shù)據(jù)批量裝載
b、數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)
c、介質(zhì)故障的修復(fù)
d、數(shù)據(jù)庫的重組織
e、性能監(jiān)視
(3)視圖
視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。本身不存儲(chǔ)數(shù)據(jù),而是按照指定的方式進(jìn)行查詢
創(chuàng)建視圖CREATE VIEW 視圖名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
修改視圖:CREATE OR REPLACE VIEW 視圖名 AS SELECT [...] FROM [...]
查看數(shù)據(jù)庫已有視圖:>SHOW TABLES [like...];(可以使用模糊查找)
查看視圖詳情:DESC 視圖名或者SHOW FIELDS FROM 視圖名
視圖條件限制:[WITH CHECK OPTION]
(4)存儲(chǔ)過程
存儲(chǔ)過程的優(yōu)點(diǎn):
a.存儲(chǔ)過程的能力大大增強(qiáng)了SQL語言的功能和靈活性。
b.可保證數(shù)據(jù)的安全性和完整性。
c.通過存儲(chǔ)過程可以使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。
d.通過存儲(chǔ)過程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫的完整性。
e.在運(yùn)行存儲(chǔ)過程前,數(shù)據(jù)庫已對(duì)其進(jìn)行了語法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過程可極大地改善SQL語句的性能。
f.可以降低網(wǎng)絡(luò)的通信量。
g.使體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入數(shù)據(jù)庫服務(wù)器中,以便 集中控制。
存儲(chǔ)過程可以分為系統(tǒng)存儲(chǔ)過程、擴(kuò)展存儲(chǔ)過程和用戶自定義的存儲(chǔ)過程.
create procedure proc_select_officeinfo--(存儲(chǔ)過程名)
as select Id,Name from Office_Info--(sql語句)
exec proc_select_officeinfo--(調(diào)用存儲(chǔ)過程)
有參數(shù)時(shí)
create procedure procedure_proc_GetoffinfoById --(存儲(chǔ)過程名)
@Id int--(參數(shù)名 參數(shù)類型)
as select Name from dbo.Office_Info where Id=@Id--(sql語句)
exec procedure_proc_GetoffinfoById 2--(存儲(chǔ)過程名稱之后,空格加上參數(shù),多個(gè)參數(shù)中間以逗號(hào)分隔)
注:參數(shù)賦值是,第一個(gè)參數(shù)可以不寫參數(shù)名稱,后面?zhèn)魅雲(yún)?shù),需要明確傳入的是哪個(gè)參數(shù)名稱