1. 程式人生 > >SQL入門經典+SQL必知必會

SQL入門經典+SQL必知必會

一、瞭解SQL 1. 關係型資料庫管理系統(RDBMS) 2. 結構化查詢語言(SQL)——關係型資料庫進行通訊的標準語言 3. ANSI標準——可移植性和易用性 4. 連線資料庫:CONNECT [email protected];斷開連線:DISCONNECT 5. SQL命令型別:
  • 資料定義語言:DDL——用於建立重構資料庫物件(撤銷和修改資料模式)
  • 資料操作語言:DML——用於操作關係型資料庫物件內部的資料據(增刪改資料)
  • 資料查詢語言:DQL(只有一個命令,此命令有很多選項和子句)——用於構成對關係資料庫的查詢
  • 資料控制語言:DCL——用於控制對資料庫裡資料的訪問,通常用於建立和與使用者訪問相關的物件,以及控制使用者的
    許可權
  • 資料管理命令:
  • 事務控制命令:
注:許多 SQL 開發人員喜歡對 SQL 關鍵字使用大寫,而對列名和表名使用小寫,這樣做使程式碼更易於閱讀和除錯。不過,一定要認識到雖然 SQL 是不區分大小寫的,但是表名、列名和值可能有所不同(這有賴於具體的 DBMS 及其如何配置)。 6. 資料庫系統的一般構成:
  • 資料庫DB
  • 資料庫管理系統DBMS
  • 資料庫管理員DBA
  • 應用程式
7. 概念資料模型用於資料庫的設計;邏輯(也稱結構資料模型,需要形式化定義)和物理資料模型(反映資料的儲存結構)用於DBMS的實現。資料模型描述資料時,的描述稱為資料模式(外模式、概念模式、內模式)的描述稱為例項 8. 表的構成:
  • 欄位:表裡的一列,如學生資訊表裡的名字、性別、年齡等,用於保持每條記錄的特定資訊
  • 行(元組):表中的一行資料,有時說為記錄,正確的說法是”行“
  • 列(屬性):表由列組成,包含表裡特定欄位的全部資訊
  • 超鍵(super key):在關係中能唯一標識元組的屬性集稱為關係模式的超鍵
候選鍵(candidate key):不含有多餘屬性的超鍵稱為候選鍵 主鍵(primary key):使用者選作元組標識的一個候選鍵程式主鍵 注:超鍵包含著候選鍵,候選鍵中包含著主鍵。主鍵一定是惟一的。
  • 主鍵(Primary Key):唯一標識表中每行的這個列(或這幾列)的記錄(比如人的身份證號),用於與其他表的關聯。並不總是需要主鍵,但是最好總是定義;主鍵只有一個,可以是一個或多個欄位組成;主鍵的值不可重複或者為NULL
注:更換主鍵(add)前先撤銷主鍵(drop)
  • 外來鍵(Foreign Key):關係模式R中的某個不是R中的主鍵,而是另一個關係的主鍵,則這個欄位稱為關係R的外來鍵。外來鍵可以多個;在資料庫中縮寫為FK
補充:用UNIQUE標示出來的列,表示要求每一行的值不同; 用Default設定預設值;使用外來鍵要用到reference指定引用的表名 二、建立資料庫 1. 資料的隱示轉換(自動)和顯式轉換(通過函式實現) 2. 基本資料型別:
  • 字串型別:
  • 數值型別:
  • 時間和日期型別:
  • 二進位制型別:
  • 定長字串: CHARACTER(n),使用空格填充數量不足的字元
  • 變長字串: CHARACTER VARYING(n ),有VARCHAR(都用)、VARINARY和VARCHAR2(Oracle用)。變長字串不使用空格填充空白,更節約空間
  • 大物件型別:BLOB(適合儲存二進位制檔案,如影象和mp3);TEXT(適合儲存大字符集,如站點HTML的輸入)
  • 數值型別:BIT、BIT VARYING、DECEMAL(p,s)//小數型別,精確度高,表示的範圍小、INTEGER、SMALLINT、BIGINT、FLOAT(p,s)//p為有效位數,表示總長,s為標度、DOUBLE PRECISION(p.s)、REAL(s)//單精度浮點型別
  • 直義字串:由使用者或程式明確指定,值是已知的
  • NULL型別:表明相應的欄位不需要輸入資料(如果必須包含資料,就必須設定為NOT NULL)
  • 布林值:TRUE、FALSE、NULL(只有第一種會返回資料)
