MySQL 是一個支持結(jié)構(gòu)化查詢語言 (SQL) 的開源關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它有助于開發(fā)各種基于 Web 的應(yīng)用程序和在線內(nèi)容。MySQL 可以在 Linux/UNIX、macOS、Windows 等所有操作系統(tǒng)平臺上運(yùn)行,并且是 LAMP 堆棧的重要組件。 MySQL 是最受歡迎的數(shù)據(jù)庫系統(tǒng)之一,許多云提供商將其作為其服務(wù)的一部分提供。它使用帶有查詢和數(shù)據(jù)的命令,通過與數(shù)據(jù)庫通信來執(zhí)行任務(wù)和功能。本文介紹了最常用的 MySQL 語句,這些語句允許用戶有效地使用數(shù)據(jù)庫。
使用 MySQL 客戶端
MySQL 允許您使用命令行工具mysql之類的客戶端連接到服務(wù)器。使用-u和-p標(biāo)志提供您的用戶名和密碼:
mysql -u [username] -p mysql -u [username] -p [database]? 完成后,退出 MySQL 命令行客戶端,如下所示:
exit?使用用戶帳戶
要創(chuàng)建一個新用戶帳戶,請打開新終端以 root 身份訪問 MySQL,并創(chuàng)建一個新用戶,如下所示:
$ sudo mysql -u root -p ... mysql> CREATE USER 'username' IDENTIFIED BY 'password';? 您還可以通過指定他們必須從以下位置訪問數(shù)據(jù)庫的主機(jī)來設(shè)置具有受限訪問權(quán)限的用戶帳戶:
CREATE USER 'user'@'localhost'; CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';? 要指定遠(yuǎn)程連接,您可以將“l(fā)ocalhost”替換為機(jī)器的 IP 地址,如下所示:
CREATE USER 'username'@'ip_address' IDENTIFIED BY 'password';? 最后,您可以使用以下語句刪除帳戶:
DROP USER 'user'@'ip_address' IDENTIFIED BY 'password';?用戶帳戶權(quán)限
在繼續(xù)之前,您需要在新用戶帳戶上設(shè)置適當(dāng)?shù)臋?quán)限。這避免了數(shù)據(jù)庫內(nèi)不必要的用戶訪問的風(fēng)險。 您可以使用 GRANT、REVOKE 和 ALTER 等語句在 MySQL 中使用用戶權(quán)限。根據(jù)您希望用戶能夠執(zhí)行的操作,您可以分配全部或部分權(quán)限。這些權(quán)限是 ALL PRIVILEGES、SELECT、UPDATE、INSERT、DELETE、CREATE、DROP 和 GRANT OPTION。 您可以將插入數(shù)據(jù)的管理權(quán)限分配給屬于任何數(shù)據(jù)庫的所有表:
GRANT INSERT ON *.* TO 'username'@'ip_address';? 但是,您也可以通過在句點(diǎn)之前指定數(shù)據(jù)庫來限制用戶訪問。您可以允許用戶在數(shù)據(jù)庫中的所有表中選擇、插入和刪除數(shù)據(jù),?如下所示:
GRANT SELECT, INSERT, DELETE ON database.* TO 'user'@'ip_address' IDENTIFIED BY 'pa ssword';? 同樣,您可以通過在句點(diǎn)后指定表名來限制用戶對特定表的訪問。
GRANT SELECT, INSERT, DELETE ON database.table_name TO 'user'@'ip_address' IDENTIFIED BY 'password';? 您可以向特定數(shù)據(jù)庫中的每個表授予所有權(quán)限,?如下所示:
GRANT ALL PRIVILEGES ON database.* TO 'user'@'ip_address' IDENTIFIED BY 'password';? 要從單個數(shù)據(jù)庫撤消用戶的權(quán)限:
REVOKE ALL PRIVILEGES ON database.* FROM 'user'@'ip_address';? 您可以撤銷每個數(shù)據(jù)庫的所有用戶權(quán)限,如下所示:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'ip_address';? 最后,您可以像這樣設(shè)置密碼:
SET PASSWORD FOR 'user'@'ip_address' = PASSWORD('new_password');? 請注意使用散列明文密碼的 PASSWORD 函數(shù)。
使用數(shù)據(jù)庫
您可以創(chuàng)建一個名稱尚不存在的新數(shù)據(jù)庫:
CREATE DATABASE database_name;? 您可以將當(dāng)前數(shù)據(jù)庫切換到要使用的另一個數(shù)據(jù)庫:
USE database_name;? 最后,您可以刪除整個數(shù)據(jù)庫及其表,如下所示:
DROP DATABASE database_name;?使用表
表是MySQL 數(shù)據(jù)庫的主要結(jié)構(gòu)元素,將一組相關(guān)記錄分組為行。每行都有不同數(shù)據(jù)類型的列,可以是 CHAR、VARCHAR 和 TEXT 等。 創(chuàng)建表的一般語法如下:
CREATE TABLE table_name (column_1 data_type1, column_2 data_type2);? 您還可以通過選擇特定列從現(xiàn)有表創(chuàng)建新表,如下所示:
CREATE TABLE new_table_name AS SELECT column_1, column_2 FROM existing_table_name;? 您可以使用以下命令將數(shù)據(jù)添加到表中:
INSERT INTO table_name (column_1, column_2) VALUES (value_1, value_2);? 要刪除表,請使用 DROP TABLE 語句,如下所示:
DROP TABLE table_name;? 或者您保留表格但使用以下方法刪除其所有數(shù)據(jù):
TRUNCATE TABLE table_name;?訪問數(shù)據(jù)庫
使用以下語句顯示 MySQL DMS 中的所有可用數(shù)據(jù)庫:
SHOW DATABASES;? 同樣,您可以列出當(dāng)前數(shù)據(jù)庫中的所有表:
SHOW TABLES;? 要查看表中的所有列:
DESCRIBE table_name;? 要在表格中顯示列信息:
DESCRIBE table_name column_name;?查詢數(shù)據(jù)庫
MySQL 允許您使用SELECT語句從數(shù)據(jù)庫中查詢數(shù)據(jù)。您可以使用各種 MySQL 子句來擴(kuò)展其基本功能。 以下語句返回由表中每一行的兩列組成的結(jié)果集:
SELECT column1, column2 FROM table_name;? 或按如下方式顯示所有列:
SELECT * FROM table_name;? 您還可以使用以下條件查詢數(shù)據(jù)庫/表并檢索信息:
SELECT column1, column2 FROM table_name WHERE condition;? SELECT 語句還允許您使用 GROUP BY 子句按一列或多列對結(jié)果集進(jìn)行分組。然后,您可以使用聚合函數(shù)來計算匯總數(shù)據(jù):
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;?更新表
您可以使用 UPDATE 或 ALTER 語句修改表內(nèi)的數(shù)據(jù)。UPDATE 語句允許您更新現(xiàn)有的單個或多個記錄/行。 以下 MySQL 命令更改UserID為2的單個記錄的UserName和City:
UPDATE Users SET UserName = 'Alfred James', City= 'Munich' WHERE UserID = 2;? 雖然此示例更新了City為Munich的所有記錄的所有UserName:
UPDATE Users SET UserName='Juan' WHERE City='Munich';? 您可以像這樣向表中添加列:
ALTER TABLE table_name ADD COLUMN column_name;? 要從表中刪除列,請使用 ALTER TABLE 語句,如下所示:
ALTER TABLE table_name DROP COLUMN column_name;?初學(xué)者的 MySQL
在本文中,您已經(jīng)看到了最常見的 MySQL 命令。它們使您能夠管理用戶帳戶、更改數(shù)據(jù)庫結(jié)構(gòu)和操作數(shù)據(jù)。 一旦您熟悉了基礎(chǔ)知識,了解 MySQL 和安全性就會很有用。您的數(shù)據(jù)庫可能包含有價值和敏感的個人數(shù)據(jù),因此保護(hù)其免受窺探至關(guān)重要。 ?
編輯:黃飛
?
評論