最近一直在写前端,差不多快要有一年没碰 MySQL 了。因为最近刚换域名,需要增加一下文章数量,所以这里就来简单写一下 MySQL 最基本的 增、删、改、查,顺便复习一下很早以前学的数据库。

这里只包括基本的 增、删、改、查,而且查询也不会涉及到复杂的查询,关于复杂查询以后再写。如果要看 PHP 操作 MySQL 可以访问:PHP PDO 简单使用教程

我用来演示的表格名称为:user ,表格的 id 是自增长的, 下面是表格结构:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_name | varchar(20)  | NO   |     |         |                |
| password  | varchar(128) | NO   |     |         |                |
| email     | varchar(40)  | NO   |     |         |                |
+-----------+--------------+------+-----+---------+----------------+

目前表格中没有任何数据。

增加

因为 id 是自增长的,所以插入的时候不需要写 id ,下面给 user 插入一条数据:

INSERT INTO user
(user_name, password, email)
VALUES
('Mark', '123456', '123456@qq.com')

其中的 INSERT INTO 就是插入语句,user 就是 表名,(user_name, password, email) 就是 字段名,VALUES 值,('Mark', '123456', '123456@qq.com') 就是 要插入的内容,分别对应 user_namepasswordemail 三个字段。这里为了方便查看我就分行写了,如果写在一行的话 语句之间需要空格分隔,还有 如果直接用命令行操作 MySQL 的话,语句结束需要分号。

下面演示一下不换行的写法:

INSERT INTO user (user_name, password, email) VALUES ('Mark', '123456', '123456@qq.com')

如果要一次插入多条数据可以这样写:

INSERT INTO user
(user_name, password, email)
VALUES
('Adam', '1234567', '1234567@qq.com'),
('John', '12345', '12345@qq.com')

删除

下面删除之前插入的 user_name 为:Mark 的数据:

DELETE FROM user
WHERE
user_name = 'Mark'

其中的 DELETE FROM user 就是从 user 表中删除数据,user是表名,WHERE 是条件,user_name = 'Mark' 就是 user_nameMark 的数据。注意!删除数据和更改数据 WHERE 很重要,如果没有 WHERE 和后面的条件内容会影响到所有的内容,如果删除数据的时候没有 WHERE 和后面的条件内容 MySQL 就会删除所有的数据。如果你要清空表格可以这样写:

DELETE FROM user

WHERE 条件语句的功能很强大,编程语言里常见的运算符它都支持,下面是 user 表的内容:

+----+-----------+----------+----------------+
| id | user_name | password | email          |
+----+-----------+----------+----------------+
|  2 | Adam      | 1234567  | 1234567@qq.com |
|  3 | John      | 12345    | 12345@qq.com   |
|  4 | George    | 123      | 123@qq.com     |
|  5 | Jack      | 12sdd    | 12@qq.com      |
|  6 | Steve     | sfjwi    | 234@qq.com     |
+----+-----------+----------+----------------+

下面删除 id 小于 3 的数据:

DELETE FROM user
WHERE
id < 3

id2 的数据,也就是 user_nameAdam 的数据会被删除。

下面删除 id64 之间的数据:

DELETE FROM user
WHERE
id < 6 AND id > 4

id5 的数据会被删除,这里的 AND 就类似于其它编程语言里的 &&

修改

下面是 user 表的内容:

+----+-----------+----------+--------------+
| id | user_name | password | email        |
+----+-----------+----------+--------------+
|  3 | John      | 12345    | 12345@qq.com |
|  4 | George    | 123      | 123@qq.com   |
|  6 | Steve     | sfjwi    | 234@qq.com   |
+----+-----------+----------+--------------+

下面把 Steve 改为:Mario

UPDATE user
SET
user_name = 'Mario'
WHERE
user_name = 'Steve'

其中的 UPDATE 是 更新,user 是 表名,SET 是 设置,SET 后面的 user_name = 'Mario' 就是设置 userMarioWHERE 是 条件,WHERE 后面的 user_name = 'Steve' 就是指定 user_nameSteve 的数据。注意!在更改数据的时候 WHERE 条件也很重要,如果没有 WHERE MySQL 会更改所有的数据。

如果要更改多个字段的内容可以这样写:

UPDATE user
SET
user_name = 'Chris',
email = 'chrls@163.com'
WHERE
user_name = 'Mario'

上面把 user_nameMariouser_name 改为Chrisemail 改为chris@163.com

关于 WHERE 的用法可以参考上面删除数据 WHERE 的用法。

查询

查询算是数据库中比较复杂的,不过这里只包括简单查询。

下面查询出 user 表的所有数据:

SELECT * FROM user

其中 SELECT 就是 查询,* 就是 所有字段,FROM 相当于是 值,user 是 表名。这里没有任何条件限制,所以会查询出 user 表的所有数据,如下:

+----+-----------+----------+---------------+
| id | user_name | password | email         |
+----+-----------+----------+---------------+
|  3 | John      | 12345    | 12345@qq.com  |
|  4 | George    | 123      | 123@qq.com    |
|  6 | Chris     | sfjwi    | chris@163.com |
+----+-----------+----------+---------------+

下面查询出所有 user_name 字段的数据:

SELECT user_name FROM user

输出内容如下:

+-----------+
| user_name |
+-----------+
| John      |
| George    |
| Chris     |
+-----------+

下面查询出所有 user_nameemail 字段的数据:

SELECT
user_name, email
FROM
user

输出内容如下:

+-----------+---------------+
| user_name | email         |
+-----------+---------------+
| John      | 12345@qq.com  |
| George    | 123@qq.com    |
| Chris     | chris@163.com |
+-----------+---------------+

查询语句也是可以用 WHERE 限制条件的,下面查询 Chrisemail

SELECT
email
FROM
user
WHERE
user_name = 'Chris'

下面查询出 user_nameChris 以外的所有数据:

SELECT
*
FROM
user
WHERE
user_name != 'Chris'

下面是输出的内容:

+----+-----------+----------+--------------+
| id | user_name | password | email        |
+----+-----------+----------+--------------+
|  3 | John      | 12345    | 12345@qq.com |
|  4 | George    | 123      | 123@qq.com   |
+----+-----------+----------+--------------+

下面查询出 user 表的所有数据,并按 id 从大到小 倒序输出:

SELECT
*
FROM
user
ORDER BY id DESC

输出内容如下:

+----+-----------+----------+---------------+
| id | user_name | password | email         |
+----+-----------+----------+---------------+
|  6 | Chris     | sfjwi    | chris@163.com |
|  4 | George    | 123      | 123@qq.com    |
|  3 | John      | 12345    | 12345@qq.com  |
+----+-----------+----------+---------------+

其中的 ORDER BY 就是 排序,id 就是 排序的字段名,DESC 就是倒序。DESC 是 倒序,ASC 或省略就是 顺序。目前排序对于数字和英文支持的比较好,中文目前只能按照 Unicode 编码来排序,不会按照字母或拼音排序,如果要让中文按照字母排序在存储的时候还需要存储一份拼音。

MySQL 还可以使用模糊查询,如果你只知道一部分条件就可以使用模糊查询。下面查询出所有 user_nameJ 开头的数据:

SELECT
*
FROM
user
WHERE
user_name LIKE 'J%'

输出内容:

+----+-----------+----------+--------------+
| id | user_name | password | email        |
+----+-----------+----------+--------------+
|  3 | John      | 12345    | 12345@qq.com |
+----+-----------+----------+--------------+

其中 LIKE 就是设置模糊查询,% 在最后就是查询以 % 前面的内容开头的数据,同样 % 在最前面就是查询以 % 后面的内容结尾的数据,如果前后都有 % 就会匹配中间的内容,比如下面的语句:

SELECT
*
FROM
user
WHERE
user_name LIKE '%小%'

只要中间包含 的数据都会被查询出来。

在数据比较多的情况下可能需要分页展示数据,MySQL 可以从指定位置输出指定数量的数据。

下面从第 0 条开始输出数据,共输出 10 条数据:

SELECT
*
FROM
user
LIMIT 0, 10

其中 LIMIT 后面的 0 就是起始位置,10 就是输出数据的数量。

以上就是 MySQL 最基本的 增、删、改、查,更复杂的查询以后再写。

相关文章: