栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库一些基本操作(提供了原数据库信息)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库一些基本操作(提供了原数据库信息)

用到的数据库创建文件
创建方法:cmd窗口打开mysql之后source:sql文件路径创建数据库

create database if not exists db1 default charset utf8;
USE db1;
-- 部门表
CREATE TABLE DEPT(
	DEPTNO INT PRIMARY KEY,
	DNAME VARCHAr(14), -- 部门名称
	LOC VARCHAr(13)-- 部门地址
)CHARSET=UTF8,ENGINE=INNODB;	
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');

-- 员工表
CREATE TABLE EMP(
	EMPNO INT  PRIMARY KEY, -- 员工编号
	ENAME VARCHAr(10), -- 员工姓名
	JOB VARCHAr(9), -- 员工工作
	MGR INT, -- 员工直属领导编号
	HIREDATE DATE, -- 入职时间
	SAL DOUBLE, -- 工资
	COMM DOUBLE, -- 奖金
	DEPTNO INT  -- 所在部门
);  -- 关联dept表	
INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7566,"1980-12-17",800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-07-03',3000,2000,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNERS','SALESMAN',7698,'1981-09-08',1500,50,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7566,'1987-07-13',1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',1250,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','CLERK',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1981-01-23',1300,NULL,10);

-- 工资等级表
CREATE TABLE SALGRADE( 
	GRADE INT,-- 等级
	LOSAL DOUBLE, -- 最低工资
	HISAL DOUBLE 
); -- 最高工资
INSERT INTO SALGRADE VALUES (1,500,1000);
INSERT INTO SALGRADE VALUES (2,1001,1500);
INSERT INTO SALGRADE VALUES (3,1501,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);

所练习的全部查询语句

-- 查找部门中30员工的详细信息
SELECt*
FROM emp
WHERe DEPTNO=30

-- 找出从事职员工作的员工的编号,姓名,部门号
SELECt EMPNO 编号,ENAME 姓名,DEPTNO 部门号
FROM emp
WHERe JOB='CLERK'

-- 检索出奖金多于基本工资的员工信息
SELECt*
FROM emp
WHERe	COMM>SAL

-- 检索奖金多于基本工资百分之60的员工信息
SELECt *
FROM emp
WHERe COMM>SAL*0.6;

-- 找出姓名中包含A的员工信息
-- %通配符,表示0~n个任意字符
SELECt *
FROM emp
WHERe ENAME like '%A%';

-- 找出姓名以a,b,s开头的员工信息
-- 通配符^表示从开头计算
-- []通配符表示取[]内任意字符
SELECt*
FROM emp
WHERe ENAME REGEXP '^[abs]';

-- 找出名字长度为7个字符的员工信息
-- LENGTH(str)函数获取字符串长度
SELECt *
FROM emp
WHERe LENGTH(ENAME)=7;

-- 名字中不包含R字符的员工信息
SELECt*
FROM emp
WHERe ENAME NOT LIKE '%R%';

-- 返回员工的详细信息并按姓名升序排序
-- 关键字ORDER BY,其中ASC升序,DESC降序
SELECt *
FROM emp
ORDER BY ENAME ASC;

-- 返回员工的信息并按姓名降序,工资升序排列
-- 先使用的排序约束条件放在前面
SELECt *
FROM emp
ORDER BY ENAME DESC,SAL+COMM ASC;

-- 计算员工的日薪(按30天)
SELECt SAL/30 日薪
FROM emp;

-- 找出获得奖金的员工的工作
SELECt JOB
FROM emp
WHERe COMM IS NOT NULL
GROUP BY JOB;

-- 找出奖金少于100或者没有获得奖金的员工的信息。
-- NULL不可用<判断,应用IS NULL
SELECt *
FROM emp
WHERe COMM<100 or COMM is NULL;

-- 找出10部门的经理、20部门的职员 的员工信息。
SELECt*
FROM emp
WHERe DEPTNO=10 AND JOB='MANAGER' OR DEPTNO=20 AND JOB='CLERK';

-- 找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
SELECt*
FROM emp
WHERe DEPTNO=10 AND JOB='MANAGER' OR DEPTNO=20 AND JOB='CLERK' OR SAL>2000;

-- 返回部门号及其本部门的最低工资。
SELECt DEPTNO as 部门,MIN(SAL) as 最低工资
FROM emp
GROUP BY DEPTNO;

-- 查询员工姓名和年薪,并且按年薪降序排序
SELECt ENAME 员工姓名,MGR 年薪
FROM emp
ORDER BY MGR DESC

