select deptno from dept where unique (select comm from emp where comm is not null);mysql支持吗
时间: 2023-12-18 08:03:08 浏览: 25
这个 SQL 语句有语法错误,应该修改为:
```
SELECT deptno FROM dept WHERE (SELECT COUNT(DISTINCT comm) FROM emp WHERE comm IS NOT NULL) = 1;
```
这个语句的作用是查询只有一个员工拥有非空 comm 值的部门号。至于 MySQL 是否支持,答案是支持的。
相关问题
马士兵 dept emp salgrade mysql 建表
### 回答1:
根据题目要求,需建立一个管理马士兵员工、部门和薪资等级的数据库表。根据给出的关键词,我们可以创建以下三个表:dept(部门表)、emp(员工表)和salgrade(薪资等级表),具体表结构如下:
1. 部门表(dept):
表名:dept
字段:dept_id(部门编号,主键)、dept_name(部门名称)
2. 员工表(emp):
表名:emp
字段:emp_id(员工编号,主键)、emp_name(员工姓名)、dept_id(部门编号,外键关联dept表的dept_id字段)、salary(薪资)
3. 薪资等级表(salgrade):
表名:salgrade
字段:grade(等级号码,主键)、low_salary(最低薪资)、high_salary(最高薪资)
通过以上三个表的设计,可以实现马士兵员工的部门、薪资等级的管理。在emp表中,通过dept_id字段与dept表进行关联,方便查询员工所在部门信息;在emp表中,salary字段存储员工的薪资信息;在salgrade表中,通过grade字段建立薪资等级和对应薪资范围的关联,方便查询员工所在薪资等级。
以上是根据提供的关键词建立的简单数据库表结构,具体根据实际需求可能有所不同。在实际使用中,还可以根据具体业务需求增加更多字段和表的设计,以满足更复杂的数据管理需求。
### 回答2:
马士兵 dept emp salgrade mysql 建表有以下几个步骤:
首先,我们需要建立一个部门(dept)表。这个表将包含部门的信息,如部门编号(deptno)和部门名称(dname)。可以使用以下语句创建该表:
CREATE TABLE dept (
deptno INT PRIMARY KEY,
dname VARCHAR(255) NOT NULL
);
接下来,我们可以创建一个员工(emp)表。这个表将包含员工的信息,如员工编号(empno)、员工姓名(ename)、职位(job)、上级领导(mgr)、入职日期(hiredate)、工资(sal)、奖金(comm)和所属部门编号(deptno)。可以使用以下语句创建该表:
CREATE TABLE emp (
empno INT PRIMARY KEY,
ename VARCHAR(255) NOT NULL,
job VARCHAR(255),
mgr INT,
hiredate DATE,
sal FLOAT,
comm FLOAT,
deptno INT,
FOREIGN KEY (deptno) REFERENCES dept (deptno)
);
最后,我们可以创建一个工资等级(salgrade)表。这个表将包含不同工资等级的信息,如等级(grade)、最低工资(losal)和最高工资(hisal)。可以使用以下语句创建该表:
CREATE TABLE salgrade (
grade INT PRIMARY KEY,
losal FLOAT,
hisal FLOAT
);
通过以上步骤,我们成功建立了马士兵 dept emp salgrade 的 mysql 表结构。这些表将有助于存储和管理相关的部门、员工和工资等级信息。
### 回答3:
马士兵dept emp salgrade mysql建表如下:
1. 建立dept表:
CREATE TABLE dept (
deptno INT(4) NOT NULL, -- 部门编号
dname VARCHAR(40), -- 部门名称
loc VARCHAR(30), -- 部门所在地
PRIMARY KEY (deptno)
);
2. 建立emp表:
CREATE TABLE emp (
empno INT(4) NOT NULL, -- 员工编号
ename VARCHAR(10), -- 员工姓名
job VARCHAR(30), -- 员工职位
mgr INT(4), -- 上级员工编号
hiredate DATE, -- 入职日期
sal DECIMAL(7, 2), -- 员工薪水
comm DECIMAL(7, 2), -- 员工佣金
deptno INT(4), -- 部门编号
PRIMARY KEY (empno),
FOREIGN KEY (deptno) REFERENCES dept(deptno)
);
3. 建立salgrade表:
CREATE TABLE salgrade (
grade INT(2) NOT NULL, -- 薪资等级
losal DECIMAL(7, 2), -- 最低薪资
hisal DECIMAL(7, 2), -- 最高薪资
PRIMARY KEY (grade)
);
以上是根据马士兵所提供的信息,在MySQL中建立了三个表:dept、emp和salgrade。dept表用于存储部门信息,包括部门编号、部门名称和部门所在地;emp表用于存储员工信息,包括员工编号、员工姓名、员工职位、上级员工编号、入职日期、员工薪水、员工佣金和所属部门编号;salgrade表用于存储薪资等级信息,包括薪资等级、最低薪资和最高薪资。在emp表中,使用了外键约束,将部门编号与dept表中的部门编号进行关联。这样就可以通过查询操作等关联表的数据,获得相关的员工和部门信息。
创建表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语句向表中插入了一些数据。