Mysql筆記(附Mysql基礎書pdf版)

資料

Mysql入門很簡單.pdf 連接:https://pan.baidu.com/s/1SojegIqbWz8Dt8-iIjmJzA
提取碼:qt4asql

數據庫篇

SHOW DATABASES; //顯示數據庫系統中已經存在的數據庫數據庫

CREATE DATABASE 數據庫名; //建立數據庫函數

DROP DATABASE 數據庫名; //刪除數據庫編碼

表篇

注:在使用操做表語句前,首先要使用USE語句選擇數據庫。選擇數據庫語句的基本格式爲「USE 數據庫名」。不然會報錯,1046;blog

CREATE TABLE 表名 ( 屬性名 數據類型 [完整性約束條件],
屬性名 數據類型 [完整性約束條件],
屬性名 數據類型
);
表名不能爲SQL語句的關鍵字,一個表能夠有多個屬性。定義時,字母大小寫都可,各屬性之間用逗號隔開,最後一個屬性不須要加逗號。排序


主鍵索引

主鍵有惟一值
單字段主鍵
屬性名 數據類型 primary key //建立主鍵,寫在屬性名數據類型後面;
多字段主鍵
primary key(屬性名 1,屬性名2,屬性名n)
二者的組合能夠肯定惟一的一條記錄;字符串

外鍵qt

外鍵不必定必須爲父表的主鍵,但必須是惟一性索引,主鍵約束和惟一性約束都是惟一性索引;
外鍵能夠爲空值;字符編碼

設置外鍵的基本語法規則以下:
CONSTRAINT 外鍵別名 FOREIGN KEY(屬性 1.1,屬性1.2,屬性1.n)
REFERENCES 表名(屬性2.1,屬性2.2,屬性2.n)
其中,「外鍵別名」參數是爲外鍵的代號;「屬性1」參數列表是子表中設置的外鍵;「表名」參數是指父表的名稱;「屬性2」參數列表是父表的主鍵。

設置表的非空約束

設置表的惟一性約束

設置表的屬性值自動增長

查看錶結構

DESCRIBE 表名; // 查看錶基本結構語句,可縮寫爲desc 表名

SHOW CREATE TABLE 表名; //查看錶詳細結構語句 (包含存儲引擎、字符編碼)

刪除表

DROP TABLE 表名;//刪除沒有被關聯的普通表
刪除父表須要先將外鍵刪除,而後才能去刪除父表。

字段篇

//經過ALTER TABLE語句

ALTER TABLE 舊錶名 RENAME [TO] 新表名;//修改表名 TO參數是可選參數,是否在語句中出現不會影響語句的執行。

ALTER TABLE 表名 MODIFY 屬性名 數據類型; //修改字段的數據類型(能夠在此修改完整性約束條件)

ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 數據類型;//修改字段名和字段數據類型(兩項都不可爲空,都必需要填寫,否則會報錯)
MODIFY和CHANGE均可以改變字段的數據類型,不一樣的是,CHANGE能夠在改變字段數據類型的同時,改變字段名。

ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] [FIRST | AFTER 屬性名2]; //增長字段
屬性名1爲須要增長的字段的名稱,完整性約束條件、FIRST、AFTER都是可選參數,FIRST、AFTER用來安排新字段的存放位置。不然默認爲最後一個字段。

ALTER TABLE 表名 DROP 屬性名;// 刪除字段

ALTER TABLE 表名 MODIFY 屬性名 數據類型 FIRST|AFTER 屬性名2; //修改字段的排列位置

ALTER TABLE 表名 ENGINE = 存儲引擎名; // 更改表的存儲引擎
注:若是表中已經有不少的數據,改變引擎可能會形成意料以外的影響

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;//刪除表的外鍵約束,其中,「外鍵別名「參數指建立表時設置的外鍵的代號。

 

查詢數據

一、基本查詢語句

SELECT 屬性表
FROM 表名和視圖列表
[WHERE 條件表達式1]
[GROUP BY 屬性名1 [HAVING 條件表達式2]]
[ORDER BY 屬性名2 [ASC | DESC]]


"屬性列表"參數表示查詢的字段名;「表名和視圖列表」參數表示今後處指定的表或者視圖中查詢數據,表和視圖能夠有多個;「條件表達式1」參數指定查詢條件;「屬性名1」參數指按該字段中的數據進行分組;「條件表達式2」參數表示知足該表達式的數據才能輸出;「屬性名2」參數指按該字段中的數據進行排序,排序方式由ASC和DESC兩個參數指出;ASC參數表示按升序的順序進行排序,這是默認參數;DESC參數表示按降序的順序進行排序。

BETWEEN AND指定了某字段的取值範圍; IN 指定了某字段的取值範圍;IS NULL用來判斷某字段的取值是否爲空;ANDOR用來鏈接多個查詢條件。

IN關鍵字能夠判斷某個字段的值是否在指定的集合中。若是字段的值在集合中,則知足查詢條件,該記錄將被查詢出來;
[NOT] IN (元素1,元素2,... ,元素n)
各元素之間用逗號隔開,字符型元素須要加上單引號。

