以下是您要求的步骤和查询的SQL示例,首先创建数据库和表,然后插入数据并执行查询:
步骤1:创建数据库
首先,创建一个名为 "Enterprise_学号后三位" 的数据库。
sqlCopy code
CREATE DATABASE Enterprise_102; -- 请根据您的学号后三位修改数据库名 USE Enterprise_102;
步骤2:创建表
创建与给定关系模型对应的表格,分别为 Department_102
、Employee_102
、Project_102
、Works_on_102
。
sqlCopy code
-- 创建Department_102表
-- 创建Department_102表
CREATE TABLE Department_102 (
dept_no INT PRIMARY KEY,
dept_name VARCHAR(50),
location VARCHAR(50)
);
-- 创建Employee_102表
CREATE TABLE Employee_102 (
emp_no INT PRIMARY KEY,
emp_fname VARCHAR(50),
emp_lname VARCHAR(50),
dept_no INT,
FOREIGN KEY (dept_no) REFERENCES Department_102(dept_no)
);
-- 创建Project_102表
CREATE TABLE Project_102 (
project_no INT PRIMARY KEY,
project_name VARCHAR(50),
budget DECIMAL(10, 2)
);
-- 创建Works_on_102表
CREATE TABLE Works_on_102 (
emp_no INT,
project_no INT,
job VARCHAR(50),
enter_date DATE,
FOREIGN KEY (emp_no) REFERENCES Employee_102(emp_no),
FOREIGN KEY (project_no) REFERENCES Project_102(project_no)
);
步骤3:插入数据
向每个表中插入至少3条记录,以下是示例数据的插入:
-- 插入Department_102表数据
INSERT INTO Department_102 (dept_no, dept_name, location)
VALUES
(1, 'HR', 'New York'),
(2, 'IT', 'Dallas'),
(3, 'Marketing', 'Los Angeles');
-- 插入Employee_102表数据
INSERT INTO Employee_102 (emp_no, emp_fname, emp_lname, dept_no)
VALUES
(101, 'John', 'Smith', 1),
(102, 'Jane', 'Doe', 2),
(103, 'Michael', 'Johnson', 2);
-- 插入Project_102表数据
INSERT INTO Project_102 (project_no, project_name, budget)
VALUES
(1, 'P1', 50000.00),
(2, 'P2', 75000.00),
(3, 'P3', 60000.00);
-- 插入Works_on_102表数据
INSERT INTO Works_on_102 (emp_no, project_no, job, enter_date)
VALUES
(101, 1, 'Manager', '2023-01-15'),
(102, 2, 'Developer', '2023-02-20'),
(103, 3, 'Designer', '2023-03-25');
步骤4:执行查询
现在,我们可以执行您提出的查询:
- 查询部门的编号、名称和位置:
SELECT dept_no, dept_name, location
FROM Department_102;
- 查询位于Dallas的部门编号和名称:
SELECT dept_no, dept_name
FROM Department_102
WHERE location = 'Dallas';
- 查询预算额的0.31倍大于60000的项目名称:
SELECT project_name
FROM Project_102
WHERE budget * 0.31 > 60000;
- 查询在部门编号为d1的部门工作且职员编号为23348或职工名称为‘Matthew’的雇员信息:
SELECT emp_no, emp_fname, emp_lname
FROM Employee_102
WHERE dept_no = 1
AND (emp_no = 23348 OR emp_fname = 'Matthew');
- 查询不在部门编号为d1的部门工作的职员编号和姓名:
SELECT emp_no, emp_fname, emp_lname
FROM Employee_102
WHERE dept_no <> 1;
- 获取为项目'P2'工作的,具有未知工作的所有职员的职员编号和相应的项目编号:
SELECT w.emp_no, w.project_no
FROM Works_on_102 w
WHERE w.project_no = 2
AND w.job IS NULL;
- 找出所有姓是以字母J开头的职员的名字和编号:
sqlCopy code
SELECT emp_no, emp_fname FROM Employee_102 WHERE emp_lname LIKE 'J%';
- 找出所有名中第二个字母是a的职员的名字和编号:
sqlCopy code
SELECT emp_no, emp_fname FROM Employee_102 WHERE emp_fname LIKE '_a%';
- 获取在研究部门工作的所有职员的名和姓:
sqlCopy code
SELECT emp_fname, emp_lname FROM Employee_102 WHERE dept_no = 3;
- 获取不是在项目上花费了最多时间的所有职员的编号、项目编号和工作名称:
sqlCopy code
SELECT w.emp_no, w.project_no, w.job FROM Works_on_102 w WHERE w.enter_date < ALL ( SELECT w2.enter_date FROM Works_on_102 w2 WHERE w2.project_no = w.project_no );
这些查询将为您提供所需的数据和结果。请根据您的实际数据进行适当的调整。