有一员工信息表,使用SQL命令完成如下操作,表结构如表1所示。 表1 员工表(emp) 序号 列名 数据类型 说明 1 empid int 工号 2 name varchar(20) 姓名 3 gender Varchar(1) 性别 4 salary Float(9,2) 工资 (1)创建此员工表,并输入五条记录。 (2)查询工资大于4000元且姓王的男员工的记录。 (3)创建一个存储过程用来计算的员工工资之和。 (4)创建一个存储函数name_emp,实现对emp表查询,输入工号,执行函数即可输出姓名。 (5)创建一个名为ins_sum的触发器,触发条件是在向emp表中插入数据前,对新插入记录的salary字段求和。
时间: 2024-03-01 20:55:06 浏览: 71
好的,我会一条一条回答你的问题。
(1)创建此员工表,并输入五条记录。
```sql
CREATE TABLE emp (
empid INT PRIMARY KEY,
name VARCHAR(20),
gender VARCHAR(1),
salary FLOAT(9,2)
);
INSERT INTO emp VALUES (1, '张三', '男', 5000.00);
INSERT INTO emp VALUES (2, '李四', '男', 4500.00);
INSERT INTO emp VALUES (3, '王五', '男', 4800.00);
INSERT INTO emp VALUES (4, '赵六', '女', 3500.00);
INSERT INTO emp VALUES (5, '王七', '男', 4200.00);
```
(2)查询工资大于4000元且姓王的男员工的记录。
```sql
SELECT * FROM emp WHERE gender='男' AND salary>4000 AND name LIKE '王%';
```
(3)创建一个存储过程用来计算的员工工资之和。
```sql
CREATE PROCEDURE calc_salary_sum()
BEGIN
DECLARE total_salary FLOAT(9,2);
SELECT SUM(salary) INTO total_salary FROM emp;
SELECT total_salary;
END;
```
(4)创建一个存储函数name_emp,实现对emp表查询,输入工号,执行函数即可输出姓名。
```sql
CREATE FUNCTION name_emp(empid INT) RETURNS VARCHAR(20)
BEGIN
DECLARE emp_name VARCHAR(20);
SELECT name INTO emp_name FROM emp WHERE empid=empid;
RETURN emp_name;
END;
```
(5)创建一个名为ins_sum的触发器,触发条件是在向emp表中插入数据前,对新插入记录的salary字段求和。
```sql
CREATE TRIGGER ins_sum BEFORE INSERT ON emp
FOR EACH ROW
BEGIN
DECLARE total_salary FLOAT(9,2);
SELECT SUM(salary) INTO total_salary FROM emp;
SET NEW.salary_sum = total_salary + NEW.salary;
END;
```
以上就是对你提出的问题的 SQL 解决方案,希望能帮到你。
阅读全文