mysql新手進階03

来源:https://www.cnblogs.com/king8/archive/2018/04/12/8805782.html
-Advertisement-
Play Games

當年忠貞為國酬,何曾怕斷頭? 如今天下紅遍,江山靠誰守? 業未就,身軀倦,鬢已秋。 你我之輩,忍將夙願,付與東流? 資料庫結構如下: 倉庫(倉庫號, 城市, 面積) 訂購單(職工號, 供應商號, 訂購單號, 訂購日期) 供應商(供應商號, 供應商名, 地址) 職工(倉庫號, 職工號, 工資) 具體數 ...


當年忠貞為國酬,何曾怕斷頭?
如今天下紅遍,江山靠誰守?
業未就,身軀倦,鬢已秋。
你我之輩,忍將夙願,付與東流?

資料庫結構如下:
倉庫(倉庫號, 城市, 面積)
訂購單(職工號, 供應商號, 訂購單號, 訂購日期)
供應商(供應商號, 供應商名, 地址)
職工(倉庫號, 職工號, 工資)

具體數據如下:

倉庫表:
倉庫號 城市 面積
WH1 北京 370
WH2 上海 500
WH3 廣州 200
WH4 武漢 400

訂購單表:
職工號 供應商號 訂購單號 訂購日期
E3 S7 OR67 06/23/01
E1 S4 OR73 07/28/01
E5 S4 OR76 05/25/01
E6 S6 OR77 05/26/01
E3 S4 OR79 06/13/01
E1 S2 OR80 08/29/01
E3 S3 OR90 09/01/01
E3 S3 OR91 07/13/01

供應商表:
供應商號 供應商名 地址
S2 名碩電子公司 蘇州
S3 振華電子廠 西安
S4 華通電子公司 北京
S6 607廠 鄭州
S7 愛華電子廠 北京

職工表:
倉庫號 職工號 工資
WH2 E1 1220
WH1 E3 1210
WH2 E4 1250
WH3 E5 1230
WH1 E6 1250

使用SQL語句完成:
DDL
1.寫出創建上述表的語句
命令:
create table 倉庫(倉庫號varchar(10) primary key,
城市varchar(10),
面積int);
create table 供應商(供應商號varchar(10) primary key,
供應商名varchar(30),
地址varchar(10));
create table 職工(倉庫號varchar(10),
職工號varchar(10) primary key,
工資int);
create table 訂購單(職工號varchar(10) references 職工(職工號),
供應商號varchar(10) references 供應商(供應商號),
訂購單號varchar(10) primary key,
訂購日期varchar(10));
DML
2.給出插入上述數據的insert語句
命令:
insert into 倉庫values('WH1', '北京', 370);
insert into 倉庫values('WH2', '上海', 500);
insert into 倉庫values('WH3', '廣州', 200);
insert into 倉庫values('WH4', '武漢', 400);

insert into 供應商values('S2', '名碩電子公司', '蘇州');
insert into 供應商values('S3', '振華電子廠','西安');
insert into 供應商values('S4', '華通電子公司', '北京');
insert into 供應商values('S6', '607廠', '鄭州');
insert into 供應商values('S7', '愛華電子廠', '北京');

insert into 職工values ('WH2', 'E1', 1220);
insert into 職工values ('WH1', 'E3', 1210);
insert into 職工values ('WH2', 'E4', 1250);
insert into 職工values ('WH3', 'E5', 1230);
insert into 職工values ('WH1', 'E6', 1250);

insert into 訂購單values ('E3', 'S7', 'OR67', '06/23/01');
insert into 訂購單values ('E1', 'S4', 'OR73', '07/28/01');
insert into 訂購單values ('E5', 'S4', 'OR76', '05/25/01');
insert into 訂購單values ('E6', 'S6', 'OR77', '05/26/01');
insert into 訂購單values ('E3', 'S4', 'OR79', '06/13/01');
insert into 訂購單values ('E1', 'S2', 'OR80', '08/29/01');
insert into 訂購單values ('E3', 'S3', 'OR90', '09/01/01');
insert into 訂購單values ('E3', 'S3', 'OR91', '07/13/01');
單表查詢
3.檢索職工關係中的所有信息
命令:
select * from 職工;
結果:

4.檢索供應商關係中的所有信息
命令:
select * from 供應商;
結果:

5.檢索六月之後的所有訂單
命令:
select * from 訂購單where 訂購日期like '06%' or 訂購日期like '07%'or 訂購日期like '08%'or 訂購日期like '09%'or 訂購日期like '10%'or 訂購日期like '11%'or 訂購日期like '12%';

結果:

6.檢索面積大於400的倉庫
命令:
select * from 倉庫where 面積> 400;
結果:

7.檢索哪些職工的工資多於1210
命令:
select * from 職工where 工資> 1210;
結果:

8.檢索倉庫是“WH1”或“WH2”並且面積大於400的城市
命令:
select 城市from 倉庫where (倉庫號= 'WH1' or 倉庫號= 'WH2') and 面積> 400;
結果:

9.找出倉庫面積在400到600的倉庫
命令:
select * from 倉庫where 面積between 400 and 600;
結果:

10.找出名中包含 “廠”的所有供應商的名
命令:
select 供應商名from 供應商where 供應商名like '%廠%';
結果:

11.找出不在西安的供應商
命令:
select * from 供應商where 地址!= '西安';
結果:

12.找出不在北京的倉庫
命令:
select * from 倉庫where 城市!= '北京';
結果:

13.按工資降序排列出所有職工的信息
命令:
select * from 職工order by 工資desc;
結果:

14.先按倉庫號升序排列,再按工資降序排列
命令:
select * from 職工order by 倉庫號asc, 工資desc;
結果:

15.在倉庫表中統計一下有幾個倉庫
命令:
select count(*) 倉庫數from 倉庫;
結果:

16.在職工表中統計一下有幾個倉庫
命令:
select count(distinct 倉庫號) 倉庫數from 職工;
結果:

17.求總的倉庫面積
命令:
select sum(面積) 總面積from 倉庫;
結果:

聚合查詢
18.每個職工的訂單數
命令:
select 職工號, count(訂購單號) 訂單數from 訂購單group by 職工號;
結果:

19.訂單數大於3的職工
命令:
select 職工號, count(訂購單號) 訂單數from 訂購單group by 職工號having count(訂購單號) > 3;
結果:

多表查詢
20.找出在面積大於400的倉庫中工作的職工
命令:select 職工號from 職工, 倉庫where 職工.倉庫號= 倉庫.倉庫號and 面積> 400;

結果:

21.找出在北京工作的職工和他們的工資情況
命令:select 職工號, 工資from 職工, 倉庫where 職工.倉庫號= 倉庫.倉庫號and 城市= '北京';

結果:

22.找出工資大於1215的職工和他們所在的城市
命令:select 職工號, 城市from 職工, 倉庫where 職工.倉庫號= 倉庫.倉庫號and 工資> 1215;

結果:

子查詢
23.哪些城市至少有一個訂單(從倉庫角度考慮)
命令:select 城市from 倉庫, 訂購單, 職工where 訂購單.職工號= 職工.職工號and 倉庫.倉庫號= 職工.倉庫號group by 城市having count(*) >= 1;

結果:

24.找出沒有任何訂單的城市
命令:select 城市from 倉庫where 倉庫號not in (select 倉庫號from 職工where 職工號in (select 職工號from 訂購單));

結果:

25.找出和E4有同樣工資的所有職工
命令:
select * from 職工where 工資= (select 工資from 職工where 職工號= 'E4');
結果:

26.找出倉庫面積大於400的倉庫的所有職工
命令:select * from 職工where 倉庫號in (select 倉庫號from 倉庫where 面積> 400);

結果:

27.找出供應商在西安的職工和他們的工資情況
命令:

結果:

28.找出不在北京倉庫里工作的職工
命令:select 職工號, 工資from 職工where 倉庫號not in (select 倉庫號from 倉庫where 城市= '北京');

