本人之前接觸的關系型數據庫主要是oracle和sqlserver,而對於mysql知之甚少,但查閱網上資料發現,mysql與oracle非常相似,所以學起來應該不會很費勁,在總結的時候可能更多的把關注點放在它與oracle的不同之處。
一、簡介
MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標准化的數據庫語言。MySQL是一個客戶端/服務器結構的實現,
它由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成。
MySQL的普及並不局限於開放源代碼團隊內。雖然它在個人計算機上運行(確實,MYSQL的開發一般在不昂貴的linux系統上進行),但它是可移植的,並且可以運行
在商用操作系統和一直到企業服務器的各種硬件上。此外,它的性能也足以和任何其他系統相匹敵,而且它還可以處理具有數百萬級的大型數據庫。
1.1 MYSQL優勢:
1、速度。MySQL 運行速度很快。開發者聲稱MySQL 可能是目前能得到的最快的數據庫。
2、使用簡單。MySQL 是一個高性能且相對簡單的數據庫系統,與一些更大系統的設置和管理相比,其復雜程度較低。
3、價格可免費。MySQL 對多數個人用戶來說是免費的。
4、支持查詢語言。MySQL 可以利用SQL(結構化查詢語言),SQL 是一種所有現代數據庫系統都選用的語言。也可以利用支持ODBC(開放式數據庫連接)的應用程序,ODBC 是Microsoft 開發的一種數據庫通信協議。
5、性能高。許多客戶機可同時連接到服務器。多個客戶機可同時使用多個數據庫。可利用幾個輸入查詢並查看結果的界面來交互式地訪問MySQL。
6、連接性和安全性優越。MySQL 是完全網絡化的,其數據庫可在因特網上的任何地方訪問,因此,可以和任何地方的任何人共享數據庫。而且MySQL 還能進行訪問控制,可以控制哪些人不能看到您的數據。
7、可移植性強。。MySQL 可運行在各種版本的UNIX 以及其他非UNIX 的系統(如Windows 和OS/2)上。
二、 關系型數據庫管理系統(RDBMS)
一個關系型表有一組命名的屬性(a t t r i b u t e )或列,以及一組元組(t u p l e )或行。有時列被稱為域,行被稱為記錄,列和行的交集通常被叫做單元。列標示位置,有作用域或數據類型,例如字符或整數。行自己就是數據。
關系表必須符合某些特定條件
1、存儲在單元中的數據必須是原子的。每個單元只能存貯一條數據,這也叫信息原則(Information Principle )。盡管在過去的數年中按某些違反這一條的方式已經建立了許多系統,但違反這一條將不能運用良好的設計原則。當一個單元包含多於一條的信息時,這叫做信息編碼(information coding )。在這樣的情況下,是否采用違背理論的方案是一個設計的選擇問題,盡管在多數情況下,結果證明這對數據的完整性是一不利的。
2、存儲在列下的數據必須具有相同的數據類型
3、每行必須唯一
4、列沒有順序
5、行沒有順序
6、列名稱唯一
關系模型兩個完整性原則:實體完整性原則簡潔地表明主鍵不能全部或部分地空缺或為空,引用完整性原則簡潔地表明一個外鍵必須為空或者與它所引用的主鍵當前存在的值相一致。
2.1 SQL與非過程化程序設計語言
SQL是一種典型的非過程化程序設計語言,這種語言的特點是:只指定哪些數據被操縱,至於對這些數據要執行哪些操作,以及這些操作是如何執行的,則未被指定。
與之相對應的是過程化程序設計語言,我們平常熟悉的各種高級程序設計語言都屬於這一范疇。這種語言的特點是:一條語句的執行是與其前後的語句和控制結構(如條件語句、循環語句等)相關的。
SQL這種語言被設計為不允許你按照某種特定的順序來取出記錄,因為這樣做會降低SQL Sever取記錄的效率。使用SQL,你只能按查詢條件來讀取記錄。
三、MYSQL數據處理
MySQL支持大量的列類型,它可以被分為3類:數字類型、日期和時間類型以及字符串(字符)類型。
3.1 字符串值:
在字符串中不僅可以使用普通的字符,也可使用幾個轉義序列,它們用來表示特殊的字符。每個轉義序列以一個反斜槓(“\”)開始,指出後面的字符使用轉義字符來解釋,而不是普通字符。注意NUL 字節與NULL 值不同;NUL 為一個零值字節,而NULL 代表沒有值。
引號在字符串中使用注意事項:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgIMjnufu0rsrH08PP4M2stcTS/brFwKjG8MC0tcSjrMTHw7TU2rSu1tDQ6NKq0v26xbXEtdi3vdbYuLTQtLjD0v26xby0v8mhozxicj4KICAgIMjnufu0rsrH08PB7c3itcTS/brFwKjG8MC0tcSjrNTysrvQ6NKqy6vQtM/g06bS/brFo6zWsb3T1Nq0rtbQyrnTw6OsuMPS/brFsruxu8zYyuK21LT9oaM8YnI+CiAgICDKudPDt7TQsbjco6zTw9eq0sbQ8sHQtcS3vcq9se3KvqO71eLW1re9t6iyu8iludzTw8C0vau0rsCoxvC1xMrHtaXS/brFu7nKx8ur0v26xaGjPC9wPgo8cD4gICAgPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140510/201405100857392.jpg" alt="\">
3.1.1 MySQL字符串列類型
3.2 數字值:
MySQL 支持說明為整數(無小數部分)或浮點數(有小數部分)的值。
MySQL 支持科學表示法。科學表示法由整數或浮點數後跟“e”或“E”、一個符號(“+”或“-”,必須具有)和一個整數指數來表示。
3.2.1 MySQL數字列類型
3.2.2 十六進制數字:
MySQL支持十六進制值。以十六進制形式表示的整數由“0x”後跟一個或多個十六進制數字(”0”到“9”及“a”到“f”)組成。十六進制數字不區分大小寫,但其前綴“0x”不能為“0X”。即0x0a 和0x0A 都是合法的,但0X0a 和0X0A 不是合法的。
在數字上下文,它們表現類似於一個整數(64位精度)。在字符串上下文,它們表現類似於一個二進制字符串,這裡每一對十六進制數字被變換為一個字符。
3.3 日期和時間列類型: