案例1:INSERT插入表记录 案例2:UPDATE和DELETE 案例3:SELECT查询表记录 案例4:WHERE简单匹配 案例5:WHERE高级匹配 案例6:整理查询结果 案例7:备份数据库资料 案例8:恢复数据库
1 案例1:INSERT插入表记录
1.1 问题mysql
本例要求之前一章的studb库stuinfo表为基础,学会表格记录的多种不一样插入方法,完成下列任务:sql
1)进入studb库,向 stuinfo表批量插入如图-1所示数据
2)确认表格stuinfo的数据内容
1.2 步骤数据库
实现此案例须要按照以下步骤进行。服务器
步骤一:进入studb库,向stuinfo表批量插入如下数据ide
记录内容以下:工具
NTD2020110007 周伯通 男 17012341234 昆嵛山全真教总部ui
NTD2020110008 王重阳 男 17012340001 昆嵛山全真教总部code
NTD2020110009 段王爷 男 17566666666 云南大理桃源山blog
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: 0 MariaDB [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: 0 MariaDB [studb]>
2)将 姓名='洪七公' 的人的姓名修改成 '洪七'
MariaDB [studb]> UPDATE stuinfo SET 姓名='洪七' WHERE 姓名='洪七公'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [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@123 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 31 Server version: 5.5.56-MariaDB MariaDB Server Copyright (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)]> quit Bye [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@123 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 33 Server version: 5.5.56-MariaDB MariaDB Server Copyright (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 selected MariaDB [(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)]> quit Bye [root@svr7 ~]#