员工表EMP (EMPNO,ENAME,MGR,SAL,AGE,JOB,DEPTNO) EMPNO,ENAME,MGR,AGE,SAL,JOB,DEPTNO 分别代表员工编号,员工姓名, 经理编号,工资,年龄,职位,部门编号。 部门表DEPT (DEPTNO,DNAME ) DEPTNO,DNAME 分别代表部门编号、部门名称。 1.查询员工编号是‘7759’的员工信息。 2.查询部门编号是‘1’的部门有多少员工。 3.查询员工编号是‘7759’的员工姓名和所在部门名称。 4.查询所有部门的部门编号和部门内员工的平均工资。 5.查找名字为 CLARK 的员工的名字、工资与其经理的名字、工资
时间: 2024-03-17 16:44:58 浏览: 14
1. 查询员工编号是‘7759’的员工信息。
```sql
SELECT * FROM EMP WHERE EMPNO = '7759';
```
2. 查询部门编号是‘1’的部门有多少员工。
```sql
SELECT COUNT(*) FROM EMP WHERE DEPTNO = '1';
```
3. 查询员工编号是‘7759’的员工姓名和所在部门名称。
```sql
SELECT EMP.ENAME, DEPT.DNAME
FROM EMP
INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO
WHERE EMP.EMPNO = '7759';
```
4. 查询所有部门的部门编号和部门内员工的平均工资。
```sql
SELECT DEPT.DEPTNO, AVG(EMP.SAL) AS AVG_SAL
FROM EMP
INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO
GROUP BY DEPT.DEPTNO;
```
5. 查找名字为 CLARK 的员工的名字、工资与其经理的名字、工资。
```sql
SELECT E1.ENAME, E1.SAL, E2.ENAME AS MGR_NAME, E2.SAL AS MGR_SAL
FROM EMP E1
INNER JOIN EMP E2 ON E1.MGR = E2.EMPNO
WHERE E1.ENAME = 'CLARK';
```
相关问题
创建表emp,并插入 EMPNO、ENAME、JOB、MGR、HIREDATE、SAL、COMM 和 DEPTNO这些列
好的,以下是创建表emp并插入数据的SQL语句:
```
CREATE TABLE emp (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
INSERT INTO emp VALUES (7369, 'SMITH', 'CLERK', 7902, TO_DATE('1980-12-17', 'YYYY-MM-DD'), 800, NULL, 20);
INSERT INTO emp VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('1981-02-20', 'YYYY-MM-DD'), 1600, 300, 30);
INSERT INTO emp VALUES (7521, 'WARD', 'SALESMAN', 7698, TO_DATE('1981-02-22', 'YYYY-MM-DD'), 1250, 500, 30);
INSERT INTO emp VALUES (7566, 'JONES', 'MANAGER', 7839, TO_DATE('1981-04-02', 'YYYY-MM-DD'), 2975, NULL, 20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('1981-09-28', 'YYYY-MM-DD'), 1250, 1400, 30);
INSERT INTO emp VALUES (7698, 'BLAKE', 'MANAGER', 7839, TO_DATE('1981-05-01', 'YYYY-MM-DD'), 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'CLARK', 'MANAGER', 7839, TO_DATE('1981-06-09', 'YYYY-MM-DD'), 2450, NULL, 10);
INSERT INTO emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, TO_DATE('1982-12-09', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING', 'PRESIDENT', NULL, TO_DATE('1981-11-17', 'YYYY-MM-DD'), 5000, NULL, 10);
INSERT INTO emp VALUES (7844, 'TURNER', 'SALESMAN', 7698, TO_DATE('1981-09-08', 'YYYY-MM-DD'), 1500, 0, 30);
INSERT INTO emp VALUES (7876, 'ADAMS', 'CLERK', 7788, TO_DATE('1983-01-12', 'YYYY-MM-DD'), 1100, NULL, 20);
INSERT INTO emp VALUES (7900, 'JAMES', 'CLERK', 7698, TO_DATE('1981-12-03', 'YYYY-MM-DD'), 950, NULL, 30);
INSERT INTO emp VALUES (7902, 'FORD', 'ANALYST', 7566, TO_DATE('1981-12-03', 'YYYY-MM-DD'), 3000, NULL, 20);
INSERT INTO emp VALUES (7934, 'MILLER', 'CLERK', 7782, TO_DATE('1982-01-23', 'YYYY-MM-DD'), 1300, NULL, 10);
```
这个SQL语句会先创建一个名为emp的表,包含EMPNO、ENAME、JOB、MGR、HIREDATE、SAL、COMM和DEPTNO这些列,并将EMPNO列设为主键。然后,通过INSERT INTO语句向表中插入了一些数据。
有员工关系emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) (1)创建存储过程emp_p,用游标提取emp表中3344雇员的姓名和职务; (2)调用存储过程emp_p。
以下是实现上述存储过程的 SQL 代码:
```
CREATE PROCEDURE emp_p
AS
BEGIN
DECLARE @empno INT
DECLARE @ename VARCHAR(50)
DECLARE @job VARCHAR(50)
DECLARE emp_cursor CURSOR FOR
SELECT empno, ename, job
FROM emp
WHERE empno = 3344
OPEN emp_cursor
FETCH NEXT FROM emp_cursor INTO @empno, @ename, @job
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Employee Name: ' + @ename + ', Job: ' + @job
FETCH NEXT FROM emp_cursor INTO @empno, @ename, @job
END
CLOSE emp_cursor
DEALLOCATE emp_cursor
END
```
该存储过程使用游标提取 `emp` 表中雇员编号为 3344 的姓名和职务信息,并通过 `PRINT` 语句输出结果。你可以通过以下代码调用该存储过程:
```
EXEC emp_p
```
注意,在调用存储过程时不需要传递任何参数。