是的,在HTMl沒有寫完的時候,我又好死不死的開始學SQL,作為一個不會寫代碼的數據分析師(員),我也很無奈啊。
一、什么是 SQL?
SQL 指訪問數據庫的結構化查詢語言,是一種 ANSI (美國國家標準化組織)的標準計算機語言。可以用來查詢、取、插入、更新、刪除數據,也可以創建數據庫中的表、視圖等等。說人話:寫代碼告訴數據庫應該干點什么的讓電腦能聽懂的語言。想象一下自己在跟電腦對話吧。
然后因為世界上存在很多數據庫,比如:MySQL、Oracle等等,所以SQL語言有很多不同的版本,就像中文一樣,大家都講中國話,可是不同地方有不同地方的方言。
如果要創建網站的話,我們需要以下能力:RDBMS 數據庫程序(比如Access, Mysql等)、服務器端腳本語言(比如 PHP 或 ASP)、SQL、HTML / CSS語言能力。其中,RDBMS(Relational Database Management System)是關系型數據庫管理系統的意思。
二、SQL關鍵詞
一個數據庫通常包含一個或多個表,數據存儲在表(tables)中,表由列和行組成,每個表由一個名字標識,一行數據也叫一個記錄。SQL語句主要是用來操作數據庫中的對象,比如表、記錄等等。每個SQL語句可以用分號分割,不區分大小寫。
可以把 SQL 分為兩個部分:數據操作語言 (DML) 和 數據定義語言 (DDL)。下面對一些關鍵詞做筆記。
DML部分,主要是查詢和更新數據:
(1)SELECT - 從數據庫表中獲取數據
(2)UPDATE - 更新數據庫表中的數據
(3)DELETE - 從數據庫表中刪除數據
(4)INSERT INTO - 向數據庫表中插入數據
SQL 的數據定義語言 (DDL) 主要是對表、庫的定義
(1)CREATE DATABASE - 創建新數據庫
(1)ALTER DATABASE - 修改數據庫
(3)CREATE TABLE - 創建新表
(4)ALTER TABLE - 變更(改變)數據庫表
(5)DROP TABLE - 刪除表
(6)CREATE INDEX - 創建索引(搜索鍵)
(7)DROP INDEX - 刪除索引
三、具體SQL語法
以下例子是使用Access做的實驗(是的,我就是這么low)。
表是這個:
1.SQL SELECT 語句
select語句用于從表中選取數據,結果被存儲在一個結果表中(稱為結果集)。語法如下:
(1)select列名稱 from 表名稱
(2)select * from 表名稱
星號(*)代表選取所有列。
比如我們寫了一個:SELECT 姓名 from 表1,出來是這樣的結果;
寫SELECT * from 表1,結果就是這樣:
2. SELECT DISTINCT
這個語句用來選取唯一不同值,還是表1的例子,如果寫成:SELECT distinct 身份 from 表1,結果就是這樣,也就是說會反饋唯一值。
至于我為什么混著寫,是為了說明SQL確實不區分大小寫啊!(實際是懶)。
3.WHERE
WHERE是用來選擇條件的,語法是:
SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
運算符有:= 等于,<>不等于,>大于,<小于,>=大于等于,<=小于等于,BETWEEN在某個范圍內,LIKE搜索某種模式。在某些方言中: <> 可以寫為 !=。
比如我們寫:SELECT * from 表1 where 姓名=”李四”結果是這樣,就是翻譯成人話就是在表一中篩選出姓名=李四的所有列。
SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。如果是數值,請不要使用引號,數值的意思是:要進行加減等運算的數字。
4.AND和OR
AND 和 OR 用來結合多個條件
如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。
如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。
例如:select * from 表1 where (城市='北京' or 身份='學生') and 年齡<20
顯示的結果是這樣,翻譯成人話是:在表1中查找所有列顯示出城市在北京或者身份是學生的并且年齡小于20的人。此處需要注意,數值不加引號,文本要加引號。
5. ORDER BY
ORDER BY 語句用于根據指定的列對結果集進行排序,默認按照升序對記錄進行排序。如果想降序排列,可以使用DESC關鍵字。
比如,以年齡順序顯示記錄:SELECT 姓名,城市,年齡 from 表1 order by 年齡
結果是這樣的,可以看到是按年齡升序排列。翻譯成人話:從表1選擇姓名,城市,年齡三個字段同時按年齡升序順序輸出。
SELECT 姓名,年齡 from 表1 order by 姓名,年齡 desc
這個就是先按姓名升序排列,如果姓名相同,則按年齡降序排列。原表和結果如下,把上面用的表1加了一個李四的字段,還叫他表1吧,因為懶。
6. INSERT INTO
INSERT INTO表示插入,語法INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)。
(1)插入新行,insert into 表1 values ("8","二麻子","40","工程師","海南"),結果是這樣:?
(2)指定列插入指定字段:
insert into 表1(姓名,年齡)values('張飛','70')
select * from 表1,顯示如下圖,插入的數據,要重新select才能顯示。?
7.Update
Update語句用于修改、更新表中的數據。語法:
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
比如:update 表1 set 城市="上海" where 姓名="張飛"?
就是將姓名是張飛的記錄的城市更新為上海。結果這樣:
如果想換很多的話也可以,update 表1 set 城市="上海" where 姓名="張飛",像這樣:
8. DELETE
Delete是刪除的意思,主要用來刪除表中的行,語法是:
DELETE FROM 表名稱 WHERE 列名稱=值
比如,delete from 表1 where 姓名="李四",這樣姓名=李四的行就會被刪除啦。
再打開就變成了這樣:
也可以在不刪除表的情況下刪除所有的行,語法是:DELETE FROM table_name或DELETE * FROM table_name,刪除行之后表的結構、屬性和索引都還是完整的。