1. 程式人生 > >一小時教程 MySQL從安裝到使用 詳細步驟 完整圖文示例練習教程 學習筆記

一小時教程 MySQL從安裝到使用 詳細步驟 完整圖文示例練習教程 學習筆記

一、寫在最前面

【2018.11.12 11:44 重新排版】

此教程是北大地理資訊系統資料庫概論專業課,前兩週課程自學內容整理。

注意:資料庫概論課程作業要求只需要掌握在MySQL客戶端輸入SQL語句進行操作即可,不包括命令列部分。所以步驟1234已經涵蓋課程基礎要求。安裝windows和mac版本步驟沒有大差別。mac可以直接進行步驟2。

具體推薦的學習步驟如下:

# 建立資料表的時候可能會對collation、engine等選項感到困惑,先直接使用預設選項。

Learn more(可以跳過):

3.閱讀正文:正文23部分(正文01可以跳過)。

4.繼續閱讀正文剩餘部分456...的筆記。同時可參照下方連結每個頁面的前面部分:

# 如對網站上的例項訓練有疑問,可看正文的01部分。

5.閱讀上方連結的後面部分(如下圖)。

常用單詞提示

(R)DBMS (關係型)資料庫管理系統;

Database schema 資料庫架構;Tables 資料表;

Columns 列;Indexes 索引;Views 檢視;Events 事件;Fields 欄位;

Engine 儲存引擎(資料表型別,如InnoDB);Collation 字符集(儲存格式,如utf-8);

Duplicate entry 重複錄入;Syntax 語法;

屬性(Attribute):表中的一列即一個屬性,通常稱為欄位(Field);

二、正文部分

簡單介紹:

MySql資料庫是開放原始碼的關係型資料庫。它可以提供的功能有:支援sql語言、子查詢、儲存過程、觸發器、檢視、索引、事務、鎖、外來鍵約束和影像複製等。

MySQL 具有一套對字元、單詞以及特殊符號的使用規定,MySQL 通過執行 SQL 指令碼來完成對資料庫的操作,該指令碼由一條或多條 MySQL語句(SQL語句 + 擴充套件語句)組成,儲存時指令碼檔案字尾名一般為.sql。在控制檯下,MySQL 客戶端也可以對語句進行單句執行而不用儲存為.sql檔案(mysql 命令提示視窗)。

  • MySQL語法對大小寫不敏感,但是大寫更容易看出,建議使用大寫。
  • 但是所有的資料庫名,表名,表字段都是區分大小寫的。所以使用SQL命令時需要輸入正確的名稱。
  • 如果一條SQL語句太長,可以通過回車鍵建立一個新行,SQL語句的命令結束符為分號。

0.可以跳過:從命令列中連線mysql伺服器的步驟:

(使用root使用者登入,擁有最高許可權)

1.開啟命令列,進入安裝路徑C:\Program Files\MySQL\MySQL Server 5.7\bin。

2.輸入mysql -u root -p,回車。輸入密碼,回車。

3.登入成功,出現 mysql> 命令提示視窗,可以在上面執行SQL語句。

(之後和在MySQL客戶端輸入SQL語句是類似的)

1.可以跳過:命令列中MySQL資料庫命令

注意:在安裝路徑C:\Program Files\MySQL\MySQL Server 5.7\bin輸入以下命令(需要輸密碼)。

mysqladmin -u root -p create RUNOOB

建立 MySQL 資料庫 RUNOOB。

mysqladmin -u root -p drop RUNOOB

刪除資料庫RUNOOB,執行後會出現一個提示框,來確認是否真的刪除資料庫。

2.牢牢記住:管理MySQL的SQL語句

以下列出了使用Mysql資料庫過程中常用的命令(SQL語句):

(作為示範,資料庫名可以選擇world,資料表名可以選擇city)

CREATE SCHEMA 資料庫名;

建立 MySQL 資料庫 RUNOOB。

DROP SCHEMA 資料庫名;

刪除資料庫RUNOOB。

<分割線,補充幾句>

注意:重新整理之後才可以看到Navigator列表的相應變化。

</分割線,補充幾句>

USE 資料庫名;

