mysql新手進階01

来源:https://www.cnblogs.com/king8/archive/2018/03/30/8676572.html
-Advertisement-
Play Games

生活不止眼前的苟且,還有詩和遠方。 請根據給出的資料庫表結構來回答相應問題: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT ...


生活不止眼前的苟且,還有詩和遠方。

請根據給出的資料庫表結構來回答相應問題:
DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13));
EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
SAL FLOAT, COMM FLOAT, DEPTNO INT);
BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT);
SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);
其中表中包含如下數據:

DEPT表:

EMP表:

SALGRADE表:

BONUS表: 無數據
根據上面描述完成下麵問題:
(註意:註意保存腳本,尤其是DDL和DML,以便進行數據還原)
DDL
1.寫出上述表的建表語句。此外,在DEPT上創建名為”PK_DEPT”的主鍵約束,在EMP表上創建名為” PK_EMP”的主鍵約束以及指向表DEPT的外鍵約束” FK_DEPTNO”。

命令:
create table DEPT (DEPTNO INT,
DNAME VARCHAR(14),
LOC VARCHAR(13),
constraint pk_dept primary key (DEPTNO));

create table EMP (EMPNO INT,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR INT,
HIREDATE DATETIME,
SAL FLOAT,
COMM FLOAT,
DEPTNO INT,
constraint pk_emp primary key (EMPNO),
constraint fk_deptno foreign key (deptno) references dept(deptno));

create table BONUS(ENAME VARCHAR(10),
JOB VARCHAR(9),
SAL INT,
COMM INT);
create table SALGRADE ( GRADE INT,
LOSAL INT,
HISAL INT);

DML
2.給出相應的INSERT語句來完成題中給出數據的插入。

命令:
insert into dept values(10, 'accounting', 'New York');
insert into dept values(20, 'research', 'Dallas');
insert into dept values(30, 'sales', 'Chicago');
insert into dept values(40, 'operations', 'Boston');

insert into emp values(7369, 'SMITH', 'CLERK', 7902, '1980-12-17 0:00:00', 800, NULL, 20);
insert into emp values(7499, 'ALLEN', 'SALESMAN', 7698, '1981-2-20 0:00:00', 1600, 300, 30);
insert into emp values(7521, 'WARD', 'SALESMAN', 7698, '1981-2-22 0:00:00', 1250, 500, 30);
insert into emp values(7566, 'JONES', 'MANAGER', 7839, '1981-4-2 0:00:00', 2975, NULL, 20);
insert into emp values(7654, 'MARTIN', 'SALESMAN', 7698, '1981-9-28 0:00:00', 1250, 1400, 30);
insert into emp values(7698, 'BLAKE', 'MANAGER', 7839, '1981-5-1 0:00:00', 2850, NULL, 30);
insert into emp values(7782, 'CLARK', 'MANAGER', 7839, '1981-6-9 0:00:00', 2450, NULL, 10);
insert into emp values(7788, 'SCOTT', 'ANALYST', 7566, '1987-6-13 0:00:00', 3000, NULL, 20);
insert into emp values(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17 0:00:00', 5000, NULL, 10);
insert into emp values(7844, 'TURN', 'SALESMAN', 7698, '1981-9-8 0:00:00', 1500, 0, 30);
insert into emp values(7876, 'ADAMS', 'CLERK', 7788, '1987-6-13 0:00:00', 1100, NULL, 20);
insert into emp values(7900, 'JAMES', 'CLERK', 7698, '1981-12-3 0:00:00', 950, NULL, 30);
insert into emp values(7934, 'MILLER', 'CLERK', 7782, '1982-1-23 0:00:00', 1300, NULL, 10);

INSERT INTO SALGRADE VALUES(1, 700, 1200);
INSERT INTO SALGRADE VALUES(2, 1201, 1400);
INSERT INTO SALGRADE VALUES(3, 1401, 2000);
INSERT INTO SALGRADE VALUES(4, 2001, 3000);
INSERT INTO SALGRADE VALUES(5, 3001, 9999);

3.將所有員工的工資上浮10%.然後查詢員工姓名、薪水、補助。(emp.sal為工資,emp.comm為補助)

命令:
UPDATE EMP SET SAL = SAL + SAL * 0.1;
SELECT ENAME, SAL, COMM FROM EMP;
結果:

單表查詢
4.查看EMP表中部門號為10的員工的姓名,職位,參加工作時間,工資。

命令:
SELECT ENAME, JOB, HIREDATE, SAL FROM EMP WHERE DEPTNO = 10;
結果:

5.查所有已有的職位,要求去除重覆項。

命令:
SELECT DISTINCT JOB FROM EMP;
結果:

6.計算每個員工的年薪,並取列名為Salary of Year(emp.sal為員工的月薪),要求輸出員工姓名,年薪。

命令:
SELECT ENAME ename, SAL*12 'Salary Of Year' FROM EMP;
結果:

7.查詢每個員工每個月拿到的總金額(emp.sal為工資,emp.comm為補助)。(提示:isnull(ex1,ex2)表示如果ex1為空則返回ex2)

命令:
SELECT ENAME ename, isnull(comm, 0)+ sal total FROM EMP;
結果:

8.顯示職位是主管(manager)的員工的姓名,工資。

命令:
SELECT ENAME, SAL FROM EMP WHERE JOB = 'MANAGER';
結果:

9.顯示第3個字元為大寫O的所有員工的姓名及工資。

命令:
SELECT ENAME, SAL FROM EMP WHERE ENAME like '__O%';

結果:

10.顯示職位為銷售員(SALESMAN)或主管(MANAGER)的員工的姓名,工資,職位。

命令:
select ename, sal, job from emp where job = 'SALESMAN' or job = 'MANAGER';
結果:

11.顯示所有沒有補助的員工的姓名。

命令:
select ename from emp where comm is null;
結果:

12.顯示有補助的員工的姓名,工資,補助。

命令:
select ename, sal, comm from emp where comm is not null;
結果:

13.排序顯示所有員工的姓名,工資(按工資降序方式)。

命令:
select ename, sal from emp order by sal desc;
結果:

14.顯示員工的最高工資和最低工資。

命令:
select max(sal) 最高工資, min(sal) 最低工資from emp;
結果:

15.顯示所有員工的平均工資和總計工資。

命令:
select avg(sal) 平均工資, sum(sal) 總計工資from emp;
結果:

16.顯示補助在員工中的發放比例、即有多少比例的員工有補助。(此題需註意兩個問題:1.select語句中進行除法如何保留小數點後數據。2.count函數如何處理null型數據。)

命令:
select count(comm) * 1.0 / count(ename) from emp;
結果:

聚合查詢
17.顯示每種職業的平均工資。

命令:
select job, avg(sal) average from emp group by job;
結果:

18.顯示每個部門每種崗位的平均工資和最高工資。

命令:
select deptno, job, avg(sal) average, max(sal) max from emp group by deptno, job;
結果:

19.顯示平均工資低於2500的部門號,平均工資及最高工資。

命令:
select deptno, avg(sal) average, max(sal) max from emp group by deptno having avg(sal) < 2500;
結果:

20.上一條語句以平均工資升序排序。

命令:
select deptno, avg(sal) average, max(sal) max from emp group by deptno having avg(sal) < 2500 order by avg(sal) asc;

結果:

多表查詢
21.顯示工資高於2500或崗位為MANAGER的所有員工的姓名,工資,職位,和部門號。

命令:select ename, sal, job, deptno from emp where sal > 2500 or job = 'MANAGER';
結果:

22.排序顯示所有員工的姓名,部門號,工資(以部門號升序,工資降序,雇用日期升序顯示)。

命令:select ename, deptno, sal from emp order by deptno asc, sal desc, hiredate asc;
結果:

23.採用自然連接的原理顯示部門名以及相應的員工姓名。(Sql server不支持NATURAL JOIN語法。)
命令:select dname, ename from emp, dept where emp.deptno = dept.deptno;
結果:

24.查詢SCOTT的上級領導的姓名。

命令:select leader.ename from emp, emp leader where emp.ename = 'SCOTT' and emp.mgr = leader.empno;

結果:

25.顯示部門的部門名稱,員工名即使部門沒有員工也顯示部門名稱。

命令:select dname, ename from dept left join emp on dept.deptno = emp.deptno;

結果:

子查詢
26.顯示所有員工的名稱、工資以及工資級別。

命令:select ename, sal, grade from emp, salgrade where emp.sal between salgrade.losal and salgrade.hisal;

結果:

27.顯示ACCOUNTING部門所有員工的名稱,工資。

命令:select ename, sal from emp, dept where emp.deptno = dept.deptno and dept.dname = 'ACCOUNTING';
結果:

28.顯示職位屬於10號部門所提供職位範圍的員工的姓名,職位,工資,部門號。

命令:select ename, job, sal, deptno from emp where job in (select job from emp where deptno = 10);
結果:

29.顯示在所有員工用中高於30號部門中任一個員工工資的員工的姓名,工資和部門號。

命令:select ename, sal, deptno from emp where sal > all (select sal from emp where deptno = 30);
結果:

集合查詢
30.顯示工資高於2500或職位為MANAGER的員工的姓名,工資和職位(採用UNION語法實現)。

命令:select ename, sal, job from emp where sal > 2500
union
select ename, sal, job from emp where job = 'MANAGER';
結果:

31.顯示工資高於2500且職位為MANAGER的員工的姓名,工資和職位(採用INTERSECT語法實現)。

命令:select ename, sal, job from emp where sal > 2500
intersect
select ename, sal, job from emp where job = 'MANAGER';
結果:

32.顯示工資高於2500但職位不是MANAGER的員工的姓名,工資和職位(採用MINUS語法實現)。

命令:select ename, sal, job from emp where sal > 2500
EXCEPT
select ename, sal, job from emp where job = 'MANAGER';
結果:


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

-Advertisement-
Play Games
更多相關文章
  • 前言:環境:centos6.5sed版本:GNU sed version 4.2.1本文的代碼都是在這個環境下驗證的。一、簡介sed(Stream Editor)意為流編輯器,是Unix常見的命令行程式。是Bell實驗室的 Lee E.McMahon 在1973年到1974年之間開發完成,目前可以在... ...
  • vim /etc/ssh/sshd_config 修改參數UsePAM 為yes UsePAM yes 重啟sshd服務 vim /etc/pam.d/login 在第二行添加 auth required pam_tally2.so deny=3 lock_time=600 even_deny_ro ...
  • 易升是微軟推出的win10升級工具。用戶可通過易升一鍵升級win10。 因為我的電腦已經是win10的系統,所以我也不需要升級。也不想升級,因為我從網上瞭解到升級後的系統反而沒有升級前的好用。 微軟的初衷是好的,但是這個win10易升太流氓了,直接不經過你的允許強制安裝和升級你的系統。而且升級系統總 ...
  • --用戶定義函數的分類: /* 1.標量函數 2.表值函數 2.1內聯表值函數 返回單個SELECT語句, 它沒有相關的返回變數和函數體 2.2多語句表值函數 是視圖和存儲過程的結合 可嵌套 */ 執行: 結果: 執行: 結果: 多語句表值函數 執行: 結果: ...
  • 最近從在學習MySQL資料庫,遇到一些問題,有些解決了,有些還未找到答案,本篇作為學習筆記,未解決的問題等後續有答案再補充,也請走過路過的大牛們指點一二; 問題一:Java程式查詢MySQL表數據,由於MySQL預設將查詢結果全部載入到記憶體中,數據量比較大時,會報OOM,以下是解決這個問題過程中在網 ...
  • MySQL 一種關係型資料庫 database 資料庫,簡稱DB databases 資料庫的複數,代表多個資料庫 net 網路/服務 start 啟動 stop 停止 root MySQL資料庫中的超級管理員 password 密碼 localhost 本地伺服器/本地主機 prompt 改變DO ...
  • 10053事件:Event 10053 is an internal event that externalises some of the decisions made by the optimizer in to a trace file. 對於10053更多的介紹,這裡不再重覆 註:使用100 ...
  • HDFS Federation HDFS Federation. 1 1 Background. 1 2.多個namenode/namespace. 1 2.1 關鍵好處... 1 3 聯合配置... 1 3.1 配置... 1 3.2 格式化namenode. 1 3.3 更新老的release並 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...