糯米文學吧

位置:首頁 > 設計 > 網頁設計

關於SQL學習教程

篇一:SQL學習教程

關於SQL學習教程

SQL 簡介SQL 是用於訪問和處理數據庫的標準的計算機語言。什麼是 SQL?? SQL 指結構化查詢語言 ? SQL 使我們有能力訪問數據庫 ? SQL 是一種 ANSI 的標準計算機語言編者注:ANSI,美國國家標準化組織SQL 能做什麼?? SQL 面向數據庫執行查詢 ? SQL 可從數據庫取回數據 ? SQL 可在數據庫中插入新的紀錄 ? SQL 可更新數據庫中的數據 ? SQL 可從數據庫刪除記錄 ? SQL 可創建新數據庫 ? SQL 可在數據庫中創建新表 ? SQL 可在數據庫中創建存儲過程 ? SQL 可在數據庫中創建視圖 ? SQL 可以設置表、存儲過程和視圖的權限SQL 是一種標準 - 但是 是一門 ANSI 的標準計算機語言, 用來訪問和操作數據庫系統。 SQL 語句用於取回和更新數據庫中 的數據。 SQL 可與數據庫程序協同工作, 比如 MS Access、 DB2、 Informix、 MS SQL Server、 Oracle、 Sybase 以及其他數據庫系統。 不幸地是,存在着很多不同版本的 SQL 語言,但是為了與 ANSI 標準相兼容,它們必須以相似的方式共 同地來支持一些主要的關鍵詞(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。 註釋:除了 SQL 標準之外,大部分 SQL 數據庫程序都擁有它們自己的私有擴展!在您的網站中使用 SQL要創建發佈數據庫中數據的網站,您需要以下要素:? RDBMS 數據庫程序(比如 MS Access, SQL Server, MySQL) ? 服務器端腳本語言(比如 PHP 或 ASP) ? SQL ? HTML / CSSRDBMS

RDBMS 指的是關係型數據庫管理系統。 RDBMS 是 SQL 的基礎,同樣也是所有現代數據庫系統的基礎,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。 RDBMS 中的數據存儲在被稱為表(tables)的數據庫對象中。表是相關的數據項的集合,它由列和行組成。SQL 語法數據庫表一個數據庫通常包含一個或多個表。每個表由一個名字標識(例如“客户”或者“訂單”)。表包含帶有數據 的記錄(行)。 下面的例子是一個名為 "Persons" 的表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三條記錄(每一條對應一個人)和五個列(Id、姓、名、地址和城市)。SQL 語句您需要在數據庫上執行的大部分工作都由 SQL 語句完成。 下面的語句從表中選取 LastName 列的數據:SELECT LastName FROM Persons結果集類似這樣:LastNameAdamsBush

Carter 在本教程中,我們將為您講解各種不同的 SQL 語句。重要事項一定要記住,SQL 對大小寫不敏感!SQL 語句後面的分號?某些數據庫系統要求在每條 SQL 命令的末端使用分號。在我們的教程中不使用分號。 分號是在數據庫系統中分隔每條 SQL 語句的標準方法,這樣就可以在對服務器的相同請求中執行一條以 上的語句。 如果您使用的是 MS Access 和 SQL Server 2000,則不必在每條 SQL 語句之後使用分號,不過某些 數據庫軟件要求必須使用分號。SQL DML 和 DDL可以把 SQL 分為兩個部分:數據操作語言 (DML) 和 數據定義語言 (DDL)。 SQL (結構化查詢語言)是用於執行查詢的語法。 但是 SQL 語言也包含用於更新、 插入和刪除記錄的語法。 查詢和更新指令構成了 SQL 的 DML 部分:? SELECT - 從數據庫表中獲取數據 ? UPDATE - 更新數據庫表中的數據 ? DELETE - 從數據庫表中刪除數據 ? INSERT INTO - 向數據庫表中插入數據SQL 的數據定義語言 (DDL) 部分使我們有能力創建或刪除表格。我們也可以定義索引(鍵),規定表之 間的鏈接,以及施加表間的約束。 SQL 中最重要的 DDL 語句:? CREATE DATABASE - 創建新數據庫 ? ALTER DATABASE - 修改數據庫 ? CREATE TABLE - 創建新表 ? ALTER TABLE - 變更(改變)數據庫表 ? DROP TABLE - 刪除表 ? CREATE INDEX - 創建索引(搜索鍵) ? DROP INDEX - 刪除索引

SQL SELECT 語句SQL SELECT 語句SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。SQL SELECT 語法 SELECT 列名稱 FROM 表名稱以及:SELECT * FROM 表名稱註釋:SQL 語句對大小寫不敏感。SELECT 等效於 select。SQL SELECT 實例如需獲取名為 "LastName" 和 "FirstName" 的列的內容(從名為 "Persons" 的數據庫表),請使用 類似這樣的 SELECT 語句:SELECT LastName,FirstName FROM Persons"Persons" 表: Id LastName FirstName Address City1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing結果: LastName FirstNameAdamsJohnBushGeorge CarterThomasSQL SELECT * 實例現在我們希望從 "Persons" 表中選取所有的列。 請使用符號 * 取代列的名稱,就像這樣:SELECT*FROM Persons提示:星號(*)是選取所有列的快捷方式。結果: Id LastName FirstName Address City1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing在結果集(result-set)中導航由 SQL 查詢程序獲得的結果被存放在一個結果集中。大多數數據庫軟件系統都允許使用編程函數在結果 集中進行導航, 比如: Move-To-First-Record、 Get-Record-Content、 Move-To-Next-Record 等等。SQL SELECT DISTINCT 語句SQL SELECT DISTINCT 語句在表中,可能會包含重複值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。 關鍵詞 DISTINCT 用於返回唯一不同的值。語法:SELECT DISTINCT 列名稱 FROM 表名稱使用 DISTINCT 關鍵詞如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:SELECT Company FROM Orders

篇二:如何學習SQL

如何學習SQL

在論壇中不斷看到有新人問一些基礎的問題。於是抽空整理了本帖,希望對新人有所幫助。

本文無意取代任何一本數據庫或SQL的參考書,主要是提供一點學習方向的指導和技術心得的分享。地圖和指南針並不能代替其它的野營工具,經驗和心得也只能來自於親身走過的旅途。

本文主要以SQL Server 2005的T-SQL為示例,但原理並不侷限於這一平台。

由於全文過長,故拆分成四部分發帖:

Table of Content

第一部分:SQL基礎

1. 為什麼學習SQL

2. 學習SQL的參考資料

3. 幾組基本概念

3.1. 單機數據庫與服務器級數據庫

3.2. 服務器(Server)與客户端(Client)

3.3. 數據庫(DB)與數據庫管理系統(DBMS)

3.4. SQL與SQL方言(dialect)

3.5. 語句、表達式和斷言

4. SQL不同於一般編程語言的地方

4.1. SQL操作的是數據

4.2. SQL是基於集合的説明式語言

5. SQL的三個子集

第二部分:從關係角度理解SQL

6. 從關係角度理解SQL

6.1. 關係和表

6.2. 關係模型

6.3. 關係運算

6.4. 數據查詢 6.5. 數據修改

6.6. 表的邏輯含義

第三部分:SQL數據類型與三值邏輯

7. 數據類型

8. NULL與三值邏輯

第四部分:DBMS擴展功能與SQL高級話題

9. DBMS提供的擴展功能

9.1. 控制流

9.2. 動態語句

9.3. DBMS支持的數據庫對象

9.4. DBMS提供的系統函數、系統視圖和系統存儲過程

9.5. DBMS提供的工具

10. 高級話題

第一部分:SQL基礎

1. 為什麼學習SQL

自人類社會形成之日起,社會的運轉就在不斷地產生和使用各種信息(文獻、檔案、資料、數據等);在如今所謂的信息時代,由於計算機和互聯網的作用,信息的產生和使用達到前所未有的廣度和深度。如何管好和用好信息,是(而且將一直是)IT行業一塊重要的領域。 在過去幾十年中,關係數據庫一直在這一領域占主導地位,而建立在關係理論基礎之上的SQL也成為數據庫領域的既定標準。

目前的數據存儲領域可稱為三分天下:

a. 少量數據的存儲:

自定義數據文件或通用數據文件(單機數據庫),通過自定義接口或通用API訪問數據。如需要存儲數據的單機軟件或小型的動態網站。

b. 對一致性要求高的大量數據的存儲:

關係數據庫管理系統(RDBMS)。如各種傳統的信息系統(ERP、CRM、HRMS、MIS等)。

c. 對併發性要求高的大量數據的存儲:

NoSQL數據庫系統。如Web2.0網站的後台數據系統。

以上,“狐假虎威”地借數據存儲的重要性來闡述了一番學習SQL的偉大意義。但重要的是,對SQL善於做什麼和不善於做什麼有個清楚的認識。

2. 學習SQL的參考資料

不久前整理了數據庫圖書ABC一文,對數據庫相關的參考資料作了粗略的分類。

對於初學者而言,可以結合着《數據庫系統概念(第5版)》一書和某個DBMS平台的入門技術手冊練習,自行尋找或構思一個小需求,建一個數據庫,創建幾個表和視圖,練習寫查詢和修改語句。基礎理論和技術實踐可以相互促進。

3. 幾組基本概念

3.1. 單機數據庫與服務器級數據庫

單機數據庫(如sqlite、Access等,Excel也勉強可以算是)是應用於單個計算機的數據庫引擎,通常不具備網絡連接功能,適用於小型應用;程序部署時,一般只需要附帶數據文件即可。有時也稱作桌面數據庫。

服務器級數據庫(如Oracle、DB2、SQL Server、MySQL、PostgreSQL等)是具備網絡連接功能、可作為單獨數據庫服務器的DBMS,適用於大型信息系統;程序部署時,需要專門安裝相應的DBMS,甚至要單獨進行數據庫服務器的架構設計。此類數據庫是我們討論的重點。

3.2. 服務器(Server)與客户端(Client)

數據庫服務器是運行在一台主機(Host)(或主機集羣)上的服務程序,維護着一個或多個數據庫,並通過網絡連接響應數據庫客户端提交的SQL語句。

數據庫客户端是向數據庫服務器發送查詢請求的應用程序,可能是DBMS的GUI管理界面或命令行應用程序,也可能是前端的Web服務器。數據庫客户端和數據庫服務器可能是在同一台主機上,但更多情況下則是位於不同的主機上,通過局域網訪問。

例如對於SQL Server來説,一個服務器實例(Instance)即是一個數據庫服務器,一台主機上可以安裝多個服務器實例;而查詢分析器或SSMS、sqlcmd、以及連接數據庫服務器的IIS,都是數據庫客户端。

比如你在SSMS中備份/還原/附加一個數據庫,或是通過xp_cmdshell執行一個命令程序,所操作的都是你所連接的數據庫服務器所在主機的文件,而不是你運行SSMS數據庫客户端所在主機的文件。

一台主機有時候會被稱作一台(操作系統)服務器,而數據庫服務器和Web服務器都是運行在主機之上的應用服務器。它們都被稱作服務器,不要因此搞混了。

一個典型的基於SQL Server的網站系統的架構示例如下:

用户瀏覽器(Web Client) <----> IIS(Web Server/DB Client) <----> SQL Server(DB Server)

3.3. 數據庫(DB)與數據庫管理系統(DBMS)

“數據庫”這個詞已經被濫用,可能用來指一個數據系統(如中國移動的號碼數據庫),可能用來指一種數據存儲技術(如關係數據庫和NoSQL數據庫),還可能用來指DBMS(如人們常説SQL Server是數據庫軟件)。這種混亂已然形成,恐怕難以改變(比如上文的描述即是如此)。我們只能根據上下文來判斷具體含義。

按最狹義的技術含義,數據庫(Database)是指位於一個數據庫服務器實例上的一個庫,而DBMS則是指類似SQL Server、Oracle等等此類軟件。初學者要注意這些概念之間的差別。論壇上常常見到這樣的帖子:“連不上數據庫”、“數據庫打不開了”,又沒有上下文,可見發問者概念混亂,搞得解答者也是一頭霧水。

3.4. SQL與SQL方言(dialect)

SQL是一個關係數據庫查詢語言的標準,而SQL方言則是各種DBMS在SQL標準上進行的擴展,如增加新的關鍵字、查詢功能、特有的數據類型、支持過程化的控制流語句等。例如SQL Server的T-SQL和Oracle的PL/SQL都是常見的SQL方言。

這就好比ANSI C標準與各種編譯器實現的C語言的差別。但不同SQL方言之間的差異遠大於不同C編譯器之間的差異。SQL方言之間的差異,對於跨DBMS的學習和開發,都是必須注意的。

3.5. 語句、表達式和斷言

語句(statement)是SQL中一個可以單獨執行的單元。如SELECT * FROM table;即是一個語句,其中包含了SELECT子句(clause)和FROM子句。SQL標準規定用分號作為語句的結束,但在目前的T-SQL中,語句結束的分號是可選的。

表達式(expression)是SQL中的一個值(可能是變量、常量、查詢字段或計算結果),對應一種特定的數據類型。SQL中的表達式分為標量表達式和表值表達式,其中表值表達式作為單獨語句則是SELECT語句,作為語句的一部分則稱為子查詢。比如0, col + 2, DATEADD(second, 30, GETDATE())都是(標量)表達式。

需要特別説明的是,SQL中的CASE WHEN是標題表達式,而不是條件語句。比如CASE WHEN中可以使用表達式,卻不能使用語句;CASE WHEN的結果是一個特定數據類型的標量值;CASE WHEN可以用在SELECT、GROUP BY或ORDER BY子句中,但IF ELSE則不行。

是SQL中進行比較的結果,即真值,可理解為布爾表達式,因為SQL中沒有bool數據類型,所以將斷言特別從表達式中區分出來。比如1是一個標量表達式,而1 = 1則是一個斷言,後者可以用在WHERE、ON、HAVING、CHECK等需要真值條件的地方,但前者則不可以。由於NULL的存在,SQL中的斷言是三值邏輯,即True/False/Unknown,詳見下文“NULL與三值邏輯”。

下文中多次用到計算和比較兩個詞。表達式和表達式進行計算,結果是新的表達式;表達式和表達式進行比較,結果是一個斷言;斷言和斷言可以進行邏輯運行(AND/OR/NOT),結果是新的斷言。注意其中的區別。

4. SQL不同於一般編程語言的地方

4.1. SQL操作的是數據

SQL是數據庫的查詢語言,因而可以對系統數據產生持久化影響。在常規編程中,一個錯誤通常只會造成程序的crash或bug,修改並重新調試往往就可以了;而在SQL中,一個不小心就可能造成系統數據的破壞和丟失。常常有新手執行SQL時,不小心遺漏了DELETE或UPDATE語句中的WHERE子句,這往往是很大的.麻煩。

篇三:sql server學習總結

篇四:SQL_Server_2008數據庫學習

SQL Server 2008數據庫—創建、建表、查詢語句

一、創建數據庫

1、利用對象資源管理器創建用户數據庫:

(1)選擇“開始”—“程序”—Microsoft SQL Server 2008—SQL Server Management Studio命令,打開SQL Server Management Studio。

(2)使用“Windows身份驗證”連接到SQL Server 2008數據庫實例。

(3)展開SQL Server 實例,右擊“數據庫”,然後人彈出的快捷菜單中選擇“新建數據庫存”命令,打開“新建數據庫”對話框。

(4)在“新建數據庫”對話框中,可以定義數據庫的名稱、數據庫的所有者、是否使用全文索引、數據文件和日誌文件的邏輯名稱和路徑、文件組、初始大小和增長方式等。輸入數據庫名稱student。

二、創建數據表

1、利用表設計器創建數據表:

(1)啟動SQL Server Management Studio,連接到SQL Server 2008數據庫實例。

(2)展開SQL Server實例,選擇“數據庫”—student—“表”,單擊鼠標右鍵,然後從彈出的快捷菜單中選擇“新建表”命令,打開“表設計器”。

(3)在“表設計器”中,可以定義各列的名稱、數據類型、長度、是否允許為空等屬性。

(4)當完成新建表的各個列的屬性設置後,單擊工具欄上的“保存”按鈕,彈出“選擇名稱”對話框,輸入新建表名stu_info,SQL Server數據庫引擎會依據用户的設置完成新表的創建。

2、利用SQL語句創建數據表:

在SQL Server Management Studio中,單擊標準工具欄的“新建查詢”按鈕,啟動SQL編輯器窗口

例如:

Create table stu_info(

stu_id 10)not null,

name nvar20)not null,