-- 返回员工工作及其从事此工作的最低工资。
SELECt MIN(SAL) 最低工资,JOB
FROM emp
GROUP BY JOB;

-- 查找和SCOTT从事相同工作的员工信息
SELECt*
FROM emp
WHERe JOB=(
	SELECt JOB
	FROM emp
	WHERe ENAME='SCOTT'
);

-- 工资水平多于JAMES的员工信息
SELECt *
FROM emp
WHERe SAL>(
	SELECt SAL
	FROM emp
	WHERe ENAME='JAMES'
);

-- 返回工资大于平均工资的员工信息
SELECt*
FROM emp
WHERe SAL>(
	SELECt AVG(SAL)
	FROM emp
);

-- 返回销售部所有员工的姓名
SELECt ENAME
FROM emp
WHERe DEPTNO=(
	SELECt DEPTNO
	FROM dept
	WHERe DNAME='SALES'
);

-- 返回工资高于30部门所有员工工资水平的员工信息。
SELECt*
FROM emp
WHERe SAL>(
	SELECt AVG(SAL)
	FROM emp
	WHERe DEPTNO=30
);

-- 返回拥有员工的部门名、部门号。
-- 显示内连接
SELECt dept.DNAME 部门名,emp.DEPTNO
FROM emp
INNER JOIN dept on emp.DEPTNO=dept.DEPTNO;

-- 隐式内连接
SELECt dept.DNAME,emp.DEPTNO
FROM emp,dept
WHERe emp.DEPTNO=dept.DEPTNO;

-- 返回员工的姓名,所在部门和所在部门名称
SELECt emp.ENAME,dept.DEPTNO,dept.DNAME
FROM emp,dept
WHERe emp.DEPTNO=dept.DEPTNO;

-- 返回从事职员工作的姓名和所在的部门名称
SELECt ENAME,dept.DNAME
FROM emp,dept
WHERe emp.DEPTNO=dept.DEPTNO and emp.JOB='CLERK'

-- 返回部门号,部门名,部门所在位置及其每个部门的员工总数
SELECt d1.DEPTNO,d1.DNAME,d1.LOC,e.部门员工总数
FROM dept d1,(
	SELECt DEPTNO,count(*) 部门员工总数
	FROM emp
	GROUP BY DEPTNO
)e
WHERe d1.DEPTNO=e.DEPTNO; 

-- 返回员工职员或者销售员和所属经理的姓名
SELECt e1.ENAME 员工,e2.`经理` 所属经理
FROM emp e1,(
	SELECt DEPTNO,ENAME 经理
	FROM emp
	WHERe JOB='MANAGER'
)e2
WHERe e1.DEPTNO=e2.DEPTNO AND e1.JOB!='MANAGER';

-- 返回员工的入职日期早于其经理入职日期的员工及经理姓名
SELECt e1.ENAME 员工,e2.ENAME 经理
FROM emp e1,emp e2
WHERe e1.DEPTNO=e2.DEPTNO AND e2.JOB='MANAGER' and e1.HIREDATEs1.LOSAL and e1.SAL2000


SELECt 职位名称,平均工资
FROM(
	SELECt JOB 职位名称,AVG(SAL) 平均工资
	FROM emp
	GROUP BY 职位名称
)e
WHERe 平均工资>2000;

-- 查找部门编号,部门名字,部门地址,部门人数,部门平均工资
SELECt d.DEPTNO 部门编号,d.DNAME 部门名字,d.LOC 部门地址,e.部门人数,e.`平均工资`
FROM dept d,(
	SELECt DEPTNO,count(*) 部门人数,AVG(SAL) 平均工资
	FROM emp
	GROUP BY DEPTNO
)e 
WHERe d.DEPTNO=e.DEPTNO;

-- 查询所有在销售部工作的 员工标号,姓名,基本工资,奖金,职位,入职日期 部门最高和最低工资
SELECt e1.empno,e1.ename,e1.sal,e1.comm,e1.job,e1.HIREDATE,e2.`部门最低工资`,e2.`部门最高工资`
FROM emp e1,(
	SELECt DEPTNO,max(SAL) 部门最高工资,min(SAL) 部门最低工资
	FROM emp
	GROUP BY DEPTNO
)e2
WHERe e1.DEPTNO=e2.DEPTNO and e1.DEPTNO=(
	SELECt DEPTNO
	FROM dept
	WHERe dname='SALES'
)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号