注:以上資料型別在不同的SQL實現裡可能具有不同的名稱,但是概念是通用的
  • 自定義型別:用語句CREEATE TYPE建立自定義型別
  • 域:域是能夠被有效的使用的資料型別的集合,域與資料相關聯,從而只接受特定的資料
三、管理資料庫物件 1. 規劃:與資料庫某個使用者名稱相關聯(規劃所有者)的資料庫物件集合,資料庫裡可以由一個或多個規劃 2. 訪問自己所擁有的表等資料庫物件(在自己的規劃裡),不必引用規劃名稱 3. 不同規劃中,可以由相同的資料庫物件(所以一定要注意自己是以什麼身份登入到資料庫的,以免誤刪物件) 4. 建立表:CREATE TABLE(建立前應仔細設計表的結構,比如資料型別,NULL,主鍵等),可複製可新建(複製時預設相同屬性) 5. 建立表時括號不是必須的,大多數SQL的實現以分號結束 6. ALTER TABLE增加列,後面加上modify為修改 7. 新增自動增加的列:MySQL中提供了SERIAL方法,SQL Server中可使用IDENTIFY型別;Oracle中可使用SEQUENCE物件加一個觸發器實現 8. COMMIT:COMMIT用來將事務寫入資料庫 9. CREATE INDEX:CREATE INDEX用於在一個或多個列上建立索引 10. CREATE PROCEDURE用於建立儲存過程(Oracle稍有不同) 11. CREATE VIEW用來建立一個或多個表上的新檢視 12. DELETE從表中刪除一行或多行 13. DROP永久地刪除資料庫物件(表、檢視、索引等),加上cascade constrain表示噹噹前表與其他表有聯絡時仍然強制刪除 14. INSERT為表新增一行 15. INSERT SELECT將SELECT的結果插入到一個表 16. ROLLBACK用於撤銷一個事務塊 17. UPDATE更新表中的一行或多行 18. SELECT: 1)條件查詢: select <列> from 表 where 查詢條件 查詢處理
  • 檢索特定列:select 學號 from 學生;
  • 檢索多個列:SELECT關鍵字後給出多個列名,列名之間必須以逗號分隔。// 輸出次序由語句順序決定
  • 檢索全部列:select * from 學生;
在實際列名的位置使用星號(*)萬用字元(好處在於可以用來檢索未知列)(一般而言,除非你確實需要表中的每一列,否則最好別使用*萬用字元。)
  • 檢索不同的值(相同的值不列印):select distinct 姓名 from 學生;
使用DISTINCT關鍵字,顧名思義,它指示資料庫只返回不同的值
  • 自定義檢索出顯示時的欄位名:select 定義名 姓名 from 學生;
注:可以使用很多運算子,如邏輯運算子(and , or , not);特殊運算子(可讀性稍差between , in , like , between...and),還可以使用空值NULL進行查詢某些值是否沒有填充 eg: select 年齡 from 學生 where <=20 and 性別 !=‘女’; select 年齡 from 學生 where 住址 in(‘四川’,‘福建’); select * from 學生 where 學號 not like ‘_ _ _6’; select * from 學生 where 名字 like ‘張%’; 2)查詢結果排序 order by 列名 ASC/DESC;
  • select * from 學生 order by 姓名,學號 ASC/DESC;(升/降)
3)彙總資訊查詢—聚合函式
  • 組函式完成統計、計數等運算;如count-記錄所選行數,avg—計算平均值,sum、min、max
eg: select count(*) from 學生; select count(distinct 姓名) from 學生; select avg(年齡) from 學生 where 年級<=3; 4)彙總資訊查詢—group by(通常與上面的聚合函式結合起來使用)

  • having語句,group by的限制語句
  • 與where混合使用(where限制select,having限制group by)
注:group by 分組應該是有意義的,即分組屬性應該是對應的 5)連線查詢操作(從幾個表中查詢資料)
  • 相等連線、非相等連線;自身連線、非匹配連線(外連結)
  • 注:剩餘的select查詢語句筆記在下一個筆記中
19. 索引的建立:create index(可使用unique、ASC、DESC等修飾) eg:createindex unique 學生索引 on 學生 學號 DESC, 姓名 ASC ); Drop index 學生索引; 四、完整性約束:
  • 主鍵約束PK(建立時建立後都可以設定)
  • 外來鍵約束FK:外來鍵是子表裡的一個欄位,引用父表裡的主鍵(要使用 reference指定引用的表名)
注:外來鍵引用的表名後新增ON DELETECASCADE表示層疊刪除(這個表中與這個外來鍵相關的資訊都刪除);新增ON DELETE restrict表示不能刪除此外來鍵;ON DELETE SET NULL,表示刪除外來鍵後自動設定為空
  • 唯一性約束UNIQUE:要求這個欄位的值在每條記錄裡都是唯一的
  • NOT NULL約束
  • 檢查約束:檢查輸入到特定欄位的資料的有效性
注:利用ALTER TABLE裡的CONSTRAINT可以去除已經定義的約束;每個欄位都有自己的屬性,包括資料型別和約束

相關推薦

SQL入門經典+SQL

一、瞭解SQL 1. 關係型資料庫管理系統(RDBMS) 2. 結構化查詢語言(SQL)——關係型資料庫進行通訊的標準語言 3. ANSI標準——可移植性和易用性 4. 連線資料庫:CONNECT [email protected];斷開連線:DISCONNECT

SQL入門經典+SQL+視訊)筆記之一

