sweetgum2012的專欄
瞭解MYSQL
- 資料庫
- 資料庫是一個以某種有組織的方式儲存的資料集合。
資料庫中通過 表 這種結構化的檔案來儲存某種特定型別的資料,例如:
studentID studentName studentAge 20101101 Li Hua 18 20101102 Andy 19 20101103 John 20 上面是一個統計班級學生資訊表結構, 一般在一個特定的資料庫中,儲存著多種多樣的 表 結構(表名應該是唯一標示的),各個表結構之間可以維持某種連線關係。
1. 表(table)
某種特定型別資料的結構化清單
表 中的記錄:
表中有 行 和 列 ,每一行代表表中的一條記錄,而每一列儲存某種特定的資訊,上面的班級學生資訊表中的第一列表示學生ID資訊。
2. 主鍵:
- 主鍵是表中一列或者一組列標識的,它的值能夠唯一的標識表中的每一行,是唯一的,不能為NULL,表中的主鍵需要滿足一下的條件:
- 任意兩行都不具有相同的主鍵值;
- 每一行都必須具有一個主鍵值(主鍵值不允許為NULL)
- 主鍵列中的值不允許修改或更新
3. SQL (structured Query Language)結構化查詢語言
SQL是一種專門用來和資料庫打交道的語言,許多資料庫管理系統廠商都對SQL語言進行了相應的擴充套件,例如MySQL,Oracle,SQL Server等等,但是大多數資料庫供應商都支援SQL。
MYSQL的安裝與開啟
1. Ubuntu中安裝MySql:
只需要線上安裝即可:
在安裝過程中可能需要為mysql root輸入密碼,需要記住密碼,利用下面的方式開啟MySQL:
1)檢查MySQL的服務是否啟動:
2)開啟service服務:
表示服務已經啟動,如果沒有啟動,可以使用如下的方式啟動mysql service:
3) 使用root賬號登陸:
其中-p表示輸入密碼,若沒有為root輸入密碼,則不用-p
2. 檢視系統中所有資料庫:
3. 連結資料庫:
4. 檢視特定資料庫的內容:
檢索資料庫
1. SELECT語句檢索一個或多個數據列:
SELECT 列名(可以是多個列名) FROM 表名;
上面為最簡單的檢索資料庫語句,例如:
可以列舉表中的多個列名,如果想檢索表中的所有列,可以使用 * 萬用字元, 例如:
如果希望不顯示相同的值,只希望顯示不同的值,可以使用關鍵字DISTINCT,例如:
2. 對檢索的結果進行排序
方式一:
SELECT 列名
FROM 表名
ORDER BY 一個列或者多個列名
方式二:
SELECT 列名
FROM 表名
ORDER BY 2,3//表示以列名錶中的第2列和第3列排序(優先第2列,第2列相同的情況下根據第3列排序)
通過 DESC(降序) 和 ASC(升序) 指定排序是降序還是升序,預設情況下是升序排列,例如:
注意 ORDER BY 語句應該是 SELECT 語句的最後一句
3. 通過where進行檢索過濾**
基本形式:
SELECT 列名 FROM 表名 WHERE 子句 ORDER BY 子句;
WHERE子句中的操作符:
操作符 說明 操作符 說明 = 等於 > 大於 <> 不等於 >= 大於等於 != 不等於 !> 不大於 < 小於 BETWEEN 在指定的兩個值之間 <= 小於等於 IS NULL 為NULL值 !< 不小於 運用IS NULL的例子:
在 WHERE 子句中使用高階資料過濾, 例如 AND、OR、 IN、 NOT:
SELECT pro_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4;
SELECT pro_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
IN 操作符後跟由逗號分隔的合法值,這些值必須在括號裡面, IN 的優點在於可以包含其他的SELECT語句,能夠更加動態的建立WHERE子句。
SELECT pro_id, prod_price, prod_name FROM Products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;
使用 萬用字元 進行過濾, 為了使用萬用字元,必須在WHERE 子句中使用 LIKE 關鍵字,有如下幾種萬用字元:
萬用字元 意義 % 任何字元出現任何次數 _ 只是匹配單個字元 [] 用來指定一個字符集 ····
下面是幾個使用萬用字元的例子:
注意:
1)不要過度使用萬用字元,能使用別的方式代替儘量使用別的方式
2) 儘量不要在開頭使用萬用字元建立計算欄位:
SELECT Concat(vend_name, ' (', vend_country, ')') FROM Vendors ORDER BY vend_name; --功能:SELECT完成以下的拼接: --儲存在vend_name中的名字; --包含一個空格和(的字串; --儲存在vend_country中的國家; --包含一個)的字串。
AS取別名: