天天看點

[Linux]經典面試題 - 資料庫管理 - MySQL

目錄

一、SQL語句

二、資料庫簡介

三、關系型資料庫

四、MySQL 安裝

五、MySQL 管理

5.1 使用者設定

5.1.1 建立使用者

5.1.2 使用者授權

5.2 管理指令

六、MySQL 資料結構

6.1 Text 類型

6.2 Number 類型

6.3 Date 類型

七、MySQL 庫&表操作

7.1 庫操作

7.1.1 建立庫

7.1.2 删除庫

7.1.3 選擇庫

7.2 表操作

7.2.1 建立表

7.2.2 删除表

7.2.3 查詢表

7.3 資料操作

7.3.1 插入資料

7.3.2 查詢資料

7.3.3 更改資料

參考:

MariaDB / MySQL資料類型-阿裡雲開發者社群 (aliyun.com)

MariaDB 教程_w3cschool

MySQL 教程 | 菜鳥教程 (runoob.com)

MariaDB Server Documentation - MariaDB Knowledge Base

可以把 SQL 分成兩個部分:資料操作語言(DML)和資料定義語言(DDL)

SQL 适用于執行查詢的文法。但是 SQL 語言也包含用于增删改查的文法。

增删改查語句構成 SQL 的 DML 部分:

SELECT - 查詢

UPDATE - 更改

DELETE - 删除

INSERT INTO - 增加

建立删除表格,定義索引(鍵),規定表間連結和設定限制的 DDL 語句:

CREATE DATABASE - 建立新資料庫

ALTER DATABASE - 修改資料庫

CREATE TABLE - 建立新表

ALTER TABLE - 變更(改變)資料庫表

DROP TABLE - 删除表

CREATE INDEX - 建立索引(搜尋鍵)

DROP INDEX - 删除索引

資料庫(DataBase)是按照資料結構來組織、存儲和管理資料的倉庫。

每個資料庫都有一個或多個不同的API用于對資料的增删改查。

RDBMS(Relational DataBase Management System),關系型資料庫。

關系型資料庫的一些術語:

資料庫(DataBase):資料庫是表的集合,可以了解為用來存放資料表的倉庫。

資料表(Table):表是資料的矩陣,看起來就像一個簡單的Excel表格。

列(Column):一列相同類型的資料。

行(Row):一組相關的資料。

主鍵(Primary Key):主鍵是唯一的,一個資料表中隻能包含一個主鍵,可以使用主鍵來查詢資料。

外鍵(Foreign key):外鍵用于關聯兩個表。

複合鍵(Composite key):複合鍵将多個列作為一個索引鍵,一般用于符合索引。

索引(Index):使用索引可快速通路資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似于書籍的目錄。

在 CentOS 7 之後的MySQL被其分支MariaDB代替,在存儲引擎方面采用XtraDB來代替MySQL的InnoDB。

檢視系統中的是否自帶MariaDB:

如果有,可以選擇解除安裝(因為系統自帶的版本可能會比較舊,存在相容性問題)

安裝 Mariadb:

初始化 Mariadb:

設定開機啟動:

驗證:

初始化root登入密碼:

登入資料庫:

在MySQL(MariaDB)中,添加使用者有兩種方式:

切換到mysql庫:

添加sky使用者,密碼為skybiubiu:

以skydb庫為例子:

通過GRANT指令進行授權,授予sky使用者SELECT,INSERT,UPDATE操作權限:

USE 資料庫名 - 選擇要操作的資料庫

SHOW DATABASES - 檢視所有資料庫

SHOW TABLES - 檢視指定庫的所有表

SHOW COLUMNS FROM 資料表 - 顯示資料表的屬性,屬性類型,主鍵資訊,NULL,預設值等資訊

SHOW INDEX FROM 資料表 - 顯示資料表的詳細索引資訊,包括主鍵。

SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] - 檢視表狀态

有三種主要的類型:Text(文本)、Number(數字)和 Date/Time(日期/時間)類型。

資料類型

描述

CHAR(size)

儲存固定長度的字元串(可包含字母、數字以及特殊字元)。在括号中指定字元串的長度。最多 255 個字元。

VARCHAR(size)