一、瞭解SQL 1. 關係型資料庫管理系統(RDBMS) 2. 結構化查詢語言(SQL)——關係型資料庫進行通訊的標準語言 3. ANSI標準——可移植性和易用性 4. 連線資料庫:CONNECT [

SQL -------- 通配符、計算字段、函數

提取 mar 第8章 column round vendor 方法 多少 頁面 1.LIKE操作符 1.1百分號(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE ‘Fish%‘

SQL摘要

用法 row 第一個 table class err num 方向 返回 數據檢索 2.2 檢索單個列 SELECT prod_name FROM Products; SQL語句不區分大小寫 2.3 檢索多個列 SELECT prod_name,pr

SQL 第4版 pdf

AR rep 針對 gre 通配符 環境 http 使用 總數 下載地址:網盤下載 內容簡介 · · · · · ·SQL語法簡潔,使用方式靈活,功能強大,已經成為當今程序員不可或缺的技能。本書是深受世界各地讀者歡迎的SQL經典暢銷書,內容豐富,文字簡潔明快,針對Orac

sql的數據初始化

rdb 成功 缺少 進入 mysq 其中 populate 現在 順序 之前已經配置好mysql的工作環境,但是還缺少可以進行操作的文件,即缺少對應的一個數據庫和其中的5個表。 下載相關代碼 在網址http://www.forta.com/books/0672325675/

2018/07/26 《SQL 》 學習筆記

order lec tinc 終端 報錯 提交 寫法 啟動 過濾 讀書總結:   《SQL 必知必會》是我系統學習數據庫的第一本書。   主要講解了 常用的 SQL 語句寫法和一些基本的註意點。   並不涉及一些比較深入的知識點。   作為初學或者是系統學習的查漏補缺我覺得

SQL】筆記 SQL萬用字元

萬用字元: WHERE子句中用於篩選 用來匹配值的一部分的特殊字元 萬用字元只能用於文字欄位(字串),不能用於非文字資料型別的資料 使用萬用字元時,必須使用LIKE操作符 1. 百分號(%)萬用字元 %表示任何字元出現任意次數 比方說,

SQL1

1.瞭解SQL 1.1資料庫 基礎 1.1.1資料庫database 儲存有組織的資料的容器,通常是一個檔案或者一組檔案  DBMS資料庫管理系統,即我們常說的資料庫管理軟體,資料庫是DBMS建立和操縱的容器。 1.1.2表table 某種特定型別資料的結構化清單(儲存在表中的資料是同

SQL】資料插入、更新和

資料的插入insert into values 資料的插入有以下幾種方式: 插入完整的行; 插入行的一部分; 插入多行; 插入某些查詢的結果。  插入完整的行: INSERT INTO Customers VALUES ('Pep E. L

【讀書筆記】【資料庫】SQL

第1課 瞭解SQL 簡單介紹了sql,和dbms,無重點。 第2課 檢索資料 重點:select語句,distinct,limit,註釋 1. select 語句如果沒有明確排序查詢結果,那麼返回的資料沒有特定的順序。返回資料的順序可能是資料被新增到表中的順序,也可能不是。只要返回相同數目的行,就是正

SQL學習(一)

自從爬蟲稍微入門之後,又抽出一段時間著重學習EXCEL函式和透視表,其中以函式為主。今天開始學習SQL,幾個月前曾通讀了一遍《SQL必知必會》,但是沒有具體操作過。今天重新開啟workbench才發現之前在爬蟲的時候用的知識又有些生疏了,所以覺得有必要寫個部落格,防止自己再次生疏的時候,又浪費時間去

MySql實戰練習(四)主鍵、外來鍵、sql約束、聯結表 MySql資料庫約束

  本博將對主鍵、外來鍵、MySql資料庫約束和聯結表的相關特性進行總結和實戰 1. 主鍵   表中的每一行都應該具有可以唯一標識自己的一列(或一組列),而這個承擔標識作用的列稱為主鍵   如果沒有主鍵,資料的管理會十分混亂。比如會存在多條一模一樣的記錄,刪除和修改特定行十分困難 (1)哪些列可以作為

sql學習記錄(十)- 分組資料

sql必知必會學習記錄(十)- 分組資料 資料分組 如果要返回每個供應商提供的產品數目怎麼辦?或者返回只提供單項產品的供應商所提供的產品,或返回提供10個以上產品的供應商怎麼辦,這就是分組顯身手的時候了。分組允許把資料分為多個邏輯組,以便能對每個組進行聚集計算。

## sql學習記錄(九)- 彙總資料

sql必知必會學習記錄(九)- 彙總資料 聚集函式 我們經常需要彙總資料而不用把它們實際檢索出來,為此MySQL提供了專門的函式。使用這些函式,MySQL查詢可用於檢索資料,以便分析和報表生成。這種型別的檢索例子有以下幾種。 確定表中行數(或者滿足某個條

sql學習記錄(八)- 資料處理函式

sql必知必會學習記錄(八)-資料處理函式 本次記錄內容主要包括sql必知必會第8章使用資料處理函式的相關內容 大多數sql支援以下型別的函式: 用於處理文字串(如刪除或填充值,轉換為大寫或者小寫)的文字函式 用於在數值資料上進行算術操作(如返回絕

sql學習記錄(七)-建立計算欄位

sql必知必會學習記錄(七) 本次記錄內容主要包括sql 必知必會 第七章 建立計算欄位的相關內容 拼接欄位 在MySQL的SELECT語句中,可使用Concat()函式來拼接兩個列。 SELECT CONCAT(vend_name,'(',v

讀書筆記《MySQL》之第一章瞭解SQL

文章目錄 瞭解SQL 資料庫基礎 什麼是資料庫 什麼是表 列和資料型別 行 主鍵 關於主鍵最好的習慣 什麼是SQL

sql第四版建表語句

看sql必知必會,苦於沒有相關的表進行練習,網上查詢,解決了問題,將內容整理如下: cmd登陸mysql(我使用的是xampp自帶的mysql,無法直接在cmd開啟,因需要提前將xampp底下mysql的bin目錄的絕對路徑加入到path環境變數中,然後進入cmd,輸入my

SQL》閱讀筆記

【自言自語】對於資料庫sql語言,之前都是用的時候再查,沒有系統的瞭解,用了一天半把這個書看完了,所以需要總結一下,不過,我沒有寫遊標、儲存過程這些,因為我覺得書中講的過淺了。等下一本書看完,或許有更好的理解。到時候,再寫關於那幾個方面的我覺得是不錯的。這段時間