結果:

29.找出在北京倉庫里工作的職工
命令:select 職工號, 工資from 職工where 倉庫號in (select 倉庫號from 倉庫where 城市= '北京');

結果:

30.求廣州和上海倉庫職工的總工資
命令:select sum(工資) 總工資from 職工where 倉庫號in (select 倉庫號from 倉庫where 城市in('廣州', '上海'));

結果:

31.求所有職工工資都大於1210的倉庫的平均面積
命令:select avg(面積) from 倉庫where 倉庫號in (select 倉庫號from 職工 group by 倉庫號having min(工資) > 1210);

結果:

32.求上海倉庫中職工的最高工資
命令:select max(工資) 最高工資from 職工where 倉庫號in (select 倉庫號from 倉庫where 城市= '上海');

結果:

33.訂單數大於或等於2的職工的工資
命令:select 工資from 職工where 職工號in (select 職工號from 訂購單group by 職工號having count(*) >= 2);
結果:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 預設情況下,mysql.db表中包含的行表示任意用戶可以訪問test資料庫和test_開頭的資料庫。這些行的User欄位的值為空,表示匹配任意用戶。這意味著這些資料庫(test資料庫和test_開頭的資料庫)預設可以被任意用戶使用(即使沒有許可權的用戶)。 mysql.db 預設設置: 初始化的mys ...
  • 最近在部署Zabbix時需要用腳本取得一些MySQL的返回參數,需要是numberic格式的,但是調用腳本時總是輸出這一句: grep -v也是處理不掉的,很是煩人,在網上翻了翻解決掉,記錄於此: Mysql命令有個如下參數: 因此編輯一個password.txt的文件: 腳本中的MySQL連接使用 ...
  • 這裡要分享的HanLP是我在學習使用大快DKhadoop大數據一體化平臺時使用到的自然語言處理技術,使用這個組建可以很高效的進行自然語言的處理工作,比如進行文章摘要,語義判別以及提高內容檢索的精確度和有效性等。 本想找個通俗的案例來介紹一下HanLP,一時間也沒想到什麼好的案例,索性就從HanLp... ...
  • 前言 我在上篇博客 “Spring Boot 的實踐與思考” 中比對不同規範的 ORM 框架應用場景的時候提到過主從與讀寫分離,本篇隨筆將針對此和分庫分表進行更深入地探討。 1. 漫談 在進入正題之前,我想先隨意談談對架構的拓展周期的想法(僅個人觀點)。首先,我認為初期規劃不該太複雜或者龐大,無論項 ...
  • 訂閱+鏡像切換 主資料庫掛了之後,鏡像資料庫沒掛,那麼就需要把鏡像資料庫設置成主資料庫。 1.修改主機名,改成和主資料庫一樣的,重啟 2.修改資料庫中的主機名 IF SERVERPROPERTY('ServerName')<>@@SERVERNAME BEGIN DECLARE @srvname s ...
  • 在mysql的語法中。修改或者刪除的時候不能直接調用子查詢的結果集。需要先給子查詢其別名。在調用。 比如:下麵的去除重覆項 DELETE FROM t_equipment_type t WHERE t.type = 2 AND (t.type_code,t.type_name) IN ( SELEC ...
  • OUTPUT 子句 可以在數據進行增刪改的時候,可以返回受影響的行。先準備一張表 1、insert ,影響行在inserted表裡 返回結果: id name 1 a 批量插入: id name 2 b 2、delete ,影響行在deleted表裡 返回結果: id 1 3、update,會將新數 ...
  • 1.1游標的概念 游標(Cursor)它使用戶可逐行訪問由SQL Server返回的結果集。使用游標(cursor)的一個主要的原因就是把集合操作轉換成單個記錄處理方式。用SQL語言從資料庫中檢索數據後,結果放在記憶體的一塊區域中,且結果往往是一個含有多個記錄的集合。游標機制允許用戶在SQL serv ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...