1. 在数据库mysqltest中,创建Dept1表:Dept1(deptno,dname,higherdeptno) ,说明:部门编号(整型),部门名称(定长字符串、长度20),上级部门编号(整型,缺省值为NULL),并建立名为fk_higher的主外键关联。 
时间: 2023-05-22 16:03:13 浏览: 47
CREATE TABLE Dept1(
deptno INT PRIMARY KEY,
dname CHAR(20) NOT NULL,
higherdeptno INT DEFAULT NULL,
CONSTRAINT fk_higher FOREIGN KEY (higherdeptno) REFERENCES Dept1 (deptno)
);
上面的 SQL 代码将在名为mysqltest的数据库中定义Dept1表。该表将具有3列,分别为deptno、dname和higherdeptno,对应部门编号、部门名称和上级部门编号。deptno列将作为主键,higherdeptno列将作为外键,并与Dept1表的deptno列相匹配。注意:dname列定义为CHAR(20),而不是定长字符串,因为在MySQL中,没有定长字符串的数据类型。
相关问题
这个为什么报错 ora-00923:SELECT d.deptno AS 部门号, COUNT(*) AS 工资大于2000的员工数 FROM emp e JOIN dept d ON e.deptno = d.deptno WHERE e.sal > 2000 GROUP BY d.deptno ORDER BY COUNT(*) DESC LIMIT 1;
这个报错是因为在 Oracle 数据库中并不支持使用 LIMIT 语句进行限制返回条数。如果你想要限制返回条数,可以使用 Oracle 提供的 ROWNUM 语句来实现,例如:
```
SELECT *
FROM (
SELECT d.deptno AS 部门号, COUNT(*) AS 工资大于2000的员工数
FROM emp e JOIN dept d ON e.deptno = d.deptno
WHERE e.sal > 2000
GROUP BY d.deptno
ORDER BY COUNT(*) DESC
)
WHERE ROWNUM <= 1;
```
这样就可以限制返回结果为一条记录。
数据库题 部门表Dept: Deptno(邮门编码)、dname(部门名称) 人员表emp: empno(人员编码)、empname(人员姓名)、 Deptno(部门) 、mgr(上级)、hiredate(入职日期)、 job.(工作)、sal(工资) 1.列出最低工资大于1500的各种工作。 2. a.列出工资高于公司平均工资的所有员工。 b.列出工资高于本部门平均工资的所有员工。 3、列出工资等于部门开发部”中员工的工资的所有员工的姓名和工资。 4、列出各种工作工资前3名的员工 5、列出在每个部门工作的员工数量、平均工资
1. SELECT DISTINCT job FROM emp WHERE sal > 1500;
2.a. SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp);
b. SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp WHERE Deptno = emp.Deptno);
3. SELECT empname, sal FROM emp WHERE Deptno = (SELECT Deptno FROM Dept WHERE dname = "开发部") AND sal = (SELECT sal FROM emp WHERE Deptno = (SELECT Deptno FROM Dept WHERE dname = "开发部"));
4. SELECT empname, sal FROM emp WHERE job IN (SELECT DISTINCT job FROM emp) ORDER BY sal DESC LIMIT 3;
5. SELECT Dept.dname, COUNT(emp.Deptno), AVG(emp.sal) FROM Dept JOIN emp ON Dept.Deptno = emp.Deptno GROUP BY Dept.dname;
相关推荐








