在很多地方都需要操作数据库,了解一些 SQL 语句有时十分必要,对于不是专门搞数据库的人(比如我)来说,会一些基本操作就行了,比如选取数据、插入数据、更新数据、删除数据等。这是一篇记录 SQL 常用操作的笔记。
目录
- 选取数据(SELECT)
- 插入数据(INSERT INTO)
- 修改数据(UPDATE)
- 删除数据(DELETE)
- 创建数据库(CREATE DATABASE)
- 删除数据库(DROP DATABASE)
- 创建表(CREATE TABLE)
- 删除表(DROP TABLE)
- 列出表(SHOW TABLES)
- 从本地文件导入数据(LOAD DATA LOCAL INFILE)
- 创建用户(CREATE USER)
- 更改用户权限(GRANT)
- 删除用户(DROP USER)
1.选取数据(SELECT):
SELECT 语句用于从表中选取数据,结果以另一个表的形式被打印出来。
语法:
SELECT 字段名 FROM 表名称 (WHERE 条件);
其中 WHERE 条件是可选的,如我需要从 test 表中选取 value 字段值为 1 的条目的 name 字段值,就要如下的语句:
SELECT name FROM test WHERE value=1;
2.插入数据(INSERT INTO):
INSERT 语句用于向表中插入新的行。
语法:
INSERT INTO 表名称 VALUES (值1, 值2, ...);
如我需要向 test 表中插入 value 字段值为 1,name 字段值为 Ben 的行,我应该如下写(假如 name 字段在 value 字段前面):
INSERT INTO test VALUES ("Ben", 1);
其中值的顺序是有讲究的,要和表中字段的顺序一致,此语句会按照语句中值的顺序依次向表中不同字段写入数据。这里将“Ben”写在 1 的前面是因为我假设了表中 name 字段在 value 字段的前面。
3.修改数据(UPDATE):
UPDATE 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 字段名 = 新值 WHERE 条件;
假如表 test 中有一行数据为:name=”Ben”, value=1,我要把其中的 value 修改为 2,那么我要如下写:
UPDATE test SET value = 2 WHERE name = "Ben";
4.删除数据(DELETE):
DELETE 语句用于删除表中的行。
语法:
DELETE FROM 表名称 (WHERE 条件);
其中条件是可选的,如果不写条件则会删除表中的所有数据。假如我要删除 test 表中字段 name 值为 “Ben” 的一行数据,那么我要如下写:
DELETE FROM test WHERE name = "Ben";
5.创建数据库(CREATE DATABASE):
CREATE DATABASE 语句用于创建一个新的数据库。
语法:
CREATE DATABASE 数据库名;
登入数据库以后,假如我要创建一个名为 test 的数据库,那么我要如下写:
CREATE DATABASE test;
创建数据库以后使用 USE 语句选取数据库进行操作,语法如下:
USE 数据库名;
选取成功后会有提示,如“DATABASE CHANGED”等,这时就可以对数据库中的表进行前面所说的 4 种操作了(写的顺序好像有点不对?)。
6.删除数据库(DROP DATABASE):
DROP DATABASE 语句用于删除一个数据库和它里面的所有表。
语法:
DROP DATABASE 数据库名;
7.创建表(CREATE TABLE):
CREATE TABLE 语句用于创建一张新表。
语法:
CREATE TABLE 表名 ( 字段名 数据类型, 字段名 数据类型... );
如,我想创建一张名为 test 的,有字符类型名为 id,整数类型名为 num 的两个字段的表,就如下写:
CREATE TABLE test ( id VARCHAR(255), num INT );
更多的数据类型查看 MySQL 官网。
8.删除表(DROP TABLE):
DROP TABLE 语句用于删除表。
语法:
DROP TABLE 表名;
删除一个表会删除里面的所有数据。
9.列出表(SHOW TABLES):
SHOW TABLES 语句用于列出当前数据库中的所有表。
语法:
SHOW TABLES;
10.从本地文件导入数据(LOAD DATA LOCAL INFILE)
由于安全考虑,从本地文件导入数据是默认被禁用的,要启用这个功能,需要在启动 MySQL 客户端的时候加上启动参数 –local-infile ,如:
mysql -uroot -p --local-infile
LOAD DATA LOCAL INFILE 语句用于本地文件中导入数据。
语法:
LOAD DATA LOCAL INFILE '本地文件路径' INTO TABLE 表名;
如,我想从 /data/data.txt 文件导入数据到 test 表中,文件中的数据之间可以用空格分隔,文件内容如:
Line1: "String" 1(\r\n)
Line2: ...
其中 \r\n 是 win 格式的换行符,用换行符表名一个条目的结束,数据的顺序要和表中字段的顺序相同。导入命令为:
LOAD LOCAL DATA INFILE '/data/data.txt' INTO TABLE test;
11.创建用户(CREATE USER)
CREATE USER 语句用于创建一个新用户。
语法:
CREATE USER '用户名'@'用户所在的IP地址' IDENTIFIED BY '密码';
上面“用户所在的 IP 地址”是指允许此 IP 地址登录此用户。如:’test’@’localhost’ 是指只允许来自本地的连接登录 test 用户。另外,‘%’ 百分号表示任意 IP 地址,即此用户接受来自任何 IP 的登录。
密码在设置的时候可能会受到“当前数据库所允许的密码安全等级”的限制,如果不使用符合当前密码要求的密码进行设置,就会报错无法创建用户。
12.更改用户权限(GRANT)
GRANT 语句用于更改用户对数据库的操作权限。
语法:
GRANT 操作名称 ON 操作对象 TO '用户名'@'用户所在的IP地址';
此命令可以将对“操作对象”的“操作名称”权限授权给此用户,如:
GRANT INSERT ON test.* TO 'test'@'localhost';
就将对 test 数据库中所有对象的插入操作权限授权给了 ‘test’@’localhost’ 用户。注意,操作对象的格式为“数据库.数据库中的对象”,其中“”星号表示所有对象,“.*”代表所有数据库的所有对象。还有,用户是指用户名加上 IP 地址,若用户名相同但 IP 地址不同,会被看作为两个不同的用户。
13.删除用户(DROP USER)
DROP USER 语句用于删除用户。
语法:
DROP USER '用户名'@'用户所在的IP地址';
这样就能删除现有的用户了。
以上。
个人博客原文地址:https://maphical.cn/link/?t=1IQQIE