diff --git "a/18 \345\276\220\346\260\270\346\267\263/20231011\344\275\234\344\270\232.md" "b/18 \345\276\220\346\260\270\346\267\263/20231011\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..32b500bc6aaf01e2d2a8e51d81b7fae45c40aa25 --- /dev/null +++ "b/18 \345\276\220\346\260\270\346\267\263/20231011\344\275\234\344\270\232.md" @@ -0,0 +1,103 @@ +```mysql +create database x charset utf8; + +use x; +-- 部门表 +create table dept( + deptno int primary key auto_increment, -- 部门编号 + dname varchar(14) , -- 部门名字 + loc varchar(13) -- 地址 +) ; +-- 员工表 +create table emp( + empno int primary key auto_increment,-- 员工编号 + ename varchar(10), -- 员工姓名 - + job varchar(9), -- 岗位 + mgr int, -- 直接领导编号 + hiredate date, -- 雇佣日期,入职日期 + sal int, -- 薪水 + comm int, -- 提成 + deptno int not null, -- 部门编号 + foreign key (deptno) references dept(deptno) +); +insert into dept values(10,'财务部','北京'); +insert into dept values(20,'研发部','上海'); +insert into dept values(30,'销售部','广州'); +insert into dept values(40,'行政部','深圳'); +insert into emp values(7369,'刘一','职员',7902,'1980-12-17',800,null,20); +insert into emp values(7499,'陈二','推销员',7698,'1981-02-20',1600,300,30); +insert into emp values(7521,'张三','推销员',7698,'1981-02-22',1250,500,30); +insert into emp values(7566,'李四','经理',7839,'1981-04-02',2975,null,20); +insert into emp values(7654,'王五','推销员',7698,'1981-09-28',1250,1400,30); +insert into emp values(7698,'赵六','经理',7839,'1981-05-01',2850,null,30); +insert into emp values(7782,'孙七','经理',7839,'1981-06-09',2450,null,10); +insert into emp values(7788,'周八','分析师',7566,'1987-06-13',3000,null,20); +insert into emp values(7839,'吴九','总裁',null,'1981-11-17',5000,null,10); +insert into emp values(7844,'郑十','推销员',7698,'1981-09-08',1500,0,30); +insert into emp values(7876,'郭十一','职员',7788,'1987-06-13',1100,null,20); +insert into emp values(7900,'钱多多','职员',7698,'1981-12-03',950,null,30); +insert into emp values(7902,'大锦鲤','分析师',7566,'1981-12-03',3000,null,20); +insert into emp values(7934,'木有钱','职员',7782,'1983-01-23',1300,null,10); + + + +-- 1.利用游标,查询并计算出emp表中全公司的总薪资(salary和comm) +delimiter && +create procedure kk() +begin +declare i int default 1; +declare sum_sal int; +declare sum_comm int; +declare count int; +declare sumsalary int default 0; + declare x cursor for select sal+ifnull(comm,0) from emp; + select count(*) into count from emp; + open x; + while i<=count do + fetch x into sum_sal; + set sumsalary=sum_sal+sumsalary; + set i=i+1; + end while; + close x; + select sumsalary; +end && +call kk(); +-- 2.利用游标修改表格,如果sal<1000,则删除工资为此值的员工,如果1000 < sal <= 3000,该员工薪资涨100,将信息赋值到一个新表,否则扣工资100 + + +delimiter // +create procedure aa() +begin + declare salary int default 0; + declare eid int ; + declare i int default 1; + declare count int; + + declare uemp cursor for select empno,sal from emp; + select count(*) into count from emp; + create table v_3( + eid int, + salary int + ); + + open uemp; + + while i<=count do + fetch uemp into eid,salary; + if salary<1000 then + delete from emp where sal<1000; + elseif 1000