從零開始學(xué)SQL ---- 1.1關(guān)系數(shù)據(jù)庫和SQL簡介

關(guān)系數(shù)據(jù)庫是什么構(gòu)造?
簡而言之關(guān)系數(shù)據(jù)庫由多張表格組成。表格分行和列,又可以被稱為記錄(records)和區(qū)域(fields)。
表格通常圍繞一個實體/概念制作,比方說單據(jù)、名冊、供貨方......
表格里的列代表這個實體/概念的一些屬性(attribute),行則記錄一個實例的具體屬性值
大多數(shù)表格有一列主鍵(primary key)來標(biāo)識不同行,用到多列來起到同樣作用的叫復(fù)合主鍵(composite primary key)。

上圖為一張員工表格,第一深色行即為員工屬性,從左至右依次為員工工號,姓,名,電話,辦公地,項目1、2、3。每一行即一位員工的記錄,每個單元格里對應(yīng)一個員工屬性的具體值。表格大都以第一列為主鍵設(shè)計,通常為獨特的編號或自動生成的行數(shù)。
多張表格間如何聯(lián)系?
表格間是通過鍵列(key columns)聯(lián)系起來的。表格A的主鍵可以被表格B當(dāng)作外來鍵(foreign key)引用,并且不需要保持外來鍵的單一性,即表格A主鍵的一個值可以在表格B中重復(fù)引用。
表格間常見的關(guān)系有單對多(one-to-many relationship),單對單(one-to-one),多對多(many-to-many)。

上表格是一張學(xué)生選課表格,下表格是課程信息表。通過課程編號(courseId),兩張表格建立了聯(lián)系。課程編號在下表格為表格主鍵,而在上表格中為外來鍵,學(xué)生編號(studentId)為上表格的主鍵。圖為單對多案例,按圖所示,一門課有多名學(xué)生。然而現(xiàn)實中往往更為復(fù)雜,學(xué)生和課程間大都是多對多關(guān)系,因為學(xué)生大多會同時修習(xí)多門課程。

了解了數(shù)據(jù)庫后,我們就要了解和數(shù)據(jù)庫溝通的語言 ---- SQL。

SQL 簡介
SQL 語句可以按功能分為兩種:數(shù)據(jù)操縱語言(data manipulation language, DML)和數(shù)據(jù)定義語言(data definition language, DDL)。
從運(yùn)用場景來看,數(shù)據(jù)操縱語言和其他編程語言很像常用于增、刪、改、查具體的數(shù)據(jù)。而數(shù)據(jù)定義語言通常是和整張表格或整個數(shù)據(jù)庫進(jìn)行交互。