儲存可變長度的字元串(可包含字母、數字以及特殊字元)。在括号中指定字元串的最大長度。最多 255 個字元。注釋:如果值的長度大于 255,則被轉換為 TEXT 類型。

TINYTEXT

存放最大長度為 255 個字元的字元串。

TEXT

存放最大長度為 65,535 個字元的字元串。

BLOB

用于 BLOBs(Binary Large OBjects)。存放最多 65,535 位元組的資料。

MEDIUMTEXT

存放最大長度為 16,777,215 個字元的字元串。

MEDIUMBLOB

用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 位元組的資料。

LONGTEXT

存放最大長度為 4,294,967,295 個字元的字元串。

LONGBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 位元組的資料。

ENUM(x,y,z,etc.)

允許您輸入可能值的清單。可以在 ENUM 清單中列出最大 65535 個值。如果清單中不存在插入的值,則插入空值。注釋:這些值是按照您輸入的順序排序的。可以按照此格式輸入可能的值: ENUM('X','Y','Z')

SET

與 ENUM 類似,不同的是,SET 最多隻能包含 64 個清單項且 SET 可存儲一個以上的選擇。

TINYINT(size)

-128 到 127 正常。0 到 255 無符号*。在括号中規定最大位數。

SMALLINT(size)

-32768 到 32767 正常。0 到 65535 無符号*。在括号中規定最大位數。

MEDIUMINT(size)

-8388608 到 8388607 普通。0 to 16777215 無符号*。在括号中規定最大位數。

INT(size)

-2147483648 到 2147483647 正常。0 到 4294967295 無符号*。在括号中規定最大位數。

BIGINT(size)

-9223372036854775808 到 9223372036854775807 正常。0 到 18446744073709551615 無符号*。在括号中規定最大位數。

FLOAT(size,d)

帶有浮動小數點的小數字。在 size 參數中規定最大位數。在 d 參數中規定小數點右側的最大位數。

DOUBLE(size,d)

帶有浮動小數點的大數字。在 size 參數中規定最大位數。在 d 參數中規定小數點右側的最大位數。

DECIMAL(size,d)

作為字元串存儲的 DOUBLE 類型,允許固定的小數點。在 size 參數中規定最大位數。在 d 參數中規定小數點右側的最大位數。

這些整數類型擁有額外的選項 UNSIGNED。通常,整數可以是負數或正數。如果添加 UNSIGNED 屬性,那麼範圍将從 0 開始,而不是某個負數。

DATE()

日期。格式:YYYY-MM-DD注釋:支援的範圍是從 '1000-01-01' 到 '9999-12-31'

DATETIME()

*日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS注釋:支援的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

*時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的秒數來存儲。格式:YYYY-MM-DD HH:MM:SS注釋:支援的範圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME()

時間。格式:HH:MM:SS注釋:支援的範圍是從 '-838:59:59' 到 '838:59:59'

YEAR()

2 位或 4 位格式的年。注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

方法一:登入MySQL中,通過SQL語句建立。

IF NOT EXISTS - 如果不存在該資料庫則建立。

方法二:在bash中,利用mysqladmin指令建立。

同上兩種删除庫的方法:

登入MySQL中,通過SQL語句删除:

在Bash,通過mysqladmin指令删除:

進入mysql,使用SQL語句選擇庫:

登入MySQL中,通過SQL語句建立:

示例:

注意:<code>`</code>是反單引号,ESC下面那個,可加可不加。

NOT NULL - 該字段不能為空。

AUTO_INCREMENT - 自增,常用于主鍵,數值會自動加1。

PRIMARY KEY - 定義主鍵,可使用多列來定義主鍵,列間以逗号分隔。

ENGINE - 設定存儲引擎。

CHARSET - 設定編碼。

檢視庫中所有表:

檢視一個某個表頭的詳情:

DESCRIBE 可以簡寫為 DESC。

文法:

Clause - 從哪個表裡找。

LIMIT N - 設定傳回的記錄數。

OFFSET M - 查詢資料的偏移量,預設為0。

效果:

因為我插入了兩次資料,是以有兩條一樣的,留着下面更改的時候用。

将7.3.2中BookID為2的Title改為 I'm SkyBiuBiu

SQL文法: