mysql收入来源,MySQL-练习

MySQL练习题

让emp表中所员工的工资 + 200, 同时显示之前的工资和加薪之后的工资

SELECT

sal,

(sal + 200)

FROM

emp;

员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入,要求显示列标题为员工姓名,工资收入,奖金收入,总收入

SELECT

ename AS 员工姓名,

sal AS 工资收入,

ifnull(comm, 0) AS 奖金收入,

(

sal * 6 + sal * 1.2 * 6 + ifnull(comm, 0)

) AS 总收入

FROM

emp;

查询员工表中一共有哪几种岗位类型

SELECT DISTINCT

job

FROM

emp;

查询职位为SALESMAN的员工编号、职位、入职日期。

SELECT

empno,

job,

hiredate

FROM

emp

WHERE

job = 'SALESMAN';

查询1985年12月31日之前入职的员工姓名及入职日期。

SELECT

empno,

hiredate

FROM

emp

WHERE

hiredate < '1985-12-31';

查询部门编号不在10部门的员工姓名、部门编号

SELECT

empno,

deptno

FROM

emp

WHERE

deptno <> 10;

查询入职日期在82年至85年的员工姓名,入职日期

SELECT

ename,

hiredate

FROM

emp

WHERE

hiredate BETWEEN '1982-01-01'

AND '1985-01-01';

查询月薪在3000到5000的员工姓名,月薪。

SELECT

ename,

sal

FROM

emp

WHERE

sal BETWEEN 3000

AND 5000;

查询经理编号为7902, 7566, 7788的员工姓名,经理编号

SELECT

ename,

mgr

FROM

emp

WHERE

mgr IN (7902, 7566, 7788);

查询员工姓名以W开头的员工姓名。

SELECT

ename

FROM

emp

WHERE

ename LIKE 'W%';

查询员工姓名倒数第2个字符为T的员工姓名。

SELECT

ename

FROM

emp

WHERE

ename LIKE "%T_";

查询奖金为空的员工姓名,奖金

SELECT

ename,

comm

FROM

emp

WHERE

comm IS NULL;

查询工资超过2000并且职位是 MANAGER或SALESMAN的员工姓名、职位、工资。

SELECT

ename,

job,

sal

FROM

emp

WHERE

sal > 2000

AND job IN ('MANAGER', 'SALESMAN');

查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。

SELECT

ename,

deptno,

sal

FROM

emp

WHERE

deptno IN (10, 20)

AND sal BETWEEN 3000

AND 5000;

查询入职日期在81年,并且职位不是SALES开头的员工姓名、入职日期、职位。

SELECT

ename,

hiredate,

job

FROM

emp

WHERE

hiredate BETWEEN '1981-01-01'

AND '1982-01-01'

AND job NOT LIKE 'SALES%';

查询职位为SALESMAN或MANAGER,部门编号为10或者20,

姓名包含A的员工姓名、职位、部门编号。

SELECT

ename,

job,

deptno

FROM

emp

WHERE

job IN ('SALESMAN', 'MANAGER')

AND deptno IN (10, 20)

AND ename LIKE 'A';

查询部门在20或30的员工姓名,部门编号,并按照工资升序排序。

SELECT

ename,

deptno,

sal

FROM

emp

WHERE

deptno IN (20, 30)

ORDER BY

sal;

查询工资在2000-3000之间,部门不在10号的员工姓名,部门编号,工资,并按照部门升序,工资降序排序。

SELECT

ename,

deptno,

sal

FROM

emp

WHERE

sal BETWEEN 2000

AND 3000

AND deptno NOT IN (10)

ORDER BY

deptno ASC,

sal DESC;

查询入职日期在81年至82年之间,职位以SALES或者MAN开头的员工姓名,入职日期,职位,并按照入职日期降序排序

SELECT

ename,

hiredate,

job

FROM

emp

WHERE

(

hiredate BETWEEN '1981-01-01'

AND '1983-01-01'

)

AND (

job LIKE 'SALES%'

OR job LIKE 'MAN%'

)

ORDER BY

hiredate DESC;

查询入职日期最早的前5名员工姓名,入职日期。

SELECT

ename,

hiredate

FROM

emp

ORDER BY

hiredate

LIMIT 5;

查询20号部门下入职日期最早的前2名员工姓名,入职日期。

SELECT

ename,

hiredate

FROM

emp

WHERE

deptno = 20

ORDER BY

hiredate

LIMIT 2;

按照每页显示5条记录,分别查询第1页,第2页,第3页信息,

要求显示员工姓名、入职日期、部门编号。

SELECT

ename,

hiredate,

deptno

FROM

emp

LIMIT 0,

5;

SELECT

ename,

hiredate,

deptno

FROM

emp

LIMIT 5,

5;

SELECT

ename,

hiredate,

deptno

FROM

emp

LIMIT 10,

5;

查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。

SELECT

ename,

hiredate,

job

FROM

emp

WHERE

hiredate > '1982-07-09'

AND job <> 'SALESMAN';

查询员工姓名的第三个字母是a的员工姓名。

SELECT

ename

FROM

emp

WHERE

ename LIKE '__a%';

查询除了10、20号部门以外的员工姓名、部门编号。

SELECT

ename,

deptno

FROM

emp

WHERE

deptno NOT IN (10, 20);

查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。

SELECT

*

FROM

emp

WHERE

deptno = 30

ORDER BY

sal DESC,

ename;

查询工资大于等于4500并且部门为10或者20的员工的姓名\工资、部门编号。

SELECT

ename,

sal,

deptno

FROM

emp

WHERE

sal >= 4500

AND deptno IN (10, 20);

写一个查询,显示所有员工姓名,部门编号,部门名称。

SELECT

e.ename,

e.empno,

e.job

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno;

写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金

SELECT

e.ename,

d.loc,

e.comm

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno

AND d.loc = 'CHICAGO'

AND comm IS NOT NULL;

写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。

SELECT

e.ename,

d.loc

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno

AND e.ename LIKE '%A%';

查询每个员工的姓名和直接上级姓名

SELECT

w.ename 员工姓名,

m.ename 领导姓名

FROM

emp w,

emp m

WHERE

w.mgr = m.empno;

查询所有雇员姓名,部门编号,部门名称,包括没有部门的员工也要显示出来(左外连接)

SELECT

e.ename,

e.deptno,

d.dname

FROM

emp e

LEFT OUTER JOIN dept d ON (e.deptno = d.deptno);

查询所有雇员姓名,部门编号,部门名称,包括没有员工的部门也要显示出来 (右外连接)

SELECT

e.ename,

e.deptno,

d.dname

FROM

emp e

RIGHT OUTER JOIN dept d ON (e.deptno = d.deptno);

创建一个员工表和部门表的交叉连接。

SELECT

e.ename,

e.deptno,

d.deptno

FROM

emp e

CROSS JOIN dept d;

使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期

SELECT

e.ename,

d.dname,

e.hiredate

FROM

emp e

NATURAL JOIN dept d

WHERE

hiredate > '1980-05-01';

使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

SELECT

w.ename,

m.ename

FROM

emp w

LEFT JOIN emp m ON w.mgr = m.empno;

使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

SELECT

w.ename,

m.ename

FROM

emp m

RIGHT JOIN emp w ON w.mgr = m.empno;

显示员工SMITH的姓名,部门名称,直接上级名称

SELECT

w.ename 员工姓名,

m.ename 领导姓名,

d.dname 部门名称

FROM

emp w,

emp m,

dept d

WHERE

w.mgr = m.empno

AND w.deptno = d.deptno

AND w.ename = 'SMITH';

显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。

SELECT

e.ename,

d.dname,

e.sal,

s.grade

FROM

emp e,

dept d,

salgrade s

WHERE

e.deptno = d.deptno

AND e.sal BETWEEN s.losal

AND s.hisal

AND s.grade > 4;

显示员工KING和FORD管理的员工姓名及其经理姓名。

SELECT

e.ename AS '管理的员工姓名',

m.ename AS '员工姓名',

p.ename AS '经理姓名'

FROM

emp e,

emp m

LEFT OUTER JOIN emp p ON (m.mgr = p.empno)

WHERE

m.ename IN ('KING', 'FORD')

AND e.mgr = m.empno;

显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

SELECT

w.ename 员工姓名,

m.ename 经理姓名,

w.hiredate 员工入职时间,

m.hiredate 经理入职时间

FROM

emp w,

emp m

WHERE

w.mgr = m.empno

AND w.hiredate > m.hiredate;

查询部门30有多少个员工领取奖金

SELECT

COUNT(comm)

FROM

emp

WHERE

deptno = 30;

查询入职日期最早和最晚的日期

SELECT

MIN(hirdate),

MAX(HIREDATE)

FROM

emp

查询职位以SALES开头的所有员工平均工资、最低工资、最高工资、工资和。

SELECT

AVG(SAL) 平均工资,

MIN(SAL) 最低工资,

MAX(SAL) 最高工资,

SUM(SAL) 工资和

FROM

emp

WHERE

JOB LIKE 'SALES%'

IFNULL 函数可以使分组函数强制包含含有空值的记录

SELECT

COUNT(IFNULL(COMM,0))

FROM

emp;

所有员工的平均奖金

SELECT

AVG(IFNULL(COMM,0))

FROM

emp;

有奖金的平均奖金

SELECT

AVG(COMM)

FROM

emp;

查询部门20的员工,每个月的工资总和及平均工资。

SELECT

AVG(sal) 平均工资,

SUM(sal) 工资和

FROM

emp

WHERE

deptno = 20;

查询工作在CHICAGO的员工人数,最高工资及最低工资。

SELECT

COUNT(m.empno) 员工人数,

MAX(sal) 最高工资,

MIN(sal) 最低工资

FROM

emp m,

dept d

WHERE

m.deptno = d.DEPTNO

AND d.loc = 'CHICAGO';

查询员工表中一共有几种岗位类型

SELECT

COUNT(DISTINCT JOB)

FROM

emp;

group by 语句

查询每个部门的部门编号, 平均工资

SELECT

deptno,

avg(sal)

FROM

emp

GROUP BY

deptno;

查询每个部门的部门编号, 每个部门的最低工资

SELECT

deptno,

min(sal)

FROM

emp

GROUP BY

deptno;

查询每个部门的部门编号, 每个部门的最高工资

SELECT

deptno,

max(sal)

FROM

emp

GROUP BY

deptno;

查询每个部门每个岗位的工资总和

SELECT

deptno,

job,

sum(sal)

FROM

emp

GROUP BY

deptno,

job;

查询每个部门的部门编号,部门名称,部门人数,最高工资,最低工资,工资总和,平均工资。

SELECT

d.DEPTNO 部门编号,

d.DNAME 部门名称,

COUNT(*) 部门人数,

MAX(e.SAL) 最高工资,

MIN(e.SAL) 最低工资,

SUM(e.SAL) 工资总和,

AVG(e.SAL) 平均工资

FROM

emp e,

dept d

WHERE

e.DEPTNO = d.DEPTNO

GROUP BY

e.DEPTNO, d.DNAME;

查询每个部门,每个岗位的部门编号,部门名称,岗位名称,部门人数,最高工资,最低工资,工资总和,平均工资。

SELECT

d.DEPTNO 部门编号,

d.DNAME 部门名称,

e.JOB 岗位名称,

COUNT(*) 部门人数,

MAX(e.SAL) 最高工资,

MIN(e.SAL) 最低工资,

SUM(e.SAL) 工资总和,

AVG(e.SAL) 平均工资

FROM

emp e,

dept d

WHERE

e.DEPTNO = d.DEPTNO

GROUP BY

d.DEPTNO,d.DNAME, e.JOB;

查询每个经理所管理的人数,经理编号,经理姓名,要求包括没有经理的人员信息。

SELECT

COUNT(*) 管理人数,

m.EMPNO 经理编号,

m.ENAME 经理姓名

FROM

emp w

LEFT OUTER JOIN emp m ON w.MGR = m.EMPNO

GROUP BY

m.EMPNO,

m.ENAME

查询每个部门最高薪水大于2900的部门编号,最高工资

SELECT

e.DEPTNO,

MAX(e.sal)

FROM

emp e

GROUP BY

e.DEPTNO

HAVING

MAX(e.SAL) > 2900

查询每个工种, 工资总和, 并且工作不是以 SALE开头的且每个工种的工资和大于5000时输出,并按照结果的工资总数进行升序排序

SELECT

job 工种,

SUM(sal) 工资总和

FROM

emp

WHERE

job NOT LIKE 'SALES%'

GROUP BY

job

HAVING

SUM(sal) > 5000

ORDER BY

SUM(sal);

查询部门人数大于2的部门编号,部门名称,部门人数。

SELECT

e.DEPTNO 部门编号,

d.DNAME 部门名称,

COUNT(*) 部门人数

FROM

emp e,

dept d

WHERE

e.DEPTNO = d.DEPTNO

GROUP BY

e.DEPTNO

HAVING

COUNT(*) > 2

查询部门平均工资大于2000,且人数大于2的部门编号,部门名称,部门人数,部门平均工资,并按照部门人数升序排序。

SELECT

e.DEPTNO 部门编号,

d.DNAME 部门名称,

COUNT(*) 部门人数,

AVG(e.SAL) 部门平均工资

FROM

emp e,

dept d

WHERE

e.DEPTNO = d.DEPTNO

GROUP BY

e.DEPTNO

HAVING

(COUNT(*) > 2)

AND (AVG(e.SAL) > 2000)

ORDER BY

3

查询工资比Jones工资高的员工信息

SELECT

*

FROM

emp e

WHERE

e.SAL > ( SELECT e.SAL from emp e WHERE e.ENAME = 'JONES');

查询工资最低的员工姓名

SELECT

e.ENAME

FROM

emp e

WHERE

e.SAL = (SELECT MIN(e.sal) from emp e);

显示和工号7369从事相同工作并且工资大于7876的员工姓名和工作

SELECT e.ENAME, e.JOB

from emp e

WHERE

e.JOB = (SELECT JOB FROM emp WHERE EMPNO = 7369) and

e.sal > (SELECT SAL FROM emp WHERE EMPNO = 7876);

查询部门最低工资比20部门最低工资高的部门编号及最低工资

SELECT e.DEPTNO 部门编号 ,MIN(e.SAL)

from emp e

GROUP BY e.DEPTNO

HAVING

MIN(e.SAL) > (SELECT MIN(sal) from emp WHERE DEPTNO = 20)

查询入职日期比10部门任意一个员工晚的员工姓名、入职日期,不包括10部门员工

SELECT

e.ename AS '员工姓名',

e.hiredate AS '入职日期'

FROM

emp e

WHERE

e.deptno <> 10

AND e.hiredate > ANY (

SELECT

hiredate

FROM

emp

WHERE

deptno = 10

);

查询入职日期比10部门所有员工晚的员工姓名、入职日期,不包括10部门员工

SELECT

e.ename AS '员工姓名',

e.hiredate AS '入职日期'

FROM

emp e

WHERE

e.empno <> 10

AND e.hiredate > ALL (

SELECT

hiredate

FROM

emp

WHERE

deptno = 10

);

查询职位和10部门任意一个员工职位相同的员工姓名,职位,不包括10部门员工

SELECT

e.ename AS '员工姓名',

e.job AS '职位'

FROM

emp e

WHERE

e.deptno <> 10

AND e.job = ANY (

SELECT

job

FROM

emp

WHERE

deptno = 10

);

查询部门平均工资在2500元以上的部门名称及平均工资。

SELECT

d.dname AS '部门名称',

avg(e.sal) AS '平均工资'

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno

GROUP BY

e.deptno

HAVING

avg(e.sal) > 2500;

查询员工岗位中不是以“SA”开头并且平均工资在2500元以上的岗位及平均工资,并按平均工资降序排序。

SELECT

e.job AS '岗位',

avg(e.sal) AS '平均工资'

FROM

emp e

WHERE

e.job NOT LIKE 'SA%'

GROUP BY

e.job

HAVING

avg(e.sal) > 2500

ORDER BY

2 DESC;

查询部门人数在2人以上的部门名称、最低工资、最高工资。

SELECT

d.dname AS '部门名称',

min(e.sal) AS '最低工资',

max(e.sal) AS '最高工资'

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno

GROUP BY

d.deptno

HAVING

count(e.empno) > 2;

查询岗位不为SALESMAN,工资和大于等于2500的岗位及每种岗位的工资和。

SELECT

e.job AS '岗位',

sum(e.sal) AS '工资和'

FROM

emp e

WHERE

e.job <> 'SALESMAN'

GROUP BY

e.job

HAVING

sum(e.sal) > 2500;

显示经理号码和经理姓名,这个经理所管理员工的最低工资,没有经理的KING也要显示,不包括最低工资小于3000的,按最低工资由高到低排序

