千家信息网

表记录增删改查

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,案例1:INSERT插入表记录案例2:UPDATE和DELETE案例3:SELECT查询表记录案例4:WHERE简单匹配案例5:WHERE高级匹配案例6:整理查询结果案例7:备份数据库资料案例8:恢复
千家信息网最后更新 2025年01月20日表记录增删改查
案例1:INSERT插入表记录案例2:UPDATE和DELETE案例3:SELECT查询表记录案例4:WHERE简单匹配案例5:WHERE高级匹配案例6:整理查询结果案例7:备份数据库资料案例8:恢复数据库

1 案例1:INSERT插入表记录
1.1 问题

本例要求以前一章的studb库stuinfo表为基础,学会表格记录的多种不同插入方法,完成下列任务:

1)进入studb库,向 stuinfo表批量插入如图-1所示数据

2)确认表格stuinfo的数据内容
1.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:进入studb库,向stuinfo表批量插入以下数据

记录内容如下:

NTD2020110007 周伯通 男 17012341234 昆嵛山全真教总部

NTD2020110008 王重阳 男 17012340001 昆嵛山全真教总部

NTD2020110009 段王爷 男 17566666666 云南大理桃源山

INSERT插入记录操作:

MariaDB [studb]> INSERT  INTO  stuinfo  VALUES     -> ('NTD2020110007', '周伯通', '男', '17012341234', '昆嵛山全真教总部'),     -> ('NTD2020110008', '王重阳', '男', '17012340001', '昆嵛山全真教总部'),     -> ('NTD2020110009', '段王爷', '男', '17566666666', '云南大理桃源山');Query OK, 3 rows affected (0.01 sec)Records: 3  Duplicates: 0  Warnings: 0MariaDB [studb]>

步骤二:确认表格 stuinfo 的数据内容

查看表格内容,确认新增加的3条记录。

MariaDB [studb]> SELECT  *  FROM  stuinfo;+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛               || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛               || NTD2020110003 | 华筝      | 女     | 13705666777  | 蒙古大营                 || NTD2020110004 | 洪七公    | 男     | 13888888888  | 太湖北丐帮总舵           || NTD2020110005 | 欧阳锋    | 男     | 18777777777  | 西域白驼山庄             || NTD2020110006 | 黄药师    | 男     | 18999999999  | 东海桃花岛               || NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         || NTD2020110008 | 王重阳    | 男     | 17012340001  | 昆嵛山全真教总部         || NTD2020110009 | 段王爷    | 男     | 17566666666  | 云南大理桃源山           |+---------------+-----------+--------+--------------+--------------------------+9 rows in set (0.00 sec)MariaDB [studb]> 

2 案例2:UPDATE和DELETE
2.1 问题

本例要求学会UPDATE和DELETE的语句的操作方法,完成下列任务:

1)更新 stuinfo 表中的数据记录

将 姓名='黄药师' 的人的联系电话修改为 '13566778899'将 姓名='洪七公' 的人的姓名修改为 '洪七'

2)删除 stuinfo 表中 姓名='洪七公' 的数据记录

3)确认表格 stuinfo 的数据内容
2.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:更新stuinfo表中的数据记录

1)将 姓名='黄药师' 的人的联系电话修改为 '13566778899'

MariaDB [studb]> UPDATE  stuinfo  SET  联系电话='13566778899'  WHERE  姓名='黄药师';Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0MariaDB [studb]>

2)将 姓名='洪七公' 的人的姓名修改为 '洪七'

MariaDB [studb]> UPDATE  stuinfo  SET  姓名='洪七'  WHERE  姓名='洪七公';Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0MariaDB [studb]>

步骤二:删除stuinfo表中 姓名='洪七公' 的数据记录

此时表格中已经没有姓名为"洪七公"的记录(只有"洪七"),所有不会有记录被删除。

MariaDB [studb]> DELETE  FROM  stuinfo  WHERE  姓名='洪七公';Query OK, 0 rows affected (0.00 sec)MariaDB [studb]>

步骤三:确认表格stuinfo的数据内容

检查修改后的表格内容:

MariaDB [studb]> SELECT  *  FROM  stuinfo;+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛               || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛               || NTD2020110003 | 华筝      | 女     | 13705666777  | 蒙古大营                 || NTD2020110004 | 洪七      | 男     | 13888888888  | 太湖北丐帮总舵           || NTD2020110005 | 欧阳锋    | 男     | 18777777777  | 西域白驼山庄             || NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛               || NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         || NTD2020110008 | 王重阳    | 男     | 17012340001  | 昆嵛山全真教总部         || NTD2020110009 | 段王爷    | 男     | 17566666666  | 云南大理桃源山           |+---------------+-----------+--------+--------------+--------------------------+9 rows in set (0.00 sec)MariaDB [studb]> 