BETWEEN AND關鍵字能夠判讀某個字段的值是否在指定的範圍內(包含起始值和終止值)。若是字段的值在指定範圍內,則知足條件;

[NOT] BETWEEN 取值1 AND 取值2
「取值1」表示範圍的起始值,「取值2」表示範圍的終止值。

LIKE關鍵字能夠匹配字符串是否相等。
[NOT] LIKE '字符串'
「字符串」表示指定用來匹配的字符串,該字符串加單引號或者雙引號。參數的值可使一個完整的字符串,也能夠是包含百分號(%)或者下劃線(_)的通配符。
%」能夠表明任意長度的字符串,長度能夠爲0;
_」只能表示單個字符。

IS NULL關鍵字用來判斷字段的值是否爲空值(NULL),若是字段的值爲空值,則知足查詢條件。

IS [NOT] NULL

AND關鍵字用來聯合多個條件進行查詢,只有同時知足全部條件的記錄纔會被查詢出來。
條件表達式1 AND 條件表達式2 [...AND 條件表達式n]

OR關鍵字用來聯合多個條件進行查詢,但使用OR關鍵字時,只須要知足這幾個查詢條件的其中一個,就會被查詢出來。
條件表達式1 OR 條件表達式2 [...OR 條件表達式n]

注:OR能夠和AND一塊兒使用。當二者一塊兒使用時,AND要比OR先運算。

消除重複結果

SELECT DISTINCT 屬性名 // 「屬性名」參數表示要消除重複記錄的字段的名詞
eg: SELECT DISTINCT d_id FROM empliyee

對查詢結果進行排序

ORDER BY 屬性名 [ASC | DESC]
ASC(默認)表示按升序的順序進行排序;DESC表示按降序的順序進行排序;

分組查詢

GROUP BY 關鍵字能夠將查詢結果按某個字段或多個字段進行分組。字段中值相等的爲一組。
GROUP BY 屬性名 [HAVING 條件表達式][WITH ROLLUP]
「屬性名」是指按照該字段的值進行分組;「HAVING條件表達式」用來限制分組後的顯示;
WITH ROLLUP關鍵字將會在全部記錄的最後加上一條記錄。該記錄是上面全部記錄的總和。(int類型則值相加、字符類型則一一列舉出來)

一、單獨使用GROUP BY關鍵字,查詢的結果就是字段取值的分組狀況。但每組只顯示該組的第一條記錄。

二、GROUP BY關鍵字能夠和GROUP_CONCAT()函數一塊兒使用時,GROUP_CONCAT()函數會把每一個分組中指定字段值都顯示出來。

三、GROUP BY關鍵字與集合函數一塊兒使用時(集合函數包括COUNT()、SUM()、AVG()、MAX()、MIN());一般先使用GROUP BY關鍵字將記錄分組,而後每組都使用集合函數進行計算。在統計時常常須要使用GROUP BY關鍵字和集合函數。

四、GROUP BY關鍵字與HAVING 一塊兒使用,「HAVING條件表達式」能夠限制輸出的結果。

說明:「HAVING條件表達式」與「WHERE條件表達式」都是用來限制顯示的。可是,二者起做用的地方不同。「WHERE條件表達式」做用於表或者視圖,是表和視圖的查詢條件。「HAVING條件表達式」做用於分組後的記錄,用於選擇知足條件的組。

五、按多字段進行分組
GROUP BY 屬性名1,屬性名2
分組過程當中,先按照屬性1進行分組,遇到屬性1的值相等的狀況時,再把屬性1值相等的記錄按屬性2進行分組;

用LIMIT限制查詢結果的數量

LIMIT關鍵字有兩種使用方式:不指定初始位置、指定初始位置

一、不指定初始位置

LIMIT 記錄數 //僅顯示「記錄數」的條數

二、指定初始位置

LIMIT關鍵字能夠指定從哪條記錄開始顯示,而且能夠指定顯示多少條記錄。

LIMIT 初始位置,記錄數 //「初始位置」參數指定從哪條記錄開始顯示;「記錄數」參數辨識顯示的條數 注:位置從零開始計數

使用集合函數查詢(放置在SELECT後、FROM前)

集合函數包括COUNT()、SUM()、AVG()、MAX()、MIN();

COUNT()函數用來統計記錄的條數。(也可按照屬性名分別計算記錄的總數)
SUM()函數能夠求出表中某個字段取值的總和。 (SUM()函數只能計算數值類型的字段,包括INT()類型、FLOAT()類型、DOUBLE()類型、DECIMAL()類型。不能計算字符類型,計算結果都爲0)
AVG()函數能夠求出表中某個字段取值的平均值。(ZVG()函數常常與GROUP BY字段一塊兒使用,用來計算每一個分組的平均值)
MAX()函數能夠求出表中某個字段取值的最大值。(MAX()函數是使用字符對應的ASCII碼進行計算的)
MIN()函數能夠求出表中某個字段取值的最小值。

未完待續

相關文章
相關標籤/搜索