SELECT

m.empno AS '经理编号',

m.ename AS '经理姓名',

min(w.sal) AS '管理员工的最低工资'

FROM

emp w

LEFT OUTER JOIN emp m ON (w.mgr = m.empno)

GROUP BY

m.empno

HAVING

min(w.sal) > 3000

ORDER BY

3 DESC;

查询工资高于编号为7782的员工工资,并且和7369号员工从事相同工作的员工的编号、姓名及工资。

SELECT

e.empno AS '员工编号',

e.ename AS '员工姓名',

e.sal AS '员工工资'

FROM

emp e

WHERE

e.sal > (

SELECT

sal

FROM

emp

WHERE

empno = 7782

)

AND e.job = (

SELECT

job

FROM

emp

WHERE

empno = 7369

);

查询工资最高的员工姓名和工资。

SELECT

e.ename AS '员工姓名',

e.sal AS '员工工资'

FROM

emp e

ORDER BY

e.sal DESC

LIMIT 1;

SELECT

e.ename AS '员工姓名',

e.sal AS '员工工资'

FROM

emp e

WHERE

e.sal = (SELECT max(sal) FROM emp);

查询部门最低工资高于10号部门最低工资的部门的编号、名称及部门最低工资。

SELECT

d.deptno AS '部门编号',

d.dname AS '部门名称',

min(e.sal) AS '部门最低工资'

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno

GROUP BY

d.deptno

HAVING

min(e.sal) > (

SELECT

min(sal)

FROM

emp

WHERE

deptno = 10

);

查询员工工资为其部门最低工资的员工的编号和姓名及工资。

SELECT

e.empno AS '员工编号',

e.ename AS '员工姓名',

e.sal AS '员工工资'

FROM

emp e

WHERE

e.sal IN (

SELECT

min(e.sal)

FROM

emp e

GROUP BY

e.deptno

);

显示经理是KING的员工姓名,工资。

SELECT

w.ename AS '员工姓名',

w.sal AS '员工工资'

FROM

emp w,

emp m

WHERE

w.mgr = m.empno

AND m.ename = 'KING';

SELECT

w.ename AS '员工姓名',

w.sal AS '员工工资'

FROM

emp w

WHERE

w.mgr = (

SELECT

empno

FROM

emp

WHERE

ename = 'KING'

);

显示比员工SMITH参加工作时间晚的员工姓名,工资,参加工作时间。

SELECT

w.ename AS '员工姓名',

w.sal AS '员工工资',

w.hiredate AS '参加工作时间'

FROM

emp w

WHERE

w.hiredate > (

SELECT

hiredate

FROM

emp

WHERE

ename = 'SIMTH'

);

主键约束(PRIMARY KEY)

CREATE TABLE classes (

classes_id INT PRIMARY KEY,

classes_name VARCHAR (10),

classes_dept VARCHAR (10)

);

外键约束(FOREIGN KEY)

CREATE TABLE teacher (

teacher_id INT PRIMARY KEY,

teacher_name VARCHAR (10),

cid INT,

FOREIGN KEY (cid) REFERENCES classes (classes_id)

);

学校想做一个选课系统,其中涉及到课程表,学生表,请分别创建这两个表,自己思考表中应有的列及数据类型。

学校有一个选课系统,其中包括如下关系模式:

系(系编号: 主键,系名称: 唯一键,系主任: 非空约束,系所在校去:默认为浑南区)

班级(班级编号: 主键,班级名称: 唯一键,所属系: 外键)

创建学生表,包含如下属性:

学号 定长字符型 10位 主键

姓名 变长字符型 20位 非空

性别 定长字符型 2位

出生日期 日期型

所在班级

CREATE TABLE

IF NOT EXISTS xi (

XINumber VARCHAR (20) NOT NULL PRIMARY KEY,

XIName VARCHAR (20) NOT NULL UNIQUE,

XIZhuren VARCHAR (20) NOT NULL,

Xiaoqu enum ('浑南区')

);

CREATE TABLE

IF NOT EXISTS class (

classid VARCHAR (20) NOT NULL PRIMARY KEY,

cname VARCHAR (20) NOT NULL UNIQUE,

xiname VARCHAR (10) NOT NULL,

FOREIGN KEY (xiname) REFERENCES xi (xiname)

);

CREATE TABLE

IF NOT EXISTS student (

xh VARCHAR (20) NOT NULL PRIMARY KEY,

xm VARCHAR (20) NOT NULL,

gender CHAR (2),

birthday DATE,

cname VARCHAR (20) NOT NULL UNIQUE,

FOREIGN KEY (cname) REFERENCES class (cname)

);

创建与dept表相同表结构的表dtest,将dept表中部门编号在40之前的信息插入该表。

CREATE TABLE dtest SELECT

*

FROM

dept

WHERE

DEPTNO < 40;

创建与emp表结构相同的表empl,并将其部门编号为前30号的员工信息复制到empl表。

CREATE TABLE empl SELECT

*

FROM

emp

WHERE

DEPTNO < 30;

向部门表新增一个部门,部门编号为50,部门名称为HR,工作地点为SY。

INSERT INTO dept

VALUES

(50, "HR", "SY");

向部门表新增一个部门,部门编号为60,部门名称为MARKET。

INSERT INTO dept

VALUES

(60, "MARKET", "");

插入日期值

INSERT INTO emp

VALUES

(

8889,

'李会长',

'小青年',

NULL,

'1888-01-01

',

4000,

12,

50

);

向员工表中新增一个员工,员工编号为8888,姓名为BOB,岗位为CLERK,经理为号7788,入职日期为1985-03-03,薪资3000,奖金和部门为空。

INSERT INTO emp

VALUES

(

8899,

'BOB',

'clerk',

7788,

'1985-03-03',

3000,

NULL,

NULL

);

批量插入数据

INSERT INTO EMP(EMPNO, ENAME, JOB, SAL)

VALUES

('8881', '张三', '部门经理', 6000),

('8882', '李四', '职员', 3000),

('8883', '王五', '职员', 3500),

('8884' ,'赵六', '部门经理', 6500),

('8885', '高七', '职员', 2500),

('8886', '马八', '职员', 3100),

('8887', '钱九', '部门经理', 5000),

('8888', '孙十', '职员', 2800);

创建一个manager表

CREATE TABLE manager AS SELECT

*

FROM

emp

WHERE

1 = 0;

插入数据, 全部工作为salesman的数据

INSERT INTO manager SELECT

*

FROM

emp

WHERE

job = 'SALESMAN';

修改部门20的员工信息,把82年之后入职的员工入职日期向后调整10天

UPDATE emp

SET hiredate = DATE_ADD(hiredate, INTERVAL + 10 DAY)

WHERE

deptno = 20

AND hiredate > '1981-12-31';

修改奖金为null的员工,奖金设置为0

UPDATE emp

SET comm = 0

WHERE

comm IS NULL;

修改工作地点在NEW YORK或CHICAGO的员工工资,工资增加500

UPDATE emp

SET sal = sal + 500

WHERE

deptno IN (

SELECT

deptno

FROM

dept

WHERE

loc IN ('NEW YORK', 'CHICAGO')

);

使用CREATE TABLE emp_back as SELECT - FROM EMP WHERE 1=0,创建emp_back表,拷贝下来即可。

CREATE TABLE emp_back as SELECT * FROM EMP WHERE 1=0

把emp表中入职日期大于1982年1月1日之前的员工信息复制到emp_back表中

create table emp_back SELECT * from emp WHERE hiredate > '1982-01-01';

删除经理编号为7566的员工记录

delete from emp_copy where mgr=7566;

删除工作在NEW YORK的员工记录

DELETE

FROM

emp_copy

WHERE

deptno IN (

SELECT

DEPTNO

FROM

dept

WHERE

loc = 'NEW YORK'

)

删除工资大于所在部门平均工资的员工记录

DELETE FROM emp_copy WHERE empno in (select * from (SELECT

a.empno

FROM

emp_copy AS a,

(

SELECT

deptno,

AVG(sal) AS avgsal

FROM

emp_copy

GROUP BY

deptno

) as b

WHERE

a.deptno = b.deptno

AND a.sal > b.avgsal) as query)

delete from emp22 where sal>(select avg(sal) from emp e where emp22.deptno=e.deptno);

1、手动开启事务

start transaction;

2、执行一些操作

给张三账户转 50块钱

1d5feb75227c

image

1d5feb75227c

image

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值