birthday date null,

sex n2)null,

address nvar20)null,

mark int null,

major nvar20)null,

sdept nvar20)null

);

3、樣本數據庫student表數據:

學生信息表(stu_info)

:

課程信息表(course_info):

學生成績表(stu_grade)

:

create table stu_info

( stu_id 10)primary key not null,

name nvar20) not null,

birthday date,

sex n1) default'男',

address nvar20),

mark smallint,

major nvar20),

sdept nvar20)

);

create table cou_info

(course_id 3) not null primary key,

course_name nvar20) not null,

course_type nvar2) default'考試',

course_mark tinyint ,

course_time 2),

);

create table stu_grade

(stu_id 10) not null ,

course_id 3) not null ,

grade int

primary key (stu_id,course_id),

foreign key (stu_id)references stu_info(stu_id),

foreign key (course_id)references cou_info(course_id)

);

into stu_info(stu_id,name,birthday,sex,address ,mark,major,sdept)

values('2007070101','張元','1985-10-09','男','河南鄭州','576','計算機科學與技術','信息學院'), ('2007070102','張紅','1985-01-14','女','河南開封','565','計算機科學與技術','信息學院'), ('2007070103','王明','1986-07-08','男','河南洛陽','570','計算機科學與技術','信息學院'), ('2007070104','李偉','1986-03-11','男','河南鄭州','564','計算機科學與技術','信息學院'), ('2007070201','鄭瀾','1985-12-01','女','河南平頂山','567','電子商務','信息學院'), ('2007070202','趙恆','1986-02-02','男','河南周口','566','電子商務','信息學院'), ('2007070203','張蘭','1986-04-06','女','河南許昌','571','電子商務','信息學院'), ('2007080101','李偉','1985-09-12','男','河南鄭州','578','會計學','會計學院'),

