簡介:
資料庫就是存放資料的倉庫,隻是這個倉庫是存儲在計算機儲存設備上的,而且是按一定的格式存儲的。
資料庫管理系統:
DBMS: 資料庫管理系統Database Management System是一種操縱和管理資料庫的大型軟體,是用于建立、使用和維護資料庫,簡稱DBMS。它對資料庫進行統一的管理和控制,以保證資料庫的安全性和完整性。能過戶通過DBMS通路資料庫中的資料,資料庫管理者餓通過DBMS進行資料庫的維護工作。它提供多種功能,可使多個應用程式和使用者不同的方法在同時或不同時刻去建立,修改和詢問資料庫。
按功能劃分,資料庫管理系統大緻可分為6個部分:
模式翻譯:提供資料定義語言(DDL)。用它書寫的資料庫模式被翻譯為内部表示。資料庫的邏輯結構、完整限制和實體儲存結構儲存在内部的資料字典中。資料庫的各種資料操作(如查找、修改、插入和删除等)和資料庫的維護管理都是以資料庫模式為依據的。
應用程式的編譯:把包含着通路資料庫語句的應用程式,編譯成在DBMS支援下可運作的目标程式。
互動式查詢:提供易使用的互動式查詢語言,如SQL.DBMS負責執行查詢指令,并将查詢結果顯示在螢幕上。
資料的組織與存取:提供資料在外為儲存設備上的實體組織與存取方法。
事務運作管理:提供事務運作管理及運作日志,事務運作的安全性監控和資料完整性檢查
事務的并發控制及系統恢複等功能。
資料庫的維護:為資料庫管理者提供軟體支援,包括資料安全控制、完整性保障、資料庫
備份、資料庫重組以及性能監控等維護工具。
計算機資料管理技術大緻經曆了送你個發展階段:
自由管理階段:使用者以檔案形式将資料組織起來,并附屬在各自的應用程式下。
檔案管理階段:作業系統中的檔案系統給出了統一的檔案結構和共同存取的方法,使用者可以把資料和資訊作為檔案長期地儲存在計算機中,并可以友善地進行查詢和處理。
資料庫管理階段:為了适應大量資料的集中存儲,并提供給多個使用者共享的要求,是資料與程式完全獨立,最大限度地減少資料的備援度,出現了資料庫管理系統。
DBMS提供五種功能:
資料定義功能。
資料管理功能。
對資料庫進行保護。
資料庫的建立和維護。
資料庫的傳輸。
RDBMS(relational database management system):是基于資料模型(關系系統)的資料庫管理系統,在資料庫市場已經占據了主導地位。它通過資料、關系和對資料的限制三者組成的資料模型來存放和管理資料。
RDBMS的特點:
1、資料以表格的形式出現
2、每行為各種記錄名稱
3、每列各種記錄名稱所對應的資料域
4、許多的行和列組成一張表單
5、若幹的表單組成database
ODBC(OpenDatabaseConnectivity,開放資料庫互連)是微軟公司開放服務結構(WOSA,WindowsOpenServiceArchitecture)中有關資料庫的一個組成部分,它建立了一組規範,并提供了一組對資料庫通路的标準API(應用程式程式設計接口)。這些API利用SQL來完成大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接将SQL語句送給ODBC.。
實作:
ODBC的運用形态通常是應用程式經過一個稱之為ODBCA管理器的工具,間接用ODBC驅動程式,從資料庫對于使用者的應用程式而言,ODBC驅動程式是相對不可見的。使用者隻需要在ODBC管理器中配置相應的資料庫的資料源資訊,并登陸相應的ODBC驅動即可。
資料庫管理的特點:
1、 互相關聯的資料集合;
2、 較少的資料備援;
3、 程式與資料互相獨立;
4、 保證資料的安全的可靠;
5、 最大限度地保證資料的正确性;
6、 資料可以共享并能保證資料的一緻性。
資料庫系統組成:
1、 硬體
2、 軟體
3、 人員
資料庫關系模型是由實體和聯系構成,即通常所說的E-R圖。實體通常儀表的形式表現,
表每一行描述實體的一個執行個體,表的每一列描述實體的一個特征或屬性。聯系指實體間的對應關系,聯系分為三種:一對一的聯系,一對多的聯系,多對一的聯系。
關系資料庫:基于關系模型的資料庫,關系資料庫中的資料結構是關系,關系是有行與列構成的二維表。在關系模型中,實體和實體間的關系都是用關系表示的。關系不但可以表示實體間一堆多的聯系,通過建立關系間一對多的聯系,通過建立關系的關聯,也可以表示多對多的聯系
主關鍵字(Primary Key)
主關鍵字是被挑選出來,作表的行的惟一辨別的候選關鍵字。一個通常隻有主關鍵字。主關鍵字又可以稱為主鍵。特點:不為空,不能有相同值,一張表中隻能有一個逐漸
外關鍵字(Foreign Key)
外關鍵字表示了兩個關系之間的聯系。以另一個關系的外關鍵字作主關鍵字的表被稱為主表,具有此外關鍵字的表被稱為主表的從表。外關鍵字又稱作外鍵。外鍵的選擇展現了表(實體)之間的聯系。特點:在表之間建立限制(引用性限制)可為空,如果不空則值不能相同,一個表可有多個惟一性。
表(Table)
資料庫中主要的對象。
指關系資料庫系統的二維表,也即關系。
一般來說,關系資料庫表的結構包含三個基本組成元素:字段名、資料類型和長度。
CREATE TABLE Employee
(
Employee_Id varchar(20),
Employee_Name varchar(50),
Employee_Depart varchar(100),
Job_Id varchar(20),
Employee_Salary decimal(18,2)
)
索引(Index)和視圖(View)
索引(Index):是根據指定的資料庫表列建立起來的順序,它提供了快速通路資料的途徑。
視圖(View):視圖看上去同表似乎一模一樣,具有一組命名的、不重複的字段和資料項,但它其實是一個虛拟的表,在資料庫中并不實際存在。它是資料庫預編譯好的一段查詢語句。
存儲過程(Procedure)
存儲過程是為完成特定的功能而彙集在一起的一組SQL程式語句,經編譯後存儲在資料庫中的SQL程式。
CREATE PROCEDURE P_GET_EMPLOYEE_INFO_BY_ID
@employee_id INT
AS
BEGIN
SELECT * FROM Employee WHERE Employee_Id=@employee_id
END
GO
函數(Function)
與存儲過程相比,函數必須具有傳回值,并且使用的SQL語句也有諸多限制建立函數(傳回varchar類型的值)
create function test(@Num varchar(20))--@Num 參數
returns varchar(50) --傳回值類型
as
begin
declare @MSG varchar(20)
if(@Num =1)
select @MSG ='正确'
else
select @MSG ='錯誤'
return @MSG
end
調用函數
select dbo.test(2)--傳遞參數2
傳回結果:錯誤
聚合函數
COUNT
SELECT COUNT(*) FROM Employee WHERE Job_Id = ‘0001’
SUM
AVG
MAX
MIN
簡單的SELECT
簡單的SELECT語句的文法如下;
SELECT [DISTINCT]<目标表達式>[,<目标表達式>]…
FROM <表或視圖名>[, <表或視圖名>]…
[WHERE <條件表達式>]
[GROUP BY <列名1> [HAVING <條件表達式>]]
[ORDER BY [列名2> [ASC | DESC]]
Select * from employee where fname=‘Paolo’
使用函數:
Select convert(char(10),getdate(),121);
Select upper(lname)from employee where fname=’Paolo’;
Select dataDiff(DAY,’2008-12-12’,’2008-12-25’)
判斷分支:
select case when fname='Anabela' then '1'
when fname='Ann' then '2'
else 'name'
end
from employee
order by fname
select嵌套:
Select * from employee where job_id in (select job_id from jobs where min_lvl between 0 and 10);
别名定義:
Select upper(lname) Uname from employee a where fname='Paolo';
表連接配接(多表查詢)
select * from employee a,jobs b where a.job_id=b.job_id;
以a表為主表:select * from employee a,jobs b where a.job_id *= b.job_id;
以b表為主表:select * from employee a,jobs b where a.job_id =* b.job_id;
Oracle的寫法是:
以a表為主表:select * from employee a,jobs b where a.job_id = b.job_id(+);
以b表為主表:select * from employee a,jobs b where a.job_id(+) = b.job_id;
通用的寫法:
select * from employee a inner join jobs b on a.job_id = b.job_id;
select * from employee a left join jobs b on a.job_id = b.job_id;
select * from employee a right join jobs b on a.job_id = b.job_id;
簡單的update語句:
UPDATE Student SET Student_Name=‘保羅’ WHERE Student_Id=‘0001’;
表聯合更新:
Update B set B.字段=A.字段 from A,B where B.條件字段=A.條件字段
Insert語句:
INSERT INTO tb1 (Name) VALUE (‘Jerry Obama‘);
檢視資料庫表結構:
SELECT User,host,password FROM user;
建立資料庫
CREATE DATABASE mysql;
CREATE DATABASE IF NOT EXISTS mysql;
CREATE DATABASE IF NOT EXISTS mysdb;
修改表内容:
UPDATE tb1 SET Age=38 WHERE Name=‘Jerry Obama‘;
檢視表:
SELECT * FROM tb1;
删除表内容:
DELETE FROM tb1 WHERE Name‘Jerry Obama’;
檢視表的結構:
DESC tb1;
删除表:
DROP TABLE IF EXISTS (表名);
删除資料庫:
DROP DATABASE mydb;
資料庫引擎:
MyISAM 預設存儲引擎它基于更老的ISAM代碼,有很多有用的擴充
InnDBM 支援事務
NDB 叢集
Archive 叢集中專用存儲引擎
Federated 聯合存儲引擎
Memory 記憶體資料庫 不能長久存儲資料
Merge 合并 将兩個MyISAM表合并成一個表中的數