1. 程式人生 > >SQL 基礎學習: 和深度學習資料

SQL 基礎學習: 和深度學習資料

原子 rom 深度學習 允許 important href system 持久 cti

SQL is a standard language for storing, manipulating and retrieving data in databasee.

關系型數據庫:RDBMS(Relational Database Mangement System)

SQLite3:

Rails默認的輕量級數據庫,集成於Rails中,在db/development.sqlite3這個檔案中。

用途:單機用途。所以在實際部署的時候會換成MySQL等數據庫服務器。

MySQL:

目前流行的開源數據庫。這是一個數據庫服務器,要連接它需要數據庫的賬號密碼。

Mac上用 brew install mysql

安裝MySQL,推薦再安裝 Sequal Pro 這套Gui(Graphical User interface,圖形用戶界面)軟件


如果有人問你數據庫的原理,叫他看這篇文章http://blog.jobbole.com/100349/

一些學習資料:

https://www.udacity.com/course/intro-to-relational-databases--ud197

https://launchschool.com/books/sql/read/introduction

https://www.codecademy.com/learn/learn-sql

https://www.codecademy.com/learn/sql-analyzing-business-metrics

https://en.wikibooks.org/wiki/SQL_Exercises

https://pgexercises.com/

http://sqlzoo.net/wiki/SQL_Tutorial


rdbms的特點:

一 schema:使用前先定義tables和columns,同時定義每個column的Data Type.

Data Type:

varchar或text:

Integer,Decimal,Float:

Blob二進制:可以存放檔案。但是通常不建議把檔案直接塞數據庫,一來數據庫塞太大不容易備份和管理、二來沒有什麽好處,因為你也沒辦法針對二進制檔案進行條件搜尋和過濾。人們對於讀檔案也有心理準備會比較慢。所以通常只會在數據庫裏面紀錄檔案的 metadata 例如檔名、大小、MimeType 等等,而實際的檔案則放在檔案系統上,或是上傳到七牛或AWS S3等空間。

Boolean:

Date, Time, Datetime:

pasting

create_table :events do |t|
  t.string :name
  t.text   :description
  t.integer :capacity
  t.integer :user_id, :null => false //這個是限制constraint,這裏是不能為空;
大多驗證一般放在rails model中,這樣比較有彈性,在DB層是硬性條件,無法跳過。

  t.timestamps
end

二 SQL standard language (Structured Query Language)

所有關系型數據庫都使用SQL的結構化查詢語言,來操作database.for example:

1. INSERT INTO events VALUES ("RubyConf", 100); //插入一條數據到events表

2. SELECT * FROM events; //拿出所有數據

三 ACID(4個特性)

Transaction:a process of doing business.把一組動作打包一起執行。使用BEGIN;...COMMIT; 可以保證數據存取的正確性;要麽一起成功,要麽一起失敗。

Atomicity: 一個transaction就是一個原子。

Consistency:一致性,保證transaction前後數據庫的完整性沒有被破壞。

Isolation:隔離性:數據庫允許多個並發的transaction同時進行,互不幹擾。

Durability持久性:數據的修改是永久的。
這4個特性,讓關系型數據庫在多人連線操作數據庫的時候,保證數據的?。


SQL 基礎學習: 和深度學習資料