('2007080102','錢麗','1985-11-23','女','河南安陽','573','會計學','會計學院'),

('2007080201','孫楠','1986-11-19','男','河南南陽','578','財務管理','會計學院');

into cou_info(course_id,course_name,course_type,course_mark,course_time)

values('701','計算機基礎','考試','3','50'),

('702','操作系統','考試','4','50'),

('703','計算機網絡','考試','4','50'),

('704','數據庫原理','考查','3','50'),

('706','java','考查','3','40'),

('801','宏觀經濟學','考試','4','50'),

('802','初級會計','考試','4','50'),

('803','財政學','考試','3','50'),

('804','會計電算化','考查','3','');

into stu_grade(stu_id,course_id,grade)

values('2007070101','701','75'),

('2007070101','702','81'),

('2007070101','703','96'),

('2007070101','701','85'),

('2007070102','702','74'),

('2007070102','701','55'),

('2007070103','701','35'),

('2007070104','702','88'),

('2007070104','701',''),

('2007080101','802','91'),

('2007080101','801','87'),

('2007080102','802','50'),

('2007080102','803','75'),

('2007080201','804','82');

alter table stu_info add memo nvar200);

alter table cou_info add unique (course_name) ;

alter table stu_grade

add check(grade>=0 and grade<=100);

