存储过程CREATE TABLE yuangong ( ygno VARCHAR(20) NOT NULL PRIMARY KEY, yename VARCHAR(20) NOT NULL, ygpos VARCHAR(20) NOT NULL, ygsex VARCHAR(20) NOT NULL, ygage INT NOT NULL, ygtel VARCHAR(20) NOT NULL, CHECK (ygsex IN ('男', '女')), CHECK (ygage > 18 AND ygage < 65), CHECK (ygpos IN ('经理', '主管', '快递员'))); INSERT INTO yuangong VALUES ('20001', '诸一', '经理', '男', 50, '88228801');INSERT INTO yuangong VALUES ('20002', '伟二', '主管', '男', 48, '88228802');INSERT INTO yuangong VALUES ('20003', '蒋三', '主管', '男', 46, '88228803');INSERT INTO yuangong VALUES ('20004', '沈四', '主管', '女', 39, '88228804');INSERT INTO yuangong VALUES ('20005', '韩五', '快递员', '男', 30, '88228805');INSERT INTO yuangong VALUES ('20006', '杨六', '快递员', '男', 32, '88228806');INSERT INTO yuangong VALUES ('20007', '朱七', '快递员', '男', 31, '88228807');INSERT INTO yuangong VALUES ('20008', '秦八', '快递员', '男', 31, '88228808');INSERT INTO yuangong VALUES ('20009', '许九', '快递员', '男', 31, '88228809');INSERT INTO yuangong VALUES ('20010', '龚十', '快递员', '男', 31, '88228810');
时间: 2023-08-20 13:34:59 浏览: 135
好的,您提供的是一个员工表(yuangong),包含员工号(ygno)、姓名(yename)、职位(ygpos)、性别(ygsex)、年龄(ygage)和电话(ygtel)等字段。同时,在表定义中还定义了三个CHECK约束,用于限制员工的性别、年龄和职位等数据的合法性。
接下来,您向员工表中插入了10条员工记录,并且每条记录都符合CHECK约束的限制条件。这些员工记录包括一位经理、三位主管和六位快递员。
如果您想要创建一个存储过程,用于查询yuangong表中的所有员工记录,并按照年龄从小到大排序,可以使用如下的CREATE PROCEDURE语句:
```
CREATE PROCEDURE query_yuangong()
BEGIN
SELECT * FROM yuangong ORDER BY ygage ASC;
END;
```
该存储过程被命名为query_yuangong,它没有任何输入参数,并且使用SELECT语句查询yuangong表中的所有员工记录,并按照年龄从小到大排序。在执行该存储过程时,会返回所有员工记录的详细信息,包括员工号、姓名、职位、性别、年龄和电话等字段。
当您执行以下SQL语句时,将会调用该存储过程并返回所有员工记录:
```
CALL query_yuangong();
```
需要注意的是,在MySQL中创建存储过程需要使用DELIMITER语句重新定义语句分隔符。例如,您可以使用以下的语句将语句分隔符重新定义为$$:
```
DELIMITER $$
```
然后,创建存储过程的语句应该以$$作为结束标记,例如:
```
CREATE PROCEDURE query_yuangong()
BEGIN
SELECT * FROM yuangong ORDER BY ygage ASC;
END $$
```
在创建完存储过程后,可以使用DELIMITER语句将语句分隔符恢复为原来的分号(;)。例如,您可以使用以下的语句将语句分隔符恢复为分号:
```
DELIMITER ;
```
阅读全文