案例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 ~]#