選擇要操作的Mysql資料庫,使用該命令後所有Mysql命令都只針對該資料庫。

SHOW DATABASES;

列出 MySQL 資料庫管理系統的資料庫列表。

SHOW TABLES;

顯示指定資料庫的所有表,使用該命令前需要使用 use 命令來選擇要操作的資料庫。

SHOW COLUMNS FROM 資料表名;

顯示資料表的屬性,屬性型別,主鍵資訊 ,是否為 NULL,預設值等其他資訊。

SHOW INDEX FROM 資料表名;

顯示資料表的詳細索引資訊,包括PRIMARY KEY(主鍵)。

SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] [\G];

該命令將輸出Mysql資料庫管理系統的效能及統計資訊。

  • SHOW TABLE STATUS FROM 資料庫名;

顯示資料庫中所有表的資訊。

  • SHOW TABLE STATUS FROM 資料庫名 LIKE 'c%';

顯示錶名以c開頭的表的資訊。

  • SHOW TABLE STATUS FROM 資料庫名 LIKE 'c%'\G;

加上 \G,查詢結果按列列印。

3.瞭解一下:MySQL 資料型別

MySQL 有三大類資料型別, 分別為數字、日期\時間、字串, 這三大類中又更細緻的劃分了許多子型別:

數字型別

整數:tinyint、smallint、mediumint、int、bigint

浮點數:float、double、real、decimal

日期和時間

date、time、datetime、timestamp、year

字串型別

字串:char、varchar

文字:tinytext、text、mediumtext、longtext

二進位制(可用來儲存圖片、音樂等):tinyblob、blob、mediumblob、longblob

Learn more:

<分割線,補充幾句>

按照最開頭的5min入門連結,應該就可以建立如上的Schema(student)和Table(student_table1)並檢視。

實際上之前圖形介面的操作都會有對應的SQL語句顯示,所以按照那個學語法應該會比較簡單。

Anyway,下面就用這個Table來做演示。

</分割線,補充幾句>

4.牢牢記住:SQL語句——資料處理

插入資料:

INSERT INTO 資料表名 ( field1, field2,...fieldN )

VALUES ( value1, value2,...valueN );

示例:

INSERT INTO student_table1 (name, id, age, class )

VALUES (1, 2, 3, 4);

查詢資料:(SQL SELECT語句使用WHERE 子句)

SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M];

Learn more:

示例:

SELECT * from student_table1 WHERE name=1;

查詢資料通用句式:

SELECT field1, field2,...fieldN FROM 資料表名1, 資料表名2...

[WHERE condition1 [AND [OR]] condition2.....;

Learn more:

示例:

SELECT * from student_table1 WHERE name=1;

修改資料:(SQL UPDATE語句使用WHERE 子句)

UPDATE 資料表名 SET field1=new-value1, field2=new-value2

[WHERE Clause];

示例:

UPDATE `student`.`student_table1` SET `class`=NULL WHERE `name`='1' and`id`='2' and`age`='3' and`class`='4';

刪除資料:

DELETE FROM 資料庫名.資料表名 [WHERE Clause];

Learn more:

示例:

DELETE FROM `student`.`student_table1` WHERE `name`='2' and`id`='3' and`age`='4' and`class`='5';

不完全匹配查詢資料:

SELECT field1, field2,...fieldN FROM 資料表名

WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue';

# SQL LIKE 子句中使用百分號 %字元來表示任意字元,類似於UNIX或正則表示式中的星號 *。

# 如果沒有使用百分號 %, LIKE 子句與等號 = 的效果是一樣的。

示例:

SELECT * from student_table1 WHERE name LIKE '%1';

條件組合查詢資料:

SELECT expression1, expression2, ... expression_n

FROM tables [WHERE conditions]

UNION [ALL | DISTINCT]

SELECT expression1, expression2, ... expression_n

FROM tables [WHERE conditions];

# UNION 操作符用於連線兩個以上的 SELECT 語句的結果組合到一個結果集合中。多個 SELECT 語句會刪除重複的資料。

排序資料:(SELECT 語句使用 ORDER BY 子句將查詢資料排序後再返回)

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]];

# 讀取表中指定資料並按指定欄位欄位的升序/降序排列。