alter table stu_grade

add constraint stu_score foreign key(stu_id)references stu_info(stu_id); stu_info ;

cou_info ;

stu_grade;

create table stu_info

( stu_id 10)primary key not null,

name nvar20) not null,

birthday date,

sex n1) default'男',

address nvar20),

mark smallint,

major nvar20),

sdept nvar20)

);

create table cou_info

(course_id 3) not null primary key,

course_name nvar20) not null,

course_type nvar2) default'考試',

course_mark tinyint ,

course_time 2),

);

create table stu_grade

(stu_id 10) not null ,

course_id 3) not null ,

grade int

primary key (stu_id,course_id),

foreign key (stu_id)references stu_info(stu_id),

foreign key (course_id)references cou_info(course_id)

);

alter table stu_info

add code 18)not null;

alter table stu_info

add unique(code);

alter table stu_info

drop constraint UQ__stu_info__357D4CF932E0915F

go

alter table stu_info

drop column code

go

alter table stu_info

add check(sex ='男'or sex ='女');

alter table cou_info

add pre_course_id 3);

alter table cou_info

add foreign key(pre_course_id) references cou_info(course_id); stu_info

set address='河南洛陽'

where stu_id='2007070101';

stu_grade

set grade=1.1*grade

where grade<60;

from stu_grade

