MySQL 數據庫表操作與查詢實戰案例

MySQL 數據庫表操作與查詢實戰案例

在數據庫學習過程中,熟練掌握表的創建、數據插入及各類查詢操作是基礎且重要的技能。本文將通過實際案例,詳細介紹 MySQL 中數據庫表的設計、數據插入以及常用的查詢操作,幫助初學者快速上手。

項目一:產品相關數據庫設計與創建

一、數據庫及表結構設計

本項目主要創建產品相關的數據庫及員工表、訂單表、發票表,用于存儲產品業務相關數據。

二、數據庫與表的創建

  • 新建產品庫 mydb6_product
mysql> create database mydb6_product;
Query OK, 1 row affected (0.00 sec)
mysql> use mydb6_product;
Database changed
  • 在該庫中新建 4 張表,表結構要求如下:

    • employees 表:
      • 列 1:id,整型,主鍵
      • 列 2:name,字符串(最大長度 50 ),不能為空
      • 列 3:age,整型
      • 列 4:gender,字符串(最大長度 10 ),不能為空,默認值 unknown
      • 列 5:salary,浮點型
    mysql> create table employees(id int primary key,name varchar(50) not null,age int,gender varchar(10) not null default 'unknown',salary float);
    Query OK, 0 rows affected (0.02 sec)
    
    • orders 表:
      • 列 1:id,整型,主鍵
      • 列 2:name,字符串(最大長度 100 ),不能為空
      • 列 3:price,浮點型
      • 列 4:quantity,整型
      • 列 5:category,字符串(最大長度 50 )
    mysql> create table orders(id int primary key,name varchar(100) not null,price float,quantity int,category varchar(50));
    Query OK, 0 rows affected (0.01 sec)
    
    • invoices 表:
      • 列 1:number,整型,主鍵自增長
      • 列 2:order_id,整型,外鍵關聯到 orders 表的 id
      • 列 3:in_date,日期型
      • 列 4:total_amount,浮點型,要求數據大于 0
mysql> create table invoices(number int primary key auto_increment, order_id int ,in_date date,itotal_amount float check(total_amount>0),foreign key (order_id) references orders(id));
Query OK, 0 rows affected (0.02 sec)

項目二:員工信息數據庫操作實戰

一、數據庫及表結構創建

本項目創建員工信息數據庫,實現員工信息的插入與各類查詢操作。

-- 創建員工數據庫
create database mydb8_worker;-- 使用員工數據庫
use mydb8_worker;-- 創建員工表(t_worker)
create table t_worker(department_id int(11) not null comment '部門號',worker_id int(11) primary key not null comment '職工號',worker_date date not null comment '工作時間',wages float(8,2) not null comment '工資',politics varchar(10) not null default '群眾' comment '政治面貌',name varchar(20) not null comment '姓名',borth_date date not null comment '出生日期' 
);

二、數據插入操作

insert into t_worker values (101,1001,'2015-5-4',7500.00,'群眾','張春燕','1990-7-1');
insert into t_worker values (101,1002,'2019-2-6',5200.00,'團員','李名博','1997-2-8');
insert into t_worker values (102,1003,'2008-1-4',10500.00,'黨員','王博涵','1983-6-8');
insert into t_worker values (102,1004,'2016-10-10',5500.00,'群眾','趙小軍','1994-9-5');
insert into t_worker values (102,1005,'2014-4-1',8800.00,'黨員','錢有財','1992-12-30');
insert into t_worker values (103,1006,'2019-5-5',5500.00,'黨員','孫菲菲','1996-9-2');

三、查詢操作練習

  1. 查詢所有員工信息
mysql> select * from t_worker;
+---------------+-----------+-------------+----------+----------+-----------+------------+
| department_id | worker_id | worker_date | wages    | politics | name      | borth_date |
+---------------+-----------+-------------+----------+----------+-----------+------------+
|           101 |      1001 | 2015-05-04  |  7500.00 | 群眾     | 張春燕    | 1990-07-01 |
|           101 |      1002 | 2019-02-06  |  5200.00 | 團員     | 李名博    | 1997-02-08 |
|           102 |      1003 | 2008-01-04  | 10500.00 | 黨員     | 王博涵    | 1983-06-08 |
|           102 |      1004 | 2016-10-10  |  5500.00 | 群眾     | 趙小軍    | 1994-09-05 |
|           102 |      1005 | 2014-04-01  |  8800.00 | 黨員     | 錢有財    | 1992-12-30 |
|           103 |      1006 | 2019-05-05  |  5500.00 | 黨員     | 孫菲菲    | 1996-09-02 |
+---------------+-----------+-------------+----------+----------+-----------+------------+
6 rows in set (0.00 sec)

2. 查詢去重后的部門 ID

mysql> select distinct department_id from t_worker;
+---------------+
| department_id |
+---------------+
|           101 |
|           102 |
|           103 |
+---------------+
3 rows in set (0.01 sec)

3. 統計員工總數

mysql> select count(name) from t_worker;
+-------------+
| count(name) |
+-------------+
|           6 |
+-------------+
1 row in set (0.01 sec)

4. 查詢最高工資和最低工資

mysql> select max(wages),min(wages) from t_worker;
+------------+------------+
| max(wages) | min(wages) |
+------------+------------+
|   10500.00 |    5200.00 |
+------------+------------+
1 row in set (0.00 sec)

5. 計算平均工資和工資總和

mysql> select avg(wages),sum(wages) from t_worker;
+-------------+------------+
| avg(wages)  | sum(wages) |
+-------------+------------+
| 7166.666667 |   43000.00 |
+-------------+------------+
1 row in set (0.00 sec)

6. 創建工作日期表

mysql> create table 工作日期 as select worker_id,name,worker_date from t_worker;
Query OK, 6 rows affected (0.02 sec)
Records: 6  Duplicates: 0  Warnings: 0mysql> select * from 工作日期;
+-----------+-----------+-------------+
| worker_id | name      | worker_date |
+-----------+-----------+-------------+
|      1001 | 張春燕    | 2015-05-04  |
|      1002 | 李名博    | 2019-02-06  |
|      1003 | 王博涵    | 2008-01-04  |
|      1004 | 趙小軍    | 2016-10-10  |
|      1005 | 錢有財    | 2014-04-01  |
|      1006 | 孫菲菲    | 2019-05-05  |
+-----------+-----------+-------------+
6 rows in set (0.00 sec)

7. 查詢黨員的出生日期和姓名

mysql> select borth_date,name from t_worker where politics = '黨員';
+------------+-----------+
| borth_date | name      |
+------------+-----------+
| 1983-06-08 | 王博涵    |
| 1992-12-30 | 錢有財    |
| 1996-09-02 | 孫菲菲    |
+------------+-----------+
3 rows in set (0.00 sec)

8. 查詢工資在 4000 到 8000 之間的員工

mysql> select name,wages from t_worker where wages between 4000 and 8000;
+-----------+---------+
| name      | wages   |
+-----------+---------+
| 張春燕    | 7500.00 |
| 李名博    | 5200.00 |
| 趙小軍    | 5500.00 |
| 孫菲菲    | 5500.00 |
+-----------+---------+
4 rows in set (0.01 sec)

9. 查詢姓名以 “孫” 或 “李” 開頭的員工

mysql> select name from t_worker where name like '孫%' or name like '李%';
+-----------+
| name      |
+-----------+
| 李名博    |
| 孫菲菲    |
+-----------+
2 rows in set (0.00 sec)

10. 查詢非黨員且部門為 102 或 103 的員工姓名和工號

mysql> select name,worker_id from t_worker where politics != '黨員' and (department_id =102 or department_id = 103);
+-----------+-----------+
| name      | worker_id |
+-----------+-----------+
| 趙小軍    |      1004 |
+-----------+-----------+
1 row in set (0.00 sec)

11. 按出生日期排序查詢所有員工

mysql> select * from t_worker order by borth_date;
+---------------+-----------+-------------+----------+----------+-----------+------------+
| department_id | worker_id | worker_date | wages    | politics | name      | borth_date |
+---------------+-----------+-------------+----------+----------+-----------+------------+
|           102 |      1003 | 2008-01-04  | 10500.00 | 黨員     | 王博涵    | 1983-06-08 |
|           101 |      1001 | 2015-05-04  |  7500.00 | 群眾     | 張春燕    | 1990-07-01 |
|           102 |      1005 | 2014-04-01  |  8800.00 | 黨員     | 錢有財    | 1992-12-30 |
|           102 |      1004 | 2016-10-10  |  5500.00 | 群眾     | 趙小軍    | 1994-09-05 |
|           103 |      1006 | 2019-05-05  |  5500.00 | 黨員     | 孫菲菲    | 1996-09-02 |
|           101 |      1002 | 2019-02-06  |  5200.00 | 團員     | 李名博    | 1997-02-08 |
+---------------+-----------+-------------+----------+----------+-----------+------------+
6 rows in set (0.00 sec)

12. 按工資排序取前 3 名員工的工號和姓名

mysql> select worker_id,name from t_worker order by wages limit 3;
+-----------+-----------+
| worker_id | name      |
+-----------+-----------+
|      1002 | 李名博    |
|      1004 | 趙小軍    |
|      1006 | 孫菲菲    |
+-----------+-----------+
3 rows in set (0.00 sec)

13. 按部門統計黨員人數

mysql> select department_id,count(*) from t_worker where politics = '黨員' group by department_id;
+---------------+----------+
| department_id | count(*) |
+---------------+----------+
|           102 |        2 |
|           103 |        1 |
+---------------+----------+
2 rows in set (0.00 sec)

14. 按部門統計工資總和及平均工資(保留 2 位小數)

mysql> select department_id,sum(wages),round(avg(wages),2) from t_worker group by department_id;
+---------------+------------+---------------------+
| department_id | sum(wages) | round(avg(wages),2) |
+---------------+------------+---------------------+
|           101 |   12700.00 |                6350 |
|           102 |   24800.00 |             8266.67 |
|           103 |    5500.00 |                5500 |
+---------------+------------+---------------------+
3 rows in set (0.00 sec)

15. 查詢員工人數不少于 3 人的部門

mysql> select department_id,count(*) from t_worker group by department_id having count(*)>=3;
+---------------+----------+
| department_id | count(*) |
+---------------+----------+
|           102 |        3 |
+---------------+----------+
1 row in set (0.00 sec)

四、總結

本文通過實際案例介紹了 MySQL 數據庫的基本操作,包括數據庫和表的創建、數據插入以及各種常用查詢。這些操作是數據庫開發的基礎,掌握這些技能可以幫助我們更好地處理和分析數據。在實際應用中,還需要根據具體業務場景靈活運用這些查詢語句,結合索引優化等技術,提高查詢效率。

希望本文對初學者有所幫助,后續可以繼續深入學習多表連接查詢、子查詢、存儲過程等更高級的數據庫操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93077.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

THCV215一種高速視頻數據收發器,采用低電壓差分信號(LVDS)技術支持高速串行數據傳輸,支持1080p/60Hz高分辨率傳輸

THCV215 是一款符合 V-by-One HS 標準的 高速視頻數據收發器。THCV215和THCV216被設計為支持主機和顯示器之間的視頻數據傳輸。該芯片組可以在20MHz至100MHz的LVDS時鐘頻率下,僅通過一根差分電纜傳輸39bit視頻數據和3bit同步數據。該芯片組有兩個高速數據通道&#…

Linux 系統下 VS Code 降級至 1.85 版本教程:通過歷史版本網站解決兼容性問題

一、問題背景 當前使用的 VS Code 版本為 1.102.3,這一版本可能是未來版本、內部測試版或 Insiders 版本,而目前最新的穩定版屬于 1.8x 系列。由于版本過新,可能導致與部分插件(如舊版 Remote-SSH)或系統環境不兼容。…

一個基于 PyTorch 的完整模型訓練流程

一個基于 PyTorch 的完整模型訓練流程 flyfish訓練步驟具體操作目的1. 訓練前準備設置隨機種子、配置超參數(batch size、學習率等)、選擇計算設備(CPU/GPU)確保實驗可復現;統一控制訓練關鍵參數;利用硬件加…

ffmpeg,ffplay, vlc,rtsp-simple-server,推拉流命令使用方法,及測試(二)

一、常用命令 ffmpeg 推流命令 : ffmpeg -re -i input.mp4 -c copy -f flv rtmp://39.105.129.233/myapp/ffmpeg -re -i input.mp4 -c copy -f flv rtsp://39.105.129.233/myapp/-re 讀取流 -i 輸入文件 -f # 指定推流formatffplay 拉流命令 : ffplay rtmp://39.105.129.233/m…

使用行為樹控制機器人(三) ——通用端口

文章目錄一、通用端口功能實現1. 功能實現1.1 頭文件定義1.2 源文件實現1.3 main文件實現1.4 tree.xml 實現2. 執行結果使用行為樹控制機器人(一) —— 節點使用行為樹控制機器人(二) —— 黑板使用行為樹控制機器人(三) —— 通用端口有了上述前兩節我們已經可以實現節點間的通…

DataDome反爬蟲驗證技術深度解析:無感、滑塊與設備驗證全攻略

DataDome反爬蟲驗證技術深度解析:無感、滑塊與設備驗證全攻略 隨著網絡安全威脅的不斷演進,企業對數據保護的需求日益增強。DataDome作為業界領先的反爬蟲解決方案,以其三層防護機制在眾多知名網站中得到廣泛應用。本文將深入解析DataDome的…

RabbitMQ 消息轉換器詳解

RabbitMQ 消息轉換器詳解 一、為什么需要消息轉換器? RabbitMQ 的消息傳輸協議只識別字節流: 發送對象時,需要序列化成字節數組接收消息時,需要將字節數組反序列化成對象 如果不使用消息轉換器: 需要手動序列化和反序列…

內網穿透的應用-告別“現場救火”!用 cpolar遠程調試讓內網故障排查進入“云時代”

文章目錄前言**常見困境與解決方案****實際應用價值**1. Remote JVM Debug2. 系統要求與環境準備2.1 服務器環境2.2 本地開發環境3. 內網服務器準備及開始3.1 安裝cpolar配置支持遠程ssh登錄3.1.1 什么是cpolar?3.1.2 安裝cpolar3.1.3 注冊及配置cpolar系統服務3.1.…

Cherryusb UAC例程對接STM32內置ADC和PWM播放音樂和錄音(下)=>UAC+STM32 ADC+PWM實現錄音和播放

1. 程序基本框架整個程序框架, 與之前的一篇文章《Cherryusb UAC例程對接STM32內置ADC和DAC播放音樂和錄音(中)>UACSTM32 ADCDAC實現錄音和播放》基本一致, 只是這次將DAC替換成了PWM。因此這里不再贅述了。 2. audio_v1_mic_speaker_multichan_template.c的修改說明(略) 參…

1 JQ6500語音播報模塊詳解(STM32)

系列文章目錄 文章目錄系列文章目錄前言1 JQ6500簡介2 基本參數說明2.1 硬件參數2.2 模塊管腳說明3 控制方式3.1 通信格式3.2 通信指令4 硬件設計5 軟件設計5.1 main.c5.2 board_config5.2.1board_config.h5.2.2 board_config.c5.3 module_config5.3.1 module_config.h5.3.2 mo…

常用數據分析工具

Tableau丨Power BI丨FineBI丨SQL丨影刀丨Excel丨Python丨 參考視頻:【戴師兄】數據分析有哪些必學工具?2023最新版!Tableau丨Power BI丨FineBI丨SQL丨影刀丨Excel丨Python丨課程教程自學攻略_嗶哩嗶哩_bilibili 文檔資料: 【戴師兄…

OBOO鷗柏丨智能會議平板教學查詢一體機交互式觸摸終端招標投標核心標底參數要求

整機參數要求:55寸/65寸/75寸/85-86寸/98寸/100寸/110寸/115寸智能會議平板教學觸控一體機/智慧黑板觸摸屏招標投標核心標底參數要求1、整機屏幕采用≥采用超高清原廠原包原裝工業LCD液晶屏面板;具有高色域,顯示動態視頻、web及3D動畫時&…

無人機在環保監測中的應用:低空經濟發展的智能監測與高效治理

一、行業背景與技術革新 隨著全球環境問題日益嚴峻,傳統環保監測手段已難以滿足現代環境管理的需求。固定監測站點建設成本高、覆蓋范圍有限,地面巡查效率低下且存在安全風險。在此背景下,無人機技術憑借其獨特的空間優勢和技術特性&#xff…

PO、BO、VO、DTO、POJO、DAO、DO基本概念

一、圖解二、相關概念 1、PO(Persistant Object - 持久化對象) 核心定位: 直接與數據庫表結構一一映射的對象,通常用于 ORM(對象關系映射)框架(如 MyBatis、Hibernate)中。 特點&…

todoList清單(HTML+CSS+JavaScript)

🌏個人博客主頁: 前言: 前段時間學習了JavaScript,然后寫了一個todoList小項目,現在和大家分享一下我的清單以及如何實現的,希望對大家有所幫助 🔥🔥🔥文章專題&#xff…

Mac M1探索AnythingLLM+Ollama+知識庫問答

AnythingLLM內置 RAG、AI Agent、可視化/無代碼的 Agent 編排,支持多家模型與本地/云端向量庫,并提供多用戶與可嵌入的聊天組件,用來快速驗證“知識 模型 工具”拼成的 AI 應用。 1 AnythingLLM、Ollama準備 1)AnythingLLM 打…

【 Navicat Premium 17 完全圖形化新手指南(從零開始)】

Navicat Premium 17 完全圖形化新手指南(從零開始) 一、準備階段:清理現有環境 1. 刪除已創建的測試數據庫(如需重新開始)打開Navicat Premium 17 雙擊桌面圖標啟動程序在左側連接面板中找到你的MySQL連接(…

Web學習筆記5

Javascript概述1、JS簡介JS是運行在瀏覽器的腳本編程語言,最初用于Web表單的校驗。現在的作用主要有三個:網頁特效、表單驗證、數據交互JS由三部分組成,分別是ECMAscript、DOM、BOM,其中ECMAscript規定了JS的基本語法和規則&#…

部署一個開源的證件照系統

以下數據來自官方網站,記錄下來,方便自己 項目簡介 🚀 謝謝你對我們的工作感興趣。您可能還想查看我們在圖像領域的其他成果,歡迎來信:zeyi.linswanhub.co. HivisionIDPhoto 旨在開發一種實用、系統性的證件照智能制作算法。 它利用一套完善的AI模型工作…

Linux客戶端利用MinIO對服務器數據進行同步

接上篇 Windows客戶端利用MinIO對服務器數據進行同步 本篇為Linux下 操作,先看下我本地的系統版本 所以我這里下載的話,是AMD64 文檔在這 因為我這里只是需要用到客戶端,獲取數據而已,所以我只需要下載個MC工具用來數據獲取就可以…