Learn more:

示例:

SELECT * from student_table1 ORDER BY name ASC;

分組資料:

SELECT column_name, function(column_name) FROM table_name

WHERE column_name operator value GROUP BY column_name;

Learn more:

示例:

請照著上面連結的例項做,依次執行語句即可。注意!第一段語句前加上:

CREATE SCHEMA RUNOOB;

USE RUNOOB;

多資料表查詢資料:(在SELECT, UPDATE和DELETE語句中使用JOIN子句)

Learn more:

示例:

請照著上面連結的例項做,下載資料庫並依次執行語句即可。

NULL 值處理:

IS NULL:當列的值是 NULL,此運算子返回 true。

IS NOT NULL:當列的值不為 NULL, 運算子返回 true。

<=>:比較操作符(不同於=運算子),當比較的的兩個值為 NULL 時返回 true。

# 查詢條件欄位為 NULL 時,命令可能無法正常工作。

# 關於 NULL 的條件比較運算比較特殊的。不能使用 = NULL 或 != NULL 在列中查詢 NULL 值 。

# NULL 值與任何其它值的比較(即使是 NULL)永遠返回 false,即 NULL = NULL 返回false 。

正則表示式:

5.理解一下:MySQL的事務概念

  • 事務(transaction)是使用者定義的一個數據庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作單位(保證成批的 SQL 語句要麼全部執行,要麼全部不執行)。
  • MySQL 事務主要用於處理操作量大,複雜度高的資料。
  • 事務的四個特性(ACID):原子性(A),一致性(C),隔離性(I),永續性(D)

事務控制語句:

BEGIN或START TRANSACTION;

顯式地開啟一個事務。

COMMIT;

也可以使用COMMIT WORK,不過二者是等價的。COMMIT會提交事務,並使已對資料庫進行的所有修改稱為永久性的。

ROLLBACK;

有可以使用ROLLBACK WORK,不過二者是等價的。回滾會結束使用者的事務,並撤銷正在進行的所有未提交的修改。

SAVEPOINT identifier;

SAVEPOINT允許在事務中建立一個儲存點,一個事務中可以有多個SAVEPOINT。

RELEASE SAVEPOINT identifier;

刪除一個事務的儲存點,當沒有指定的儲存點時,執行該語句會丟擲一個異常。

ROLLBACK TO identifier;

把事務回滾到標記點。

SET TRANSACTION;

用來設定事務的隔離級別。InnoDB儲存引擎提供事務的隔離級別有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事務處理實現:

1、用 BEGIN, ROLLBACK, COMMIT來實現

BEGIN 開始一個事務

ROLLBACK 事務回滾

COMMIT 事務確認

2、直接用 SET 來改變 MySQL 的自動提交模式:

SET AUTOCOMMIT=0 禁止自動提交

SET AUTOCOMMIT=1 開啟自動提交

Learn more:

6.牢牢記住:SQL語句——ALTER命令(資料表&欄位)

刪除、新增欄位:

ALTER TABLE 資料表名 DROP i;

ALTER TABLE 資料表名 ADD 新欄位名 欄位型別 [FIRST[AFTER 已有欄位名]];

修改欄位名稱、型別

ALTER TABLE 資料表名 CHANGE 欄位名 新欄位名 新欄位型別;

指定、修改、刪除欄位預設值:

ALTER TABLE 資料表名 MODIFY 欄位名 欄位型別 NOT NULL DEFAULT 預設值;

ALTER TABLE 資料表名 ALTER 欄位名 SET DEFAULT 預設值;

ALTER TABLE 資料表名 ALTER 欄位名 DROP DEFAULT;

示例:

ALTER TABLE student_table1 MODIFY id int NOT NULL DEFAULT 100;

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '11');

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '111');

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '1111');

SELECT * FROM student.student_table1;

修改資料表型別:

ALTER TABLE 資料表名 ENGINE = 新資料表型別;

# 檢視資料表型別可以使用 SHOW TABLE STATUS 語句。

修改資料表名:

ALTER TABLE 資料表名 RENAME TO 新資料表名;

筆記至此暫時結束啦,有興趣可以再找其他教程深入。