MySQL_小練習

1)所有部門名稱  
SELECT
	dname 
FROM
	dept

2)所有僱員名及全年收入(工資+補助) ,並指定列別名“年收入”
SELECT
	ename,
	( sal + ifnull( comm, 0 ) ) * 12 "年收入" 
FROM
	emp

3)存在僱員的所有部門號
SELECT DISTINCT
	deptno 
FROM
	emp;
	
1)工資超過2850的僱員姓名和工資
SELECT
	ename,
	sal 
FROM
	emp 
WHERE
	sal > 2850

2)工資不在15002850之間的所有僱員名及工資  
SELECT
	ename,
	sal 
FROM
	emp 
WHERE
	sal NOT BETWEEN 1500 
	AND 2850

3)代碼爲7566的僱員姓名及所在部門代碼 
SELECT
	ename,
	deptno 
FROM
	emp 
WHERE
	empno = 7566
 
4)部門1030中工資超過1500的僱員名和工資 
SELECT
	ename,
	sal 
FROM
	emp 
WHERE
	deptno IN ( 10, 30 )

5)無管理者的僱員名及崗位  
SELECT
	ename,
	job 
FROM
	emp 
WHERE
	mgr IS NULL;

6)無獎金的僱員的名字及崗位   
SELECT
	ename,
	job 
FROM
	emp 
WHERE
	comm IS NULL;

1)在198121~~198151日之間僱傭的僱員名、崗位及僱傭日期,並以僱傭日期的先後進行排序
SELECT
	ename,
	job,
	hiredate 
FROM
	emp 
WHERE
	hiredate BETWEEN "1981-2-1" 
	AND "1981-5-1" 
ORDER BY
	hiredate ASC;
	
2)獲得補助的所有僱員名,工資及補助金額,並以工資和補助的降序排序
SELECT
	ename,
	sal,
	comm 
FROM
	emp 
WHERE
	comm IS NOT NULL 
ORDER BY
	sal DESC,
	comm DESC;

1)所有僱員的平均工資、總計工資、最高工資、最低工資  
SELECT
	avg( sal ),
	sum( sal ),
	max( sal ),
	min( sal ) 
FROM
	emp;
	
2)每種崗位的僱員總數、平均工資  
SELECT
	count( empno ),
	avg( sal ) 
FROM
	emp 
GROUP BY
	job;

3)僱員總數以及獲得補助的僱員數 
SELECT
	count( empno ),
	count( comm ) 
FROM
	emp
 
4)管理者的總人數  
SELECT
	count( DISTINCT mgr ) 
FROM
	emp;
	
1)部門20的部門名以及該部門的所有僱員名、僱員工資及崗位
SELECT
	dname,
	ename,
	sal,
	job 
FROM
	emp,
	dept 
WHERE
	emp.deptno = 20 
	AND emp.deptno = dept.deptno;

2)獲得補助的所有僱員名、補助金額及所在部門名
SELECT
	ename,
	comm,
	dname 
FROM
	emp,
	dept 
WHERE
	comm IS NOT NULL 
	AND emp.deptno = dept.deptno;

3)在“DALLAS”工作的所有僱員名、僱員工資及所在部門名
SELECT
	ename,
	sal,
	dname 
FROM
	emp,
	dept 
WHERE
	loc = "DALLAS"
4)僱員SCOTT的管理者名
SELECT
	e2.ename 
FROM
	emp e1,
	emp e2 
WHERE
	e1.ename = "SCOTT" 
	AND e1.mgr = e2.empno;

5)查詢EMP表和SALGRADE表,顯示部門20的僱員名、工資及其工資級別
SELECT
	ename,
	sal,
	grade 
FROM
	emp,
	salgrade 
WHERE
	deptno = 20 
	AND sal BETWEEN losal 
	AND hisal;

6)部門10的所有僱員名、部門名以及其他部門名
SELECT
	ename,
	dname 
FROM
	emp
	RIGHT JOIN dept ON emp.deptno = 10 
	AND emp.deptno = dept.deptno;
7)部門10的所有僱員名、部門名以及其他僱員名
SELECT
	ename,
	dname 
FROM
	emp
	LEFT JOIN dept ON emp.deptno = dept.deptno 
	AND emp.deptno = 10;
-- 使用子查詢顯示:
-- 1)BLAKE同部門的所有僱員,單不顯示BLAKE
SELECT
	ename 
FROM
	emp 
WHERE
	deptno = ( SELECT deptno FROM emp WHERE ename = "BLAKE" ) 
	AND ename <> "BLAKE";
-- 2)超過平均工資的所有僱員名、工資及部門號
SELECT
	ename,
	sal,
	deptno 
FROM
	emp 
WHERE
	sal > ( SELECT avg( sal ) FROM emp ) 
-- 3)超過部門平均工資的所有僱員名、工資及部門號

SELECT
	ename,
	sal,
	e.deptno 
FROM
	emp e,
	( SELECT deptno, avg( sal ) avg FROM emp GROUP BY deptno ) t2 
WHERE
	e.deptno = t2.deptno 
	AND sal > avg;

-- 4)高於CLERK崗位所有僱員工資的所有僱員名、工資及補助額
SELECT
	ename,
	sal,
	comm 
FROM
	emp 
WHERE
	sal > ALL ( SELECT sal FROM emp WHERE job = "CLERK" )

-- 5)工資、補助額與SCOTT完全一致的所有僱員名、工資及補助額
SELECT
	ename,
	e.sal,
	e.comm 
FROM
	emp e,
	( SELECT sal, comm FROM emp WHERE ename = "SCOTT" ) t2 
WHERE
	e.sal = t2.sal 
	AND e.comm <=> t2.comm 
	AND ename <> "SCOTT";
-- 6)顯示部門工資總和高.於僱員工資總和三分之一的部門名和工資總和
SELECT
	dname,
	deptsum 
FROM
	dept,
	( SELECT deptno, sum( sal ) deptsum FROM emp GROUP BY deptno ) t1 
WHERE
	dept.deptno = t1.deptno 
	AND deptsum > ( SELECT sum( sal ) / 3 sum FROM emp )
	
-- 查詢emp表第45-50條記錄
SELECT
	* 
FROM
	emp 
	LIMIT 44,
	6;

SELECT
	* 
FROM
	( SELECT * FROM emp, rownum r FROM emp WHERE rownum <= 50 ) 
WHERE
	r >= 45;
-- 部門名和每個部門的總人數
SELECT
	dname,
	ifnull( num, 0 ) 
FROM
	dept
	LEFT JOIN ( SELECT deptno, count( * ) num FROM emp GROUP BY deptno ) t1 ON dept.deptno = t1.deptno

-- 創建時間在李四之後的所有用戶名和對應的權限名

SELECT NAME
	,
	modelname 
FROM
	scmuser su,
	systemmodel sm,
	usermodel um 
WHERE
	createdate > ( SELECT createdate FROM scmuser WHERE NAME = "lisi" ) 
	AND su.account = um.account 
	AND sm.modelcode = um.modelcode;
	
-- 查詢各科成績最高分最低分
SELECT
	couid,
	max( score ),
	min( score ) 
FROM
	score 
GROUP BY
	couid;
-- 查詢學生個數大於3的班級id、該班級所有學生id、姓名和學生個數
SELECT
	stuid,
	stuname,
	stu.classid 
FROM
	student stu,
	( SELECT classid, count( * ) num FROM student GROUP BY classid ) t1 
WHERE
	t1.classid = stu.classid 
	AND t1.num >3
-- 查詢平均成績大於60分的學生姓名、學好和平均成績
SELECT
	stu.stuid,
	stuname,
	avg 
FROM
	student stu,
	( SELECT stuid, avg( score ) avg FROM score GROUP BY stuid ) t1 
WHERE
	stu.stuid = t1.stuid 
	AND avg > 60;
	
-- 數學成績比語文成績高的同學的姓名和數學成績語文成績

SELECT
	stuname,
	s1.score math,
	s2.score chinese 
FROM
	student stu,
	score s1,
	score s2 
WHERE
	stu.stuid = s1.stuid 
	AND s1.stuid = s2.stuid 
	AND s1.couid = ( SELECT couid FROM course WHERE cname = "數學" ) 
	AND s2.couid = ( SELECT couid FROM course WHERE cname = "語文" ) 
	AND s1.score > s2.score

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章