大爺的SQL私房菜
夜色如墨,月涼如水,一輪皎潔的圓月高高地掛在夜空之上,平日裏鼾聲如雷的室友今夜也停止了打鼾,如此靜謐的夜晚,李有爲卻輾轉難眠。
時間悄然來到凌晨一點半,他已經在窗邊站了53分鐘23秒,現在他腦海裏全是大爺的一言一行、一舉一動,一顰一笑,這些彷彿就像一部經典電影值得他翻來覆去細細品味。
什麼是數據庫管理系統,什麼是數據庫,什麼是表,什麼是列,什麼是行,大爺今天講的這一系列話,現在他依然歷歷在目。
1:數據庫(database)
”數據庫就是存放數據的倉庫。“大爺的解釋很直白,對李有爲來講也和淺顯易懂,校長的辦公室裏有許多文件櫃,這一個個文件櫃其實就能算的上是一個個數據庫。
每個數據庫都有一個名字,比如學校數據庫,學生數據庫,教師數據庫,且是唯一的
2:表(table)
校長的文件櫃裏有許許多多的文件,這些不同的文件按照某種種類劃分,記錄着不同的信息,其中有學生的信息,老師的信息,學院專業相關資料,記錄學生信息的文件可以看做是學生表,記錄老師信息的文件可以看做老師信息表,對文件櫃這個數據庫來說,這些文件就是表.
每張表同樣也有一個名字,比如學生表,老師表,專業表,且名字是唯一的
3:列
表是由列組成的,所有表都由一個列或多個列組成,每一列存儲着一條特定的信息(也可以稱之爲屬性)。例如一個學生表,可能記載了學生的學校,姓名,性別,年齡等,這些分別記錄在各自的列上。
4:行
一個表是由許多行數據組成,例如學生表裏,每一行數據其實對應了一個學生的信息。
爲此大爺特地舉了個例子,形象生動的說明了數據表裏面的行和列。
學號 | 姓名 | 性別 | 年齡 | 愛好 |
---|---|---|---|---|
1404110004 | 尋歡 | 男 | 21 | 美女 |
1404110005 | 留香 | 男 | 22 | 美女 |
1404110006 | 中棠 | 男 | 23 | 美女 |
1404110007 | 中棠 | 男 | 23 | 美女 |
上面這個表格就可以看做是一個簡單的數據表,它一共有5列,分別記錄了學號、姓名、性別、年齡、愛好這五種屬性。一共有五行,分別記錄了學號1404110004這五位不同學號學生的信息。
5:主鍵
一個表的每一行數據都應該有唯一標識以此來區分和其他行,例如上面的學生表,如果沒有學號這個唯一標識,那麼06號和07號的中棠同學各方面的信息都是一樣的,就很容易學校方被搞混。
因此,主鍵就是在一個數據表裏,能夠用一列或者多列組合的,能夠唯一標識表中每一行數據的數據。
主鍵的優點:方便數據操縱和管理
例如:如果以後老師使用教務系統修改中棠同學的成績,如果沒有主鍵區分兩個中棠同學的卻別,那麼老實怎麼知道修改哪一個中棠同學的成績。
6:數據庫管理系統(DBMS)
現在,大部分人都直接稱MySQL、SQLserver爲“數據庫”,這其實是錯誤的叫法,MySQL、SQLserver這些嚴格意義上叫做數據庫管理系統(Database Management System)它們是操作和管理數據庫的管理系統,它們在幫助我們訪問數據庫。
爲此,大爺同樣舉了個形象生動的例子,校長辦公室的文件櫃是數據庫,文件庫裏的文件是數據表,那麼管理這些文件櫃、文件的人就是數據庫管理系統(DBMS)
7:SQL
SQL——結構化查詢語言(Structured Query Language),是一門專門用來與數據庫溝通的語言。
用句最直白的話來說,要想和數據庫打交道,就必須懂SQL,因爲數據庫只聽得懂這種話。
SQL簡單易學,功能強大,學完之後幾乎以與所有的數據庫打交道,可謂是一勞永逸,最關鍵的一點是,SQL誕生已經幾十年來,他的基本語法基本上從來沒有變過,而且現在大數據領域的HQL,spark sql相關的查詢,依然沿用的SQL的基本語法。
萬里長城永不倒,學習SQL相當好。
8:SQL語句
SQL語句是有許多簡單的英語單詞組成,這些單詞稱作爲“關鍵詞”,例如select、insert、update、delete、alter、create、drop等等,但從使用評率來講,select是這些關鍵詞中使用評率最高的(後端工程師會用到增刪改查,DBA機會都會用到,但是一般的數據從業工作者就只會和select打交道。)
select(選擇、選取)顧名思義,就是從一個或多個表中查詢數據。
其最基本結構爲 select 列名 from 庫名.表名
這句話的意思就是:
從某個數據庫的某個表裏面選擇、選取某些列相關的數據
(注:如果已經打開了某個數據庫,則可以直接省略庫名如果列名寫作“*”,則表示查詢所有的列名)
select * from test.human_base_info limit 10
現在我們在回過頭來,看這句SQL的意思,這句SQL表示,從test數據庫下的human_base_info表中查詢所有列的信息並且只展示10條記錄。
"*"是通配符,表示選擇數據表裏的所有字段
limit 是另外一個關鍵詞,表示限制查詢結果的條數。
limit 10 限制結果爲10條,limit 100 限制結果爲100條
如果不對結果做限制,則會把表中所有的結果全部展示。數據量一多立刻拉閘。