解释以下代码Create procedure proc123(age int) BEGIN Select * from 员工 where 员工年龄 = age; END
时间: 2023-06-14 11:08:29 浏览: 95
这是一段 MySQL 存储过程的代码,其中:
- `Create procedure proc123(age int)` 表示创建一个名为 `proc123` 的存储过程,并且该存储过程需要一个整型参数 `age`。
- `BEGIN` 和 `END` 之间的部分是存储过程的主体。在这里,它包含了一个查询语句 `Select * from 员工 where 员工年龄 = age`。该语句的含义是从 `员工` 表中选择所有年龄等于参数 `age` 的记录。
- 存储过程的作用是将查询语句封装起来,方便在需要多次使用相同查询语句的情况下,直接调用存储过程,避免了重复编写相同的查询语句的麻烦,提高了代码的可维护性和可读性。
相关问题
给出SQL代码:(1) 创建存储过程Stu_proc_number,使用Student表中的学生人数来初始化一个局部变量,并调用这个存储过程。 (2) 创建添加学生记录的存储过程Stu_proc_add,并调用该存储过程。 (3) 创建存储过程Stu_proc_age,比较两学生的年龄,若前者比后者大就输出 0,否则输出1,并执行该存储过程。 (4) 创建一存储过程Stu_proc_course,用来传入的参数:课程号,判断该课程是否已有学生选修。若有,存储过程返回1,若没有,存储过程返回0。 (5) 创
建立存储过程Stu_proc_number:
```
CREATE PROCEDURE Stu_proc_number
AS
BEGIN
DECLARE @stu_count INT
SELECT @stu_count = COUNT(*) FROM Student
PRINT '学生人数:' + CONVERT(VARCHAR, @stu_count)
END
EXEC Stu_proc_number
```
创建存储过程Stu_proc_add:
```
CREATE PROCEDURE Stu_proc_add
@stu_name VARCHAR(30),
@stu_age INT,
@stu_course VARCHAR(20)
AS
BEGIN
INSERT INTO Student (name, age, course) VALUES (@stu_name, @stu_age, @stu_course)
PRINT '添加成功'
END
EXEC Stu_proc_add '张三', 20, '数学'
```
创建存储过程Stu_proc_age:
```
CREATE PROCEDURE Stu_proc_age
@stu_id1 INT,
@stu_id2 INT
AS
BEGIN
DECLARE @age1 INT, @age2 INT
SELECT @age1 = age FROM Student WHERE id = @stu_id1
SELECT @age2 = age FROM Student WHERE id = @stu_id2
IF @age1 > @age2
PRINT 0
ELSE
PRINT 1
END
EXEC Stu_proc_age 1, 2
```
创建存储过程Stu_proc_course:
```
CREATE PROCEDURE Stu_proc_course
@course VARCHAR(20)
AS
BEGIN
IF EXISTS (SELECT * FROM Student WHERE course = @course)
PRINT 1
ELSE
PRINT 0
END
EXEC Stu_proc_course '语文'
```
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;
```
阅读全文