在很多地方都需要操作數(shù)據(jù)庫,了解一些 SQL 語句有時(shí)十分必要,對(duì)于不是專門搞數(shù)據(jù)庫的人(比如我)來說,會(huì)一些基本操作就行了,比如選取數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)等。這是一篇記錄 SQL 常用操作的筆記。
目錄
- 選取數(shù)據(jù)(SELECT)
- 插入數(shù)據(jù)(INSERT INTO)
- 修改數(shù)據(jù)(UPDATE)
- 刪除數(shù)據(jù)(DELETE)
- 創(chuàng)建數(shù)據(jù)庫(CREATE DATABASE)
- 刪除數(shù)據(jù)庫(DROP DATABASE)
- 創(chuàng)建表(CREATE TABLE)
- 刪除表(DROP TABLE)
- 列出表(SHOW TABLES)
- 從本地文件導(dǎo)入數(shù)據(jù)(LOAD DATA LOCAL INFILE)
- 創(chuàng)建用戶(CREATE USER)
- 更改用戶權(quán)限(GRANT)
- 刪除用戶(DROP USER)
1.選取數(shù)據(jù)(SELECT):
SELECT 語句用于從表中選取數(shù)據(jù),結(jié)果以另一個(gè)表的形式被打印出來。
語法:
SELECT 字段名 FROM 表名稱 (WHERE 條件);
其中 WHERE 條件是可選的,如我需要從 test 表中選取 value 字段值為 1 的條目的 name 字段值,就要如下的語句:
SELECT name FROM test WHERE value=1;
2.插入數(shù)據(jù)(INSERT INTO):
INSERT 語句用于向表中插入新的行。
語法:
INSERT INTO 表名稱 VALUES (值1, 值2, ...);
如我需要向 test 表中插入 value 字段值為 1,name 字段值為 Ben 的行,我應(yīng)該如下寫(假如 name 字段在 value 字段前面):
INSERT INTO test VALUES ("Ben", 1);
其中值的順序是有講究的,要和表中字段的順序一致,此語句會(huì)按照語句中值的順序依次向表中不同字段寫入數(shù)據(jù)。這里將“Ben”寫在 1 的前面是因?yàn)槲壹僭O(shè)了表中 name 字段在 value 字段的前面。
3.修改數(shù)據(jù)(UPDATE):
UPDATE 語句用于修改表中的數(shù)據(jù)。
語法:
UPDATE 表名稱 SET 字段名 = 新值 WHERE 條件;
假如表 test 中有一行數(shù)據(jù)為:name=”Ben”, value=1,我要把其中的 value 修改為 2,那么我要如下寫:
UPDATE test SET value = 2 WHERE name = "Ben";
4.刪除數(shù)據(jù)(DELETE):
DELETE 語句用于刪除表中的行。
語法:
DELETE FROM 表名稱 (WHERE 條件);
其中條件是可選的,如果不寫條件則會(huì)刪除表中的所有數(shù)據(jù)。假如我要?jiǎng)h除 test 表中字段 name 值為 “Ben” 的一行數(shù)據(jù),那么我要如下寫:
DELETE FROM test WHERE name = "Ben";
5.創(chuàng)建數(shù)據(jù)庫(CREATE DATABASE):
CREATE DATABASE 語句用于創(chuàng)建一個(gè)新的數(shù)據(jù)庫。
語法:
CREATE DATABASE 數(shù)據(jù)庫名;
登入數(shù)據(jù)庫以后,假如我要?jiǎng)?chuàng)建一個(gè)名為 test 的數(shù)據(jù)庫,那么我要如下寫:
CREATE DATABASE test;
創(chuàng)建數(shù)據(jù)庫以后使用 USE 語句選取數(shù)據(jù)庫進(jìn)行操作,語法如下:
USE 數(shù)據(jù)庫名;
選取成功后會(huì)有提示,如“DATABASE CHANGED”等,這時(shí)就可以對(duì)數(shù)據(jù)庫中的表進(jìn)行前面所說的 4 種操作了(寫的順序好像有點(diǎn)不對(duì)?)。
6.刪除數(shù)據(jù)庫(DROP DATABASE):
DROP DATABASE 語句用于刪除一個(gè)數(shù)據(jù)庫和它里面的所有表。
語法:
DROP DATABASE 數(shù)據(jù)庫名;
7.創(chuàng)建表(CREATE TABLE):
CREATE TABLE 語句用于創(chuàng)建一張新表。
語法:
CREATE TABLE 表名 ( 字段名 數(shù)據(jù)類型, 字段名 數(shù)據(jù)類型... );
如,我想創(chuàng)建一張名為 test 的,有字符類型名為 id,整數(shù)類型名為 num 的兩個(gè)字段的表,就如下寫:
CREATE TABLE test ( id VARCHAR(255), num INT );
更多的數(shù)據(jù)類型查看 MySQL 官網(wǎng)。
8.刪除表(DROP TABLE):
DROP TABLE 語句用于刪除表。
語法:
DROP TABLE 表名;
刪除一個(gè)表會(huì)刪除里面的所有數(shù)據(jù)。
9.列出表(SHOW TABLES):
SHOW TABLES 語句用于列出當(dāng)前數(shù)據(jù)庫中的所有表。
語法:
SHOW TABLES;
10.從本地文件導(dǎo)入數(shù)據(jù)(LOAD DATA LOCAL INFILE)
由于安全考慮,從本地文件導(dǎo)入數(shù)據(jù)是默認(rèn)被禁用的,要啟用這個(gè)功能,需要在啟動(dòng) MySQL 客戶端的時(shí)候加上啟動(dòng)參數(shù) –local-infile ,如:
mysql -uroot -p --local-infile
LOAD DATA LOCAL INFILE 語句用于本地文件中導(dǎo)入數(shù)據(jù)。
語法:
LOAD DATA LOCAL INFILE '本地文件路徑' INTO TABLE 表名;
如,我想從 /data/data.txt 文件導(dǎo)入數(shù)據(jù)到 test 表中,文件中的數(shù)據(jù)之間可以用空格分隔,文件內(nèi)容如:
Line1: "String" 1(\r\n)
Line2: ...
其中 \r\n 是 win 格式的換行符,用換行符表名一個(gè)條目的結(jié)束,數(shù)據(jù)的順序要和表中字段的順序相同。導(dǎo)入命令為:
LOAD LOCAL DATA INFILE '/data/data.txt' INTO TABLE test;
11.創(chuàng)建用戶(CREATE USER)
CREATE USER 語句用于創(chuàng)建一個(gè)新用戶。
語法:
CREATE USER '用戶名'@'用戶所在的IP地址' IDENTIFIED BY '密碼';
上面“用戶所在的 IP 地址”是指允許此 IP 地址登錄此用戶。如:’test’@’localhost’ 是指只允許來自本地的連接登錄 test 用戶。另外,‘%’ 百分號(hào)表示任意 IP 地址,即此用戶接受來自任何 IP 的登錄。
密碼在設(shè)置的時(shí)候可能會(huì)受到“當(dāng)前數(shù)據(jù)庫所允許的密碼安全等級(jí)”的限制,如果不使用符合當(dāng)前密碼要求的密碼進(jìn)行設(shè)置,就會(huì)報(bào)錯(cuò)無法創(chuàng)建用戶。
12.更改用戶權(quán)限(GRANT)
GRANT 語句用于更改用戶對(duì)數(shù)據(jù)庫的操作權(quán)限。
語法:
GRANT 操作名稱 ON 操作對(duì)象 TO '用戶名'@'用戶所在的IP地址';
此命令可以將對(duì)“操作對(duì)象”的“操作名稱”權(quán)限授權(quán)給此用戶,如:
GRANT INSERT ON test.* TO 'test'@'localhost';
就將對(duì) test 數(shù)據(jù)庫中所有對(duì)象的插入操作權(quán)限授權(quán)給了 ‘test’@’localhost’ 用戶。注意,操作對(duì)象的格式為“數(shù)據(jù)庫.數(shù)據(jù)庫中的對(duì)象”,其中“”星號(hào)表示所有對(duì)象,“.*”代表所有數(shù)據(jù)庫的所有對(duì)象。還有,用戶是指用戶名加上 IP 地址,若用戶名相同但 IP 地址不同,會(huì)被看作為兩個(gè)不同的用戶。
13.刪除用戶(DROP USER)
DROP USER 語句用于刪除用戶。
語法:
DROP USER '用戶名'@'用戶所在的IP地址';
這樣就能刪除現(xiàn)有的用戶了。
以上。
個(gè)人博客原文地址:https://maphical.cn/link/?t=1IQQIE