Linux_数据库篇
欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神!
题目:MySQL的使用增删改查
版本号 : 1.0,0
作者 : @老王要学习
日期 : 2025.05.12
适用环境: Centos7
文档说明
本文档为《Linux 数据库篇 - MySQL 的使用增删改查》,版本 1.0.0,作者 @老王要学习,适用于 Centos7 环境。详细介绍了在 Linux 系统中使用 MySQL 进行数据库和表的创建、数据的插入、查询、修改及删除操作,包含操作步骤、代码示例与结果分析
环境准备
硬件要求
- 服务器: 2核CPU、2GB内存,20GB硬盘空间
- 网络: 确保服务器具有固定的IP地址,并且防火墙允许FTP端口(默认22端口)的通信
软件要求
- 操作系统:Centos7
- FTP软件:SecureCRT
- 软件包:MySQL5.7.44
一、创建表(CREATE TABLE)
1.0进入数据库
#启动MySQL服务
/etc/init.d/mysqld start
#进入MySQL数据库
mysql -uroot -p123
1.1创建数据库
CREATE DATABASE laowang;
#结果如下:
Query OK, 1 row affected (0.00 sec)
1.2查看所以数据库
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| laowang |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
1.3进入laowang数据库
USE laowang
#输出如下:
Database changed
1.4创建表
CREATE TABLE laowang (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
#结果如下:
Query OK, 0 rows affected (0.00 sec)
1.5创建表结构分析
id
| 字段 |
功能 |
| INT |
类型为整数 |
| PRIMARY KEY |
是主键 |
| AUTO_INCREMENT |
自动递增 |
username
| 字段 |
功能 |
| VARCHAR(50) |
字符串类型,最大长度50 |
| NOT NULL |
不能为空 |
email
| 字段 |
功能 |
| VARCHAR(100) |
字符串类型,最大长度100 |
| UNIQUE |
必须唯一 |
age
| 字段 |
功能 |
| INT |
整数类型 |
|
可以为空(默认设置) |
created_at
| 字段 |
功能 |
| TIMESTAMP |
时间戳类型 |
| CURRENT_TIMESTAMP |
默认值为当前时间,即记录插入时自动设置为当前时间 |
1.6查看所有表
SHOW TABLES;
+-------------------+
| Tables_in_laowang |
+-------------------+
| laowang |
+-------------------+
1 row in set (0.00 sec)
二、插入数据(INSERT)
2.1单条数据插入
INSERT INTO laowang (username, email, age)
-> VALUES ('wang', 'wang@163.com', 26);
#输出如下:
Query OK, 1 row affected (0.01 sec)
2.2多条数据插入
INSERT INTO laowang (username, email, age)
-> VALUES
-> ('zhang', 'zhang@163.com' ,28),
-> ('li', 'li@163.com' ,36);
#输出如下:
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
2.3插入数据分析
| 字段 |
功能 |
| INSERT INTO laowang |
在laowang表中添加数据 |
| (username, email , age) |
(添加姓名,邮箱,年龄) |
| VALUES |
插入一行或者多行数据 |
| ('wang', 'wang@163.com', 26); |
(姓名为wang,邮箱为wang@163.com,年龄为26)结束符 |
三、查询数据(SELECT)
3.1查询所有字段
SELECT * FROM laowang;
#结果如下:
+----+----------+---------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+---------------+------+---------------------+
| 1 | wang | wang@163.com | 26 | 2025-05-12 10:31:50 |
| 2 | zhang | zhang@163.com | 28 | 2025-05-12 10:35:25 |
| 3 | li | li@163.com | 36 | 2025-05-12 10:35:25 |
+----+----------+---------------+------+---------------------+
3 rows in set (0.00 sec)
3.2查询指定字段
SELECT username, email FROM laowang;
#输出如下:
+----------+---------------+
| username | email |
+----------+---------------+
| wang | wang@163.com |
| zhang | zhang@163.com |
| li | li@163.com |
+----------+---------------+
3 rows in set (0.00 sec)
3.3根据条件查询
#查看laowang表中,年龄大于26,且名字l开头的字段
SELECT * FROM laowang WHERE age > 26 AND username LIKE 'l%';
#输出如下:
+----+----------+------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+------------+------+---------------------+
| 3 | li | li@163.com | 36 | 2025-05-12 10:35:25 |
+----+----------+------------+------+---------------------+
1 row in set (0.00 sec)
3.4排序与分页
#查询laowang表中按age降序排列后的第2-3条记录
SELECT * FROM laowang ORDER BY age DESC LIMIT 2 OFFSET 1;
#输出如下:
+----+----------+---------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+---------------+------+---------------------+
| 2 | zhang | zhang@163.com | 28 | 2025-05-12 10:35:25 |
| 1 | wang | wang@163.com | 26 | 2025-05-12 10:31:50 |
+----+----------+---------------+------+---------------------+
2 rows in set (0.00 sec)
3.5聚合函数
#计算laowang表中,年龄的平均大小
SELECT COUNT(*) AS users, AVG(age) AS age FROM laowang;
#输出如下:
+-------+---------+
| users | age |
+-------+---------+
| 3 | 30.0000 |
+-------+---------+
1 row in set (0.00 sec)
3.6查询数据分析
| 字段 |
功能 |
| WHERE |
过滤条件 |
| AND |
连接符 |
| LIKE 'l%' |
索引匹配前缀'l' |
| ORDER BY |
排序 |
| DESC |
降序 |
| LIMIT 2 |
返回2条记录 |
| OFFSET 1 |
跳过前面1条记录,从第2条记录开始 |
| COUNT(*) |
统计laowang表的总行数 |
| AVG(age) |
计算所有用户的平均年龄 |
| AS |
别名 |
四、修改数据(UPDATE)
4.1修改单条数据
#修改laowang表中,id=1记录的email和age字段
UPDATE laowang
-> SET email = 'laowang@163.com', age =28
-> WHERE id = 1;
#输出如下:
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
4.2修改多条数据
UPDATE laowang
-> SET age = age + 1
-> WHERE age <30;
#输出如下:
Query OK, 3 rows affected (0.00 sec)
4.3查询表变化
SELECT * FROM laowang;
#输出如下:
+----+----------+-----------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+-----------------+------+---------------------+
| 1 | wang | laowang@163.com | 30 | 2025-05-12 10:31:50 |
| 2 | zhang | zhang@163.com | 30 | 2025-05-12 10:35:25 |
| 3 | li | li@163.com | 37 | 2025-05-12 10:35:25 |
+----+----------+-----------------+------+---------------------+
3 rows in set (0.00 sec)
4.4修改数据分析
| 字段 |
功能 |
| UPDATE |
修改表 |
| SET email |
修改email字段 |
| WHERE id = 1 |
匹配id为1 |
| SET age = age + 1 |
age字段自增1 |
| WHERE age <30 |
匹配age小于30 |
五、删除数据(DELETE)
5.1删除单条记录
DELETE FROM laowang WHERE id = 2;
#输出如下:
Query OK, 1 row affected (0.00 sec)
#结果如下:
SELECT * FROM laowang;
+----+----------+-----------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+-----------------+------+---------------------+
| 1 | wang | laowang@163.com | 30 | 2025-05-12 10:31:50 |
| 3 | li | li@163.com | 37 | 2025-05-12 10:35:25 |
+----+----------+-----------------+------+---------------------+
2 rows in set (0.00 sec)
5.2条件删除
#删除年龄大于30的条件
DELETE FROM laowang WHERE age > 30;
#输出如下:
Query OK, 1 row affected (0.00 sec)
#结果如下:
SELECT * FROM laowang;
+----+----------+-----------------+------+---------------------+
| id | username | email | age | created_at |
+----+----------+-----------------+------+---------------------+
| 1 | wang | laowang@163.com | 30 | 2025-05-12 10:31:50 |
+----+----------+-----------------+------+---------------------+
1 row in set (0.00 sec)
5.3清空表(保留表结构)
DELETE FROM laowang;
#输出如下:
Query OK, 1 row affected (0.00 sec)
#结果如下:
SELECT * FROM laowang;
Empty set (0.00 sec)
5.4删除表结构(数据与定义全部删除)
DROP TABLE laowang;
#输出如下:
Query OK, 0 rows affected (0.00 sec)
#结果如下:
mysql> SELECT * FROM laowang;
ERROR 1146 (42S02): Table 'laowang.laowang' doesn't exist