where grade<60;

stu_info

set sdept='會計學院'

where stu_id='2007070102';

stu_grade

set grade=null

where grade<60;

from stu_info

where address='河南洛陽';

from stu_grade

where '張元'=

(select name

from stu_info

where stu__id=stu__id

);

select *

from stu_info;

select*

from stu_grade;

select name,sex,address,sdept

from stu_info

where stu_id='2007070103';

select stu_id 學號,name 姓名,sdept 院系

from stu_info

where sex='女';

篇五:SQL Server 2008 學習筆記

SQL Server 2008 學習筆記

目錄

一、SQL Server 2008 學習筆記(一) 數據庫系統的基本結構 ........................................1

二、SQL Server2008 學習筆記(二)關係數據庫 ..............................................................3

三、SQL Server2008 學習筆記(三) 數據庫管理 .............................................................6

四、SQL Server2008學習筆記(四)數據表的基本操作(上) ................................ 11

五、sql server2008 學習筆記 小插曲 ....................................................................... 15

據庫系統的基本結構 在寫我的第一篇筆記之前,先廢話幾句,最近打算學習一段時間的數據庫知識並打算把我的讀書心得晾出來和大家分享一下,希望感興趣的園友能能夠一起探討,共同提高。有理解的不對的地方也歡迎各位大牛拍磚,這年頭不為別的,就為了能掌握點真理!

廢話説完了,開始今天的正文。

首先來上一張圖片,瞭解一下數據庫系統的基本結構

下面我想用一個簡單的比喻來描述一下數據庫系統的基本結構。

數據庫系統=====》倉儲中心

數據庫========》倉儲中心的貨場或者是倉庫

數據=========》存儲在貨場或者是倉庫中的貨物

數據庫管理系統===》在倉儲中心一系列的管理體制規則下的倉庫自動化管理系統

數據庫管理員====》倉庫的庫管員

應用系統======》倉儲中心對外的服務窗口

操作系統======》公司或者集團,是一個基礎環境的作用

這樣就可以將數據庫系統的運行描述為一個倉儲中心的運轉。

當有客户(用户)來倉儲中心(數據庫系統)存/取貨物的時候,客户(用户)首先要接觸的是倉儲中心的對外服務窗口(軟件系統),服務窗口會對客户(用户)的身份進行驗證,出示證件或其他的一些方式和方法。客户(用户)身份驗證通過之後就可以進行通過服務窗口索取服務(發出一些命令)來傳給倉庫的自動化管理系統(DBMS)會對這些命令再一次進行驗證,驗證通過就提供相應的服務(返回相應的結果),驗證失敗會拒絕服務(返回一個錯誤)。在這個過程中,客户(用户)不需要了解你想要的貨物放在倉庫(數據庫)的具體位置,這麼多的貨物(數據)究竟是怎樣的一個組織結構。同樣的一個倉庫或者是貨場怎麼才能更有效率的想客户(用户)提供服務,怎樣才能存放更多的貨物,這些都是倉庫管理員(數據庫管理員)應該做的事情。

