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