MYSQL 创建存储过程proc_guozilong,根据输入的sid,查询该商店经理数和员工数,然后显示店内员工的姓名、薪水、职位和所在的商店的店名: 调用存储过程,显示编号2102001的商店
时间: 2024-03-16 12:42:31 浏览: 14
好的,以下是创建存储过程 proc_guozilong 的 SQL 代码:
```
CREATE PROCEDURE proc_guozilong(IN sid INT)
BEGIN
SELECT COUNT(CASE WHEN job_title = '经理' THEN 1 ELSE NULL END) AS '经理数',
COUNT(CASE WHEN job_title = '员工' THEN 1 ELSE NULL END) AS '员工数',
emp_name, salary, job_title, store_name
FROM employees e
INNER JOIN stores s ON e.store_id = s.store_id
WHERE s.store_id = sid
GROUP BY emp_name, salary, job_title, store_name;
END
```
然后,以下是调用存储过程以显示编号为 2102001 的商店的员工信息的 SQL 代码:
```
CALL proc_guozilong(2102001);
```
这将会显示编号为 2102001 的商店中所有员工的姓名、薪水、职位和所在的商店的店名,以及该商店的经理数和员工数。注意,这里的存储过程假设员工表为 employees,商店表为 stores,且它们之间存在 store_id 列以关联两个表。
相关问题
MYSQL 1、使用SQL语句创建数据库company,创建员工表emp_guozilong, 字段名:uid(编号)、username(姓名)、sex(性别)、age(年龄)、salary(薪水)、post(岗位)、married(是否结婚)、sid(商店编号) 字符集为:gb2312 2、创建表shop,字段名为sid(商店编号)、sname(商店名) 、addr(商店地址)、 sdate(开店时间) 3、查询年龄最小的一位女员工的信息。 4、查询年龄在20-25之间,未婚的女员工信息。 5、分组显示男经理和男店员的平均年龄。 6、查询各个店的店名称、店地址和店经理姓名。 7、使用子查询,将朝阳一店所有经理的工资薪水修改为9000。 8、创建视图view_guizilong ,显示商店所有男员工信息。 9、创建存储过程 proc_guozilong ,根据输入的 sid:2102001 ,查询该商店经理数和员工数,然后显示店内员工的姓名、薪水、职位、和所在的商店的店名。 10、创建触发器tri_guozilong ,当从shop表删除记录之后,将被删除商店的所有员工信息从员工表中删除。 11、创建事件ev_guozilong ,从2023年6月10日开始,每2小时,分组查询次未婚和已婚的员工数量,然后将事件临时关闭后,查看事件。
1. 创建数据库和员工表:
```
CREATE DATABASE company CHARACTER SET gb2312;
USE company;
CREATE TABLE emp_guozilong (
uid INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
sex VARCHAR(10),
age INT,
salary DECIMAL(10,2),
post VARCHAR(20),
married VARCHAR(10),
sid INT
);
```
2. 创建商店表:
```
CREATE TABLE shop (
sid INT PRIMARY KEY,
sname VARCHAR(20),
addr VARCHAR(50),
sdate DATE
);
```
3. 查询年龄最小的一位女员工的信息:
```
SELECT * FROM emp_guozilong WHERE sex='女' ORDER BY age LIMIT 1;
```
4. 查询年龄在20-25之间,未婚的女员工信息:
```
SELECT * FROM emp_guozilong WHERE sex='女' AND age BETWEEN 20 AND 25 AND married='否';
```
5. 分组显示男经理和男店员的平均年龄:
```
SELECT sex, post, AVG(age) FROM emp_guozilong WHERE sex='男' AND (post='经理' OR post='店员') GROUP BY post;
```
6. 查询各个店的店名称、店地址和店经理姓名:
```
SELECT s.sname, s.addr, e.username
FROM shop s, emp_guozilong e
WHERE s.sid=e.sid AND e.post='经理';
```
7. 使用子查询,将朝阳一店所有经理的工资薪水修改为9000:
```
UPDATE emp_guozilong SET salary=9000
WHERE sid=(SELECT sid FROM shop WHERE sname='朝阳一店') AND post='经理';
```
8. 创建视图view_guizilong,显示商店所有男员工信息:
```
CREATE VIEW view_guizilong AS
SELECT * FROM emp_guozilong WHERE sex='男';
```
9. 创建存储过程proc_guozilong,根据输入的sid:2102001,查询该商店经理数和员工数,然后显示店内员工的姓名、薪水、职位和所在的商店的店名:
```
CREATE PROCEDURE proc_guozilong(IN sid_in INT)
BEGIN
DECLARE mgr_count INT;
DECLARE emp_count INT;
DECLARE sname VARCHAR(20);
SELECT COUNT(*) INTO mgr_count FROM emp_guozilong WHERE sid=sid_in AND post='经理';
SELECT COUNT(*) INTO emp_count FROM emp_guozilong WHERE sid=sid_in;
SELECT sname INTO sname FROM shop WHERE sid=sid_in;
SELECT username, salary, post, sname
FROM emp_guozilong e, shop s
WHERE e.sid=s.sid AND e.sid=sid_in;
SELECT CONCAT('该商店经理数:', mgr_count, ',员工数:', emp_count, ',所属商店名称:', sname) AS info;
END;
```
10. 创建触发器tri_guozilong,当从shop表删除记录之后,将被删除商店的所有员工信息从员工表中删除:
```
CREATE TRIGGER tri_guozilong AFTER DELETE ON shop
FOR EACH ROW
BEGIN
DELETE FROM emp_guozilong WHERE sid=OLD.sid;
END;
```
11. 创建事件ev_guozilong,从2023年6月10日开始,每2小时,分组查询次未婚和已婚的员工数量,然后将事件临时关闭后,查看事件:
```
CREATE EVENT ev_guozilong
ON SCHEDULE EVERY 2 HOUR STARTS '2023-06-10 00:00:00'
DO
BEGIN
SELECT married, COUNT(*) FROM emp_guozilong GROUP BY married;
END;
ALTER EVENT ev_guozilong ON COMPLETION PRESERVE DISABLE;
SHOW EVENTS;
```
navicat创建存储过程proc_3,实现根据商品编号查询某一商品的名称和价格,并调用此存储过程,显示执行结果。
可以按照以下步骤创建存储过程proc_3:
1. 打开Navicat,连接到数据库。
2. 选择要创建存储过程的数据库,右键点击“Stored Procedures”,选择“New Stored Procedure”。
3. 在“New Stored Procedure”窗口中,输入存储过程名称“proc_3”。
4. 在“SQL Editor”中编写存储过程代码:
```
CREATE PROCEDURE proc_3(IN id INT)
BEGIN
SELECT name, price FROM products WHERE id = id;
END
```
上述代码中,我们定义了一个输入参数id,用于传递商品编号。存储过程执行时,会根据传入的商品编号查询商品名称和价格,并返回结果集。
5. 点击“Save”保存存储过程。
6. 调用存储过程,可以使用以下SQL语句:
```
CALL proc_3(1001);
```
上述SQL语句中,我们调用了存储过程proc_3,传入参数1001,表示查询商品编号为1001的商品名称和价格。
执行以上SQL语句后,Navicat会显示执行结果,包括商品名称和价格。