1.什么是sql
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。
2. 數據視圖與數據模型數據抽象共有三個層次:物理層、邏輯層和視圖層。在邏輯層使用的數據模型包括兩類:一類是概念數據模型,主要用于數據庫設計,它能被一般的用戶理解,與人的思維表達方式比較接近。這樣的模型有實體-聯系模型(ERM);另一類是邏輯數據模型,按計算機系統的觀點對數據建模,使得數據更適合用計算機加以表示。
3.數據庫語言根據功能不同,可以將數據庫系統提供的語言分成三種類型:1)數據定義語言(DDL),用于定義數據庫模式;2)數據操縱語言(DML),用于對數據庫進行查詢和更新;3)數據控制語言(DCL),用于對數據進行權限管理。
4.數據庫模式根據數據的不同抽象層次,數據庫有三級模式:物理模式(內模式)在物理層描述數據庫中全體存儲結構和存取方法,而邏輯模式(概念模式)則在邏輯層描述數據庫中全體數據的邏輯結構和特征。在視圖層也可分為若干模式,稱為子模式(外模式),它描述了數據庫用戶能夠看見和使用的局部數據的邏輯結構和特征。通常一個數據庫只有一個物理模式和一個邏輯模式,但是子模式有若干個。
5. E-R圖E-R圖由以下元素構成:1)矩形,代表實體型;2)橢圓,代表屬性;3)菱形,代表聯系;4)線段,將屬性和實體性相連,或將實體型和聯系相連。
6.關系模型關系模型由關系數據結構、關系操作集合和關系完整性約束三部分構成。在關系模型中,現實世界實體以及實體間的聯系均用關系來表示。關系模型允許定義三類完整性約束:實體完整性、參照完整性和用戶定義完整性。其中實體完整性和參照完整性是關系模型必須滿足的完整性約束條件。實體完整性規則是:關系的主碼不能取空值。參照完整性規則是:外碼必須是另一個表中主碼的有效值,或者是“空值”。
7.連接運算連接運算是從兩個關系的乘運算結果中選取屬性間滿足一定條件的元組,構成新的關系。連接運算有兩種:等值連接和自然連接。自然連接要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。
8.SQL基本語法數據庫創建、表的創建、對表的增刪查改等。
9.視圖視圖能夠簡化用戶的操作
視圖是用戶能以多種角度看待同一數據
視圖對重構數據庫提供了一定程度的邏輯獨立性
視圖能夠對機密數據提供安全保護
10.事務事務是一系列的數據庫操作,是數據庫應用程序的基本單元,是反映現實世界需要以完整單位提交的一項工作。事務是用戶定義的一個數據庫操作序列。
事務的四個特征:原子性、一致性、隔離性和持久性。
11. 觸發器一個觸發器用來定義一個條件以及在該條件為真時需要執行的動作。通常,觸發器的條件以斷言的形式定義。動作以過程的形式定義。
12.索引幫助MySQL高效獲取數據的數據結構。提取句子主干,就可以得到索引的本質:索引是數據結構。
基本的sql學習基礎如上
進階學習(1)sql執行順序。當sql邏輯復雜后,sql的執行順序就會非常重要。
sql執行順序 - qanholas
(2)SQL ROW_NUMBER() OVER函數。用作分組排序,比如各個省份稅收排名前20的企業。
SQL ROW_NUMBER() OVER函數的基本用法用法
(3)case when then else end。用作條件判斷,比如將10、11、12、13……19、20歲的人群新生成一個字段‘年齡段’取值為10-20歲;聚合函數分別計算,如sum(case when 性別=‘男’ then 收入 end) as 收入_男,sum(case when 性別=‘n女’ then 收入 end) as 收入_女
SQL中的case when then else end用法
(4)select時加標簽。例如select出某一特征user_id時新建一個tag字段作為用戶的標簽。
select user_id,'白領' as tag
(5)差集運算。例如取A集合中不包含在B集合的用戶,做差集。