3 案例3:SELECT查询表记录
3.1 问题

本例要求学会SELECT语句的操作方法,查询stuinfo表,完成下列任务:

1)列出表中每一条记录的 姓名、联系电话

2)列出表中 性别='女' 的详细数据记录

3)列出表中 性别='女' 的记录的 姓名、联系电话

4)列出stuinfo表中 通信地址='东海桃花岛' 的详细数据记录
3.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:列出表中每一条记录的 姓名、联系电话

MariaDB [studb]> SELECT  姓名,联系电话  FROM  stuinfo;+-----------+--------------+| 姓名      | 联系电话     |+-----------+--------------+| 郭靖      | 13145201314  || 黄蓉      | 13145201413  || 华筝      | 13705666777  || 洪七      | 13888888888  || 欧阳锋    | 18777777777  || 黄药师    | 13566778899  || 周伯通    | 17012341234  || 王重阳    | 17012340001  || 段王爷    | 17566666666  |+-----------+--------------+9 rows in set (0.00 sec)MariaDB [studb]> 

步骤二:列出表中 性别='女' 的详细数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  性别='女';+---------------+--------+--------+--------------+-----------------+| 学号          | 姓名   | 性别   | 联系电话     | 通信地址        |+---------------+--------+--------+--------------+-----------------+| NTD2020110002 | 黄蓉   | 女     | 13145201413  | 东海桃花岛      || NTD2020110003 | 华筝   | 女     | 13705666777  | 蒙古大营        |+---------------+--------+--------+--------------+-----------------+2 rows in set (0.00 sec)MariaDB [studb]> 

步骤三:列出表中 性别='女' 的记录的 姓名、联系电话

MariaDB [studb]> SELECT  姓名,联系电话  FROM  stuinfo  WHERE  性别='女';+--------+--------------+| 姓名   | 联系电话     |+--------+--------------+| 黄蓉   | 13145201413  || 华筝   | 13705666777  |+--------+--------------+2 rows in set (0.00 sec)MariaDB [studb]>

步骤四:列出stuinfo表中 通信地址='东海桃花岛' 的详细数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址='东海桃花岛';+---------------+-----------+--------+--------------+-----------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址        |+---------------+-----------+--------+--------------+-----------------+| NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛      || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛      || NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛      |+---------------+-----------+--------+--------------+-----------------+3 rows in set (0.01 sec)MariaDB [studb]> 

4 案例4:WHERE简单匹配
4.1 问题

本例要求学会WHERE条件匹配的简单应用,针对stuinfo表中的数据执行查询,完成下列任务:

1)列出表中 通信地址!='东海桃花岛' 的数据记录

2)列出表中 通信地址='东海桃花岛' 而且 性别='女' 的数据记录

3)列出表中 通信地址='蒙古大营' 或者 性别='女' 的数据记录
4.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:列出表中 通信地址!='东海桃花岛' 的数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址!='东海桃花岛';+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110003 | 华筝      | 女     | 13705666777  | 蒙古大营                 || NTD2020110004 | 洪七      | 男     | 13888888888  | 太湖北丐帮总舵           || NTD2020110005 | 欧阳锋    | 男     | 18777777777  | 西域白驼山庄             || NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         || NTD2020110008 | 王重阳    | 男     | 17012340001  | 昆嵛山全真教总部         || NTD2020110009 | 段王爷    | 男     | 17566666666  | 云南大理桃源山           |+---------------+-----------+--------+--------------+--------------------------+6 rows in set (0.00 sec)MariaDB [studb]> 

步骤二:列出表中 通信地址='东海桃花岛' 而且 性别='女' 的数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址='东海桃花岛'  AND  性别='女';+---------------+--------+--------+--------------+-----------------+| 学号          | 姓名   | 性别   | 联系电话     | 通信地址        |+---------------+--------+--------+--------------+-----------------+| NTD2020110002 | 黄蓉   | 女     | 13145201413  | 东海桃花岛      |+---------------+--------+--------+--------------+-----------------+1 row in set (0.00 sec)MariaDB [studb]> 

