1. 程式人生 > >MySQL資料庫基礎知識彙總(學習筆記)

MySQL資料庫基礎知識彙總(學習筆記)

前言
此文章主要內容是簡單的記錄學習歷程,主要通途是日後查詢東西比較方便,當做字典來使用。內容的順序也是從簡單的入門開始的。內容無非就是增刪改查。
~~ ~~
關係資料庫往簡單了說就是一個一個的表,每個表都有行和列,表與表之間又有聯絡。其中列,就是一個一個的欄位,代表著你要存入資料的標題。行,就是一條一條的資訊,就是你填入對應列的資訊。
~~ ~~
入門操作:
登入MySQL:

>mysql -u root -p

進去xxx資料庫:

>use mysql;    #進入mysql資料庫

檢視當前資料庫中所有的表:

>show tables;

更改許可權(變更本地登入許可權為%):

>update user set Host=’%’ where User=’root’    #修改root的host為萬用字元%

重新整理許可權(一般用於修改密碼和更改許可權之類的)

>flush privileges

建立賬戶:

#語法是CREATE USER 'username'@'host' IDENTIFIED BY 'password';
>CREATE USER 'test'@'% *IDENTIFIED BY '123456';

設定或更改密碼:

#語法:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
> SET PASSWORD FOR 'test'@'%' = PASSWORD("123456");

賬戶授權:

#語法是GRANT privileges ON databasename.tablename TO 'username'@'host':
#解析:privileges是使用者的操作許可權(增刪改查什麼的),如果給予所有許可權使用ALL;databasename.tablename分別是資料庫名和表名,如果提供全部許可權使用*.*或者對某資料庫的所有表就是:資料庫名.*  ;後邊倆不說了。完事要重新整理許可權。
> GRANT ALL ON *.* TO 'test'@'%':
> flush privileges;

撤銷使用者授權:

#語法:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
> REVOKE ALL ON *.* FROM 'test'@'%;

刪除使用者:

#語法:DROP USER 'username'@'host';
>DROP USER ‘test’@’%’;

新建資料庫命令:

CREATE DATABASE 資料庫名;

刪除資料庫命令:

DROP DATABASE 資料庫名

~~ ~~
常見操作(XXX代表某資料庫,xxx代表某表):
檢視所有資料庫列表:

>SHOW DATABASES;

切換資料庫(選擇資料庫):

>USE XXX;

檢視資料庫內所有表的列表:

>SHOW TABLES;

檢索資料:

#檢索x列,在xxx表中。(先切換資料庫XXX) 
#ps:檢索多個列,就加’,’然後加列名。檢索所有列就用*
#ps2:也可以不進入表來操作,就是第一行直接用SELECT XXX.xxx
>USE XXX;
>SELECT x
>FROM xxx;

檢索資料2:

#如果你檢索的列存在很多重複項,可使用DISTINCT關鍵字,來過濾重複項,返回不同的值。
>SELECT DISTINCT x
>FROM xxx;

限制檢索結果:

#使用LIMIT子句,來指定返回多少行。
>SELECT DISTINCT x
>FROM xxx
>LIMIT 5;

索引後資料的排序(升序和降序):

#使用ORDER BY子句,預設升序,如果降序需在子句最後加DESC關鍵字。
#經常使用兩列同時排序,則可以使用‘,’隔開兩列的名稱。
>SELECT id ,name,age,tel
>FROM name_login
>ORDER BY id,name DESC;   #DESC需要時新增,僅標明參考位置

過濾資料(從檢索出的所有資料中,過濾出符合條件的資料):
操作符 說明
= 等於
<> 不等於
!= 不等於
< 小於
<= 小於等於
> 大於
>= 大於等於
BETWEEN 在指定的兩個值之間

#過濾條件使用WHERE子句
>SELECT id
>FROM name_login
>WHERE id = 1;   #這裡可以使用大於小於不等於等操作符,也可以用IS NULL,進行空值檢查。

資料過濾2(多重過濾):

#結合WHERE子句,使用AND,OR,IN或者NOT操作符(注意AND的優先順序高)。
#IN操作符是給定範圍的: IN (0,5)
#NOT是否定後邊的關鍵字的。
>SELECT *
>FROM name_login
>WHERE id < 5 AND id < 3;

使用萬用字元過濾LIKE:

#%代表任意次數,_代表單個字元
>SELECT *
>FROM name_login
>WHERE id LIKE ‘%’;

使用正則表示式過濾REGEXP:

>SELECT *
>FROM name_login
>WHERE id REGEXP ‘[12345]’;

建立聯結(建立兩個表的關係的查詢):

#聯結表1列1和表2列1
>SELEST 列2,列2,列3
>FROM 表1,表2
WHERE 表1.列1 = 表2.列1
ORDER BY 列1,列1;

新增資料:
新增行INSERT:

#一共兩種一種安位置,一種按關鍵字
>INSERT INTO name_login
>VALUES(’6’,’6’,’6’,’6’,’6’,’6’)
>INSERT INTO user_login(id,
login_name,
name,
age,
ad,
tel)
VALUES(‘6’,
‘login_name_6’,
‘666’,
‘6’,
‘6’,
‘6’);

更新資料(修改資料):

#可使用UPDATE語句
>UPDATE user_login
>set age = ‘7’
>where id = 6;   #一定要有where,否則就把所有行的age全給改了。
ps。此語句可以刪除列。

刪除資料(行):

>DELETE FROM user_login
>WHERE id = 7;
#請務必限定範圍,否則就清庫了。