關於數據庫系統的幾點説明

1、(數據庫)DB和(數據庫管理系統)DBMS:數據庫和數據庫管理系統是兩個不同的概念。數據庫是數據存儲的倉庫,是一個實體,能夠合理的存放數據的地方。數據庫管理系統是一種操縱和管理數據庫的大型軟件,用於建立、使用和維護數據庫,它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。我們通常説的oracle、sql server、mysql、db2屬於DBMS的範疇。

2、數據庫系統中數據的模型:層次模型、網狀模型、關係模型。我們通常所説的關係型數據庫就是根據數據模型來劃分的。

3、數據庫管理系統是數據庫系統的核心,對數據庫的一切操作,如原始數據的裝入、檢索、更新、再組織等等,都是在DBMS的指揮、調度下進行的,它是用户與物理數據庫之間的橋樑,根據用户的命令對數據庫執行必要的操作。

4、由於數據庫管理系統(DBMS)的核心作用,所以我們學習數據庫的時候主要還是學習的是數據庫管理系統(DBMS)。

5、在實際的使用過程中我們一般不關心數據的物理結構只關心數據的邏輯結構,這就得藉助於功能強大的數據庫管理系統(DBMS)

數據庫 關係數據庫(Relational Database ,RDB)基於關係模型的數據庫。是現代最流行的數據管理系統中應用最為普遍的一種,也是最有效率的數據組織方式之一。

理解關係數據庫可以從兩方面進行理解:

1、關係數據庫是有由行與列構成的二維表表之間的關聯組成

2、表的關聯。表的關聯的好處就是無需將相同的數據重複的進行存儲,降低了數據的宂餘度。 術語

鍵碼(key):在關係中用來標識行的一列或者是多列

主關鍵字(Primary Key):是錶行的唯一標識的候選關鍵字。這裏需要注意的地方是,一個表只有一個關鍵字;主關鍵字可以由一個或者是多個字段組成,分別稱為單段主鍵和多段主鍵

候選關鍵字(Candidate Key):唯一標識表中的一行而又不包含多餘屬性的一個屬性集 公共關鍵字(Common Key):兩個數據表中具有相同或者是相容的屬性或者是屬性組,那麼這個屬性或屬性組就稱之為關係的公共關鍵字

外關鍵字(Foreign Key):外關鍵字存在於公共關鍵字的基礎之上。在公共關鍵字中如果這個公共關鍵字在其中的一個數據表中是主關鍵字那麼這個公共關鍵字就稱之為另一個表的外關鍵字。

範式理論

目前關係數據庫有六種範式,而在實際設計數據庫的時候,通常用到的是前三種範式

1NF

a)數組的每個屬性只能包含一個值

b)關係中的每個數組必須包含相同數量的值

c)關係中每一個數組一定不能相同

反例

如果符合1NF則修改如下

2NF 滿足第一範式的基礎上,數據表中的任何一個非主鍵字段的數據都依賴於該數據表中的主關鍵字。

若滿足2NF則需要將上面的表分拆為一下兩個表:

3NF

在滿足第二範式的基礎上,滿足第三範式的條件是數據表中的任何兩個非關鍵字段的數據值之間不存在函數依賴關係。

這個範式比較容易理解就不拿例子來解釋了。

這樣做有什麼好處嗎?答案是肯定的哈。沒有無緣無故的愛和恨,呵呵。

1、節約存儲空間

2、避免的數據變動時發生人為的錯誤

E-R模型

1、實體模型

怎麼樣理解這樣的一個概念呢。通過一個簡單的例子來解釋這樣的一個概念。

這就是一個實體集

標籤:SQL 學習