步骤三:列出表中 通信地址='蒙古大营' 或者 性别='女' 的数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址='蒙古大营'  OR  性别='女';+---------------+--------+--------+--------------+-----------------+| 学号          | 姓名   | 性别   | 联系电话     | 通信地址        |+---------------+--------+--------+--------------+-----------------+| NTD2020110002 | 黄蓉   | 女     | 13145201413  | 东海桃花岛      || NTD2020110003 | 华筝   | 女     | 13705666777  | 蒙古大营        |+---------------+--------+--------+--------------+-----------------+2 rows in set (0.00 sec)MariaDB [studb]>

注意:WHERE条件子句适用于SELECT、UPDATE、DELETE操作
5 案例5:WHERE高级匹配
5.1 问题

本例要求学会WHERE条件匹配的高级应用,针对stuinfo表中的数据执行查询,完成下列任务:

1)列出表中 姓名 为 郭靖、黄蓉、欧阳锋、黄药师 的数据记录

2)列出表中 通信地址 包括 '全真教' 字串的数据记录

3)列出表中 姓名 只有 两个字 的数据记录
5.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:列出表中 姓名 为 郭靖、黄蓉、欧阳锋、黄药师 的数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  姓名  IN ('郭靖', '黄蓉', '欧阳锋', '黄药师');+---------------+-----------+--------+--------------+--------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址           |+---------------+-----------+--------+--------------+--------------------+| NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛         || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛         || NTD2020110005 | 欧阳锋    | 男     | 18777777777  | 西域白驼山庄       || NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛         |+---------------+-----------+--------+--------------+--------------------+4 rows in set (0.00 sec)MariaDB [studb]>

步骤二:列出表中 通信地址 包括 '全真教' 字串的数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址  LIKE '%全真教%';+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         || NTD2020110008 | 王重阳    | 男     | 17012340001  | 昆嵛山全真教总部         |+---------------+-----------+--------+--------------+--------------------------+2 rows in set (0.00 sec)MariaDB [studb]> 

步骤三:列出表中 姓名 只有 两个字 的数据记录
MariaDB [studb]> SELECT * FROM stuinfo WHERE 姓名 LIKE '__';
+---------------+--------+--------+--------------+-----------------------+
| 学号 | 姓名 | 性别 | 联系电话 | 通信地址 |
+---------------+--------+--------+--------------+-----------------------+
| NTD2020110001 | 郭靖 | 男 | 13145201314 | 东海桃花岛 |
| NTD2020110002 | 黄蓉 | 女 | 13145201413 | 东海桃花岛 |
| NTD2020110003 | 华筝 | 女 | 13705666777 | 蒙古大营 |
| NTD2020110004 | 洪七 | 男 | 13888888888 | 太湖北丐帮总舵 |
+---------------+--------+--------+--------------+-----------------------+
4 rows in set (0.00 sec)
MariaDB [studb]>

6 案例6:整理查询结果
6.1 问题

本例要求学会查询结果的排序和数量限制,针对stuinfo表中的数据执行查询,完成下列任务:

1)查询表中 性别='男' 的侠客人数

2)列出表中 通信地址='东海桃花岛' 的数据记录,按学号降序排列

3)列出表中 性别='男' 的第4~5条记录(LIMIT 3,2)

4)列出表中前3条数据记录
6.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:查询表中 性别='男' 的侠客人数

MariaDB [studb]> SELECT  count(*)  FROM  stuinfo  WHERE  性别='男';+----------+| count(*) |+----------+|        7 |+----------+1 row in set (0.00 sec)MariaDB [studb]> 

步骤二:列出表中 通信地址='东海桃花岛' 的数据记录,按学号降序排列

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  通信地址='东海桃花岛'  ORDER  BY  学号  DESC;+---------------+-----------+--------+--------------+-----------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址        |+---------------+-----------+--------+--------------+-----------------+| NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛      || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛      || NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛      |+---------------+-----------+--------+--------------+-----------------+3 rows in set (0.00 sec)MariaDB [studb]>

步骤三:列出表中 性别='男' 的第4~5条记录(LIMIT 3,2)

MariaDB [studb]> SELECT  *  FROM  stuinfo  WHERE  性别='男'  LIMIT  3,2;+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛               || NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         |+---------------+-----------+--------+--------------+--------------------------+2 rows in set (0.00 sec)MariaDB [studb]>

步骤四:列出表中前3条数据记录

MariaDB [studb]> SELECT  *  FROM  stuinfo  LIMIT  3;+---------------+--------+--------+--------------+-----------------+| 学号          | 姓名   | 性别   | 联系电话     | 通信地址        |+---------------+--------+--------+--------------+-----------------+| NTD2020110001 | 郭靖   | 男     | 13145201314  | 东海桃花岛      || NTD2020110002 | 黄蓉   | 女     | 13145201413  | 东海桃花岛      || NTD2020110003 | 华筝   | 女     | 13705666777  | 蒙古大营        |+---------------+--------+--------+--------------+-----------------+3 rows in set (0.00 sec)MariaDB [studb]>

7 案例7:备份数据库资料
7.1 问题

本例要求使用mysqldump工具对数据库进行备份,熟悉单库、多库的不同备份用法,完成下列任务:

1)备份studb库,保存为/root/studb.sql文件

2)备份studb库和mysql库,保存为/root/studb.sql文件

3)备份所有库,保存为/root/alldb.sql文件
7.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:备份studb库,保存为/root/studb.sql文件

[root@svr7 ~]# mysqldump   -uroot  -ppwd@123  studb  >  /root/studb.sql

步骤二:备份studb库和mysql库,保存为/root/studb.sql文件

[root@svr7 ~]# mysqldump  -uroot  -ppwd@123  --databases studb  mysql  >  /root/studb+mysql.sql

步骤三:备份所有库,保存为/root/alldb.sql文件

[root@svr7 ~]# mysqldump  -uroot  -ppwd@123  --all-databases  >  /root/alldb.sql

8 案例8:恢复数据库
8.1 问题

本例要求使用mysql工具恢复数据库资料,熟悉恢复单库、多库的不同方法,完成下列任务:

1)确保已经为 studb 库做好备份文件 /root/studb.sql

2)删除名为 studb 的库,检查结果

3)重建名为 studb 的空库

4)将备份文件 /root/studb.sql 导入名为 studb 的库

5)检查 studb 库中的表格数据
8.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:确保已经为 studb 库做好备份文件 /root/studb.sql

[root@svr7 ~]# ls  -lh  /root/studb.sql -rw-r--r--. 1 root root 11K 10月 24 20:20 /root/studb.sql

步骤二:删除名为 studb 的库,检查结果

1)登入数据库服务器

[root@svr7 ~]# mysql  -uroot  -ppwd@123Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 31Server version: 5.5.56-MariaDB MariaDB ServerCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> 

2)删除studb库

MariaDB [(none)]> DROP  DATABASE  studb;Query OK, 9 rows affected (0.00 sec)MariaDB [(none)]>

步骤三:重建名为 studb 的空库

MariaDB [(none)]> CREATE  DATABASE  studb;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]>MariaDB [(none)]> quitBye[root@svr7 ~]#

步骤四:将备份文件 /root/studb.sql 导入名为 studb 的库

若目标库studb已丢失,则必须提前建好空库

[root@svr7 ~]# mysql  -uroot  -ppwd@123  studb  <  /root/studb.sql [root@svr7 ~]#

步骤五:检查 studb 库中的表格数据

[root@svr7 ~]# mysql  -uroot  -ppwd@123Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 33Server version: 5.5.56-MariaDB MariaDB ServerCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> SELECT  *  FROM  stuinfo;ERROR 1046 (3D000): No database selectedMariaDB [(none)]> SELECT  *  FROM  studb.stuinfo;+---------------+-----------+--------+--------------+--------------------------+| 学号          | 姓名      | 性别   | 联系电话     | 通信地址                 |+---------------+-----------+--------+--------------+--------------------------+| NTD2020110001 | 郭靖      | 男     | 13145201314  | 东海桃花岛               || NTD2020110002 | 黄蓉      | 女     | 13145201413  | 东海桃花岛               || NTD2020110003 | 华筝      | 女     | 13705666777  | 蒙古大营                 || NTD2020110004 | 洪七      | 男     | 13888888888  | 太湖北丐帮总舵           || NTD2020110005 | 欧阳锋    | 男     | 18777777777  | 西域白驼山庄             || NTD2020110006 | 黄药师    | 男     | 13566778899  | 东海桃花岛               || NTD2020110007 | 周伯通    | 男     | 17012341234  | 昆嵛山全真教总部         || NTD2020110008 | 王重阳    | 男     | 17012340001  | 昆嵛山全真教总部         || NTD2020110009 | 段王爷    | 男     | 17566666666  | 云南大理桃源山           |+---------------+-----------+--------+--------------+--------------------------+9 rows in set (0.00 sec)MariaDB [(none)]> quitBye[root@svr7 ~]# 
0