日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

黑马程序员MySQL-视图SQL笔记

發布時間:2023/12/9 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 黑马程序员MySQL-视图SQL笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對應課程地址

-- 視圖 -- 準備數據 create database if not exists mydb6_view; use mydb6_view; create table dept(deptno int primary key,dname varchar(20),loc varchar(20) ); insert into dept values(10, '教研部','北京'), (20, '學工部','上海'), (30, '銷售部','廣州'), (40, '財務部','武漢');create table emp(empno int primary key,ename varchar(20),job varchar(20),mgr int,hiredate date,sal numeric(8,2),comm numeric(8, 2),deptno int, -- FOREIGN KEY (mgr) REFERENCES emp(empno),FOREIGN KEY (deptno) REFERENCES dept(deptno) ON DELETE SET NULL ON UPDATE CASCADE ); insert into emp values (1001, '甘寧', '文員', 1013, '2000-12-17', 8000.00, null, 20), (1002, '黛綺絲', '銷售員', 1006, '2001-02-20', 16000.00, 3000.00, 30), (1003, '殷天正', '銷售員', 1006, '2001-02-22', 12500.00, 5000.00, 30), (1004, '劉備', '經理', 1009, '2001-4-02', 29750.00, null, 20), (1005, '謝遜', '銷售員', 1006, '2001-9-28', 12500.00, 14000.00, 30), (1006, '關羽', '經理', 1009, '2001-05-01', 28500.00, null, 30), (1007, '張飛', '經理', 1009, '2001-09-01', 24500.00, null, 10), (1008, '諸葛亮', '分析師', 1004, '2007-04-19', 30000.00, null, 20), (1009, '曾阿牛', '董事長', null, '2001-11-17', 50000.00, null, 10), (1010, '韋一笑', '銷售員', 1006, '2001-09-08', 15000.00, 0.00, 30), (1011, '周泰', '文員', 1008, '2007-05-23', 11000.00, null, 20), (1012, '程普', '文員', 1006, '2001-12-03', 9500.00, null, 30), (1013, '龐統', '分析師', 1004, '2001-12-03', 30000.00, null, 20), (1014, '黃蓋', '文員', 1007, '2002-01-23', 13000.00, null, 10);create table salgrade(grade int primary key,losal int,hisal int ); insert into salgrade values (1, 7000, 12000), (2, 12010, 14000), (3, 14010, 20000), (4, 20010, 30000), (5, 30010, 99990);-- 創建視圖 CREATE OR REPLACE VIEW view1_emp AS SELECTename,job FROMemp;-- 查看表和視圖 show tables; show full tables;-- 查看視圖結構 DESCRIBE view1_emp;-- 查詢視圖 SELECT* FROMview1_emp;-- 修改視圖結構 ALTER VIEW view1_emp AS SELECT a.deptno, a.dname, a.loc, b.ename, b.sal FROMdept a,emp b WHEREa.deptno = b.deptno;-- 更新視圖:修改原表數據 -- 先創建一個視圖 CREATE OR REPLACE VIEW view1_emp AS SELECTename,job FROMemp;-- 查詢一下視圖 SELECT* FROMview1_emp;-- 更新視圖 UPDATE view1_emp SET ename = '魯肅' WHEREename = '謝遜';-- 1、插入數據時,視圖只是引用表格中的某些字段, -- 而另外一些字段又沒有指定默認值時會插入失敗 INSERT INTO view1_emp VALUES( '周瑜', '文員' );-- 2、視圖包含聚合函數不可更新 CREATE OR REPLACE VIEW view2_emp AS SELECTcount(*) cnt FROMemp;SELECT* FROMview2_emp; INSERT INTO view2_emp VALUES( 100 );UPDATE view2_emp SET cnt = 100;-- 3、視圖包含distinct不可更新 CREATE OR REPLACE VIEW view3_emp AS SELECT DISTINCTjob FROMemp;SELECT* FROMview3_emp;INSERT INTO view3_emp VALUES( '財務' );-- 4、視圖包含group by、having不可更新 CREATE OR REPLACE VIEW view4_emp AS SELECTdeptno FROMemp GROUP BYdeptno HAVINGdeptno > 10;SELECT* FROMview4_emp;insert into view4_emp values(40);-- 5、視圖包含union、union all不可更新 -- union all不去重,union會去重 CREATE OR REPLACE VIEW view5_emp AS SELECTempno,ename FROMemp WHEREempno <= 5 UNION SELECT empno, ename FROM emp WHERE empno > 8;SELECT* FROMview5_emp;INSERT INTO view5_emp VALUES( 1015, '宋江' );-- 6、視圖包含子查詢不可更新 CREATE OR REPLACE VIEW view6_emp AS SELECTempno,ename,sal FROMemp WHEREsal = (SELECTmax( sal ) FROMemp);SELECT* FROMview6_emp;INSERT INTO view6_emp VALUES( 1015, '血刀老祖', 30000.0 );-- 7、視圖包含join不可更新 CREATE VIEW view7_emp AS SELECT dname, ename, sal FROMemp aJOIN dept b ON a.deptno = b.deptno;INSERT INTO view7_emp VALUES( '行政部', '韋小寶', 6500.00 );-- 8、視圖包含常量文字值不可更新 CREATE OR REPLACE VIEW view8_emp AS SELECT'行政部' dname,'楊過' ename;INSERT INTO view8_emp VALUES( '行政部', '韋小寶' );CREATE OR REPLACE VIEW view9_emp AS SELECT* FROMemp; -- 重命名視圖 RENAME TABLE view9_emp TO view9_1_emp; -- 刪除視圖 DROP VIEW IFEXISTS view9_1_emp;-- 視圖練習 -- 1:查詢部門平均薪水最高的部門名稱 -- 最原始做法:不使用開窗函數,不使用視圖 SELECTdname FROMdept WHEREdeptno = (SELECTb.deptno FROM(SELECTa.deptno,max( a.avg_sal ) FROM( SELECT deptno, avg( sal ) avg_sal FROM emp GROUP BY deptno ) a ) b );-- 1:增加一點難度查詢部門平均薪水處于最高兩位的部門名稱 -- 使用開窗函數,不使用視圖 -- 1.1 先查出每個部門編號對應的平均薪水 -- 1.2 用開窗函數進行排序 -- 1.3 找到rank小于等于2的deptno -- 1.4 再跟dept表聯合查找出dname SELECTdname FROMdept d,(SELECTdeptno FROM(SELECT*,rank() over ( ORDER BY avg_sal DESC ) rn FROM( SELECT deptno, avg( sal ) avg_sal FROM emp GROUP BY deptno ) a ) b WHERErn = 1 ) c WHEREd.deptno = c.deptno;-- 1:增加一點難度查詢部門平均薪水處于最高兩位的部門名稱 -- 使用開窗函數,并且使用視圖 -- 1.1 先查出每個部門編號對應的平均薪水,創建一個視圖 CREATE OR REPLACE VIEW view_dept_avg_sal AS SELECTdeptno,avg( sal ) avg_sal FROMemp GROUP BYdeptno; -- 1.2 用開窗函數進行排序,創建一個視圖 CREATE OR REPLACE VIEW view_dept_avg_sal_rank AS SELECT*,rank() over ( ORDER BY avg_sal DESC ) rn FROMview_dept_avg_sal; -- 1.3 找到rank小于等于2的deptno,創建一個視圖 CREATE OR REPLACE VIEW view_dept_avg_sal_top2 AS SELECT* FROMview_dept_avg_sal_rank WHERErn <= 2; -- 1.4 再跟dept表聯合查找出dname CREATE OR REPLACE VIEW view_dept_avg_sal_top2_dname AS SELECTdname FROMdept a,view_dept_avg_sal_top2 b WHEREa.deptno = b.deptno;-- 2:查詢員工比所屬領導薪資高的部門名、員工名、員工領導編號 -- 最原始做法:不使用視圖 SELECTdname,ename,mgr FROMdept b,(SELECTe1.deptno,e1.ename,e1.sal,e1.mgr,e2.sal mgr_sal FROMemp e1,emp e2 WHEREe1.mgr = e2.empno AND e1.sal > e2.sal ) a WHEREb.deptno = a.deptno;-- 2:查詢員工比所屬領導薪資高的部門名、員工名、員工領導編號 -- 使用視圖 -- 2.1查詢員工比所屬領導薪資高的部門號,然后創建一個視圖 CREATE OR REPLACE VIEW view_deptno_ename_mgr AS SELECTe1.deptno,e1.ename,e1.mgr FROMemp e1,emp e2 WHEREe1.mgr = e2.empno and e1.sal > e2.sal; -- 2.2將上一步查詢出來的部門號和部門表進行連表查詢 CREATE OR REPLACE VIEW view_dname_ename_mgr AS SELECTdname,ename,mgr FROMdept a,view_deptno_ename_mgr b WHEREa.deptno = b.deptno;-- 3:查詢工資等級為4級,2000年以后入職的工作地點為上海的員工編號、姓名和工資, -- 并查詢出薪資在前2名的員工信息 -- 最原始做法,不使用視圖 SELECTempno,ename,sal FROM(SELECTempno,ename,sal,rank() over ( ORDER BY sal DESC ) rn FROMemp e,dept d,salgrade s WHEREe.deptno = d.deptno AND YEAR ( hiredate ) >= '2000' AND loc = '上海' AND grade = 4 AND sal BETWEEN losal AND hisal ) a WHERErn <= 2;-- 3:查詢工資等級為4級,2000年以后入職的工作地點為上海的員工編號、姓名和工資, -- 并查詢出薪資在前2名的員工信息 -- 使用視圖 -- 3.1 查詢工資等級為4級,2000年以后入職的工作地點為上海的員工編號、姓名和工資,創建一個視圖 CREATE OR REPLACE VIEW view_ename_sal_after2000_grade4 AS SELECTempno, ename, sal FROMemp e,dept d,salgrade s WHEREe.deptno = d.deptno AND grade = 4 AND sal BETWEEN losal AND hisal AND loc = '上海' AND YEAR ( hiredate ) > '2000' -- 此處三張表聯查還可以用join,邏輯會更清晰 SELECTempno,ename,sal FROMemp eJOIN dept d ON e.deptno = d.deptno AND loc = '上海' AND YEAR ( hiredate ) > '2000';JOIN salgrade s ON grade = 4 AND ( sal BETWEEN losal AND hisal )-- 3.2 查詢出薪資在前2名的員工信息 SELECTempno,ename,sal FROM( SELECT *, rank() over ( ORDER BY sal DESC ) rn FROM view_ename_sal_after2000_grade4 ) a WHERErn <= 2;

總結

以上是生活随笔為你收集整理的黑马程序员MySQL-视图SQL笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看中文字幕一区 | 欧美69囗交视频 | 夜夜嗨一区二区三区 | 99re在线视频免费观看 | 久久国产精品无码一级毛片 | 日韩最新中文字幕 | 欧美在线日韩 | 在线观看自拍 | 久久国产美女视频 | 99热这里只有精品99 | 激情网色| 国产精品对白刺激久久久 | 97人人人 | 青青草97国产精品麻豆 | 久草新在线 | 亚洲av无码专区国产乱码不卡 | 一级片在线免费播放 | 国产成人无码www免费视频播放 | 好看的中文字幕av | 牛牛影视一区二区三区 | 中日韩午夜理伦电影免费 | 日本肉体xxxx裸体xxx免费 | 美女三级视频 | 激情www| 免费国产视频在线观看 | 日韩有码电影 | 一区二区三区视频免费视 | 国产无遮挡又黄又爽又色 | 精品久久久久久中文字幕 | 成人免费视频网站在线观看 | 亚洲大片在线观看 | 日韩欧美片 | 一卡二卡久久 | 精品丰满人妻无套内射 | 欧美一级片播放 | 麻豆成人91精品二区三区 | 爆操巨乳美女 | 青青免费在线视频 | 亚洲综合久久av | 午夜伦伦电影理论片费看 | 亚洲国产丝袜 | 91网站大全 | av国产网站| 中文字幕线人 | 香蕉视频2020| 夫妻啪啪呻吟x一88av | 国产高清在线观看视频 | 久久国产视频网 | 瑟瑟视频在线看 | 欧美性受xxxx黑人xyx | 华人av在线 | 午夜影院免费 | 九九资源网 | 午夜中文字幕 | 稀缺呦国内精品呦 | av在线播放不卡 | 色狠狠久久av大岛优香 | 亚洲欧美国产视频 | 韩国三级中文字幕 | 国产一区免费在线 | 好吊视频一区二区 | 在线观看免费视频黄 | 日韩国产精品视频 | 日本免费福利视频 | 午夜视频在线观看免费视频 | 欧美三级电影在线观看 | 欧美成欧美va | 国产精品久久久久久久妇 | 日韩午夜在线视频 | 伊人影院在线播放 | 久久婷婷五月国产色综合激情 | 天天综合入口 | 办公室荡乳欲伦交换bd电影 | 国产色综合天天综合网 | 天堂a√在线 | 伊人国产在线 | 欧美一卡二卡在线观看 | 久久性色 | 毛片av网址 | 久久久全国免费视频 | 97中文字幕| 911亚洲精选 | 午夜成人影片 | 杨贵妃颤抖双乳呻吟求欢小说 | 国产一区免费 | 中国一级特黄真人毛片免费观看 | 99视频免费 | 中文在线字幕av | 4438x全国最大成人网 | 亚洲不卡中文字幕无码 | 天天摸天天看 | 日韩精品aaa | 亚洲视频精品在线观看 | 高清视频免费在线观看 | 日本一区二区免费在线观看 | 亚洲特级片 | 天天噜天天干 | av片手机在线观看 | 日韩在线中文字幕视频 |