设有关系数据库:职 工 关 系 EMPLOYEE (职工号,职工名,街道,城市)工作关系 WORKS(职工号,公司号,工资) 公司关系 COMPANY(公司号, 公司名 , 城市)试用 SQL 语句写 出下列操作 : 将 所 有在“ 银座公司“工作的职工加薪 5 % 。
时间: 2024-03-22 14:40:32 浏览: 56
可以使用如下的 SQL 语句将所有在“银座公司”工作的职工加薪 5%:
```
UPDATE WORKS
SET 工资 = 工资 * 1.05
WHERE 公司号 = (SELECT 公司号 FROM COMPANY WHERE 公司名 = '银座公司');
```
这条 SQL 语句使用了 UPDATE 和 WHERE 语句来更新 WORKS 表中的工资信息,并且只更新那些所在公司为“银座公司”的职工。其中,子查询 `(SELECT 公司号 FROM COMPANY WHERE 公司名 = '银座公司')` 用于获取“银座公司”的公司号,然后将这个公司号作为条件来筛选出需要更新的职工。更新后的工资是原来的 1.05 倍,即加薪了 5%。
相关问题
设有如下4个关系模式:创建表并输入模拟数据。 部门表(部门号,部门名,办公地点,部门经理编号)外码:部门经理编号,参考职工表中职工号。 岗位表(岗位号、岗位名、岗位描述、岗位津贴)。 职工表(职工号,姓名,出生日期,性别,电话号码,入职日期,岗位号,部门号) 外码:岗位号,参考岗位表的岗位号,外码:部门号,参考部门表的部门号。 薪水表(薪水号,职工号,基本工资,岗位津贴,日期)职工号外码,参考职工表的职工号。
以下是使用 MySQL 数据库创建上述 4 个关系模式并输入模拟数据的示例步骤:
1. 创建职工表:
```
CREATE TABLE employees (
employee_number INT PRIMARY KEY,
name VARCHAR(255),
birth_date DATE,
gender CHAR(1),
phone_number VARCHAR(255),
hire_date DATE,
job_number INT,
department_number INT,
FOREIGN KEY (job_number) REFERENCES jobs(job_number),
FOREIGN KEY (department_number) REFERENCES departments(department_number)
);
```
2. 创建部门表:
```
CREATE TABLE departments (
department_number INT PRIMARY KEY,
department_name VARCHAR(255),
location VARCHAR(255),
manager_number INT,
FOREIGN KEY (manager_number) REFERENCES employees(employee_number)
);
```
3. 创建岗位表:
```
CREATE TABLE jobs (
job_number INT PRIMARY KEY,
job_name VARCHAR(255),
job_description TEXT,
job_allowance DECIMAL(10,2)
);
```
4. 创建薪水表:
```
CREATE TABLE salaries (
salary_number INT PRIMARY KEY,
employee_number INT,
base_salary DECIMAL(10,2),
job_allowance DECIMAL(10,2),
date DATE,
FOREIGN KEY (employee_number) REFERENCES employees(employee_number)
);
```
5. 输入模拟数据:
```
INSERT INTO employees (employee_number, name, birth_date, gender, phone_number, hire_date, job_number, department_number)
VALUES (1, 'John Doe', '1990-01-01', 'M', '123-456-7890', '2020-01-01', 1, 1),
(2, 'Jane Doe', '1995-01-01', 'F', '098-765-4321', '2020-01-01', 2, 1),
(3, 'Bob Smith', '1985-01-01', 'M', '111-111-1111', '2020-01-01', 3, 2);
INSERT INTO departments (department_number, department_name, location, manager_number)
VALUES (1, 'Marketing', 'New York', 1),
(2, 'Sales', 'Chicago', 3);
INSERT INTO jobs (job_number, job_name, job_description, job_allowance)
VALUES (1, 'Manager', 'Manages a team
考虑如下所示的关系数据库模式,主码加了下划线,使用SQL语句写出以下查询。 Employee(person_name, street, city) Works(person_name, company_name, salary) Company(company_name, city) Manages(person_name, manager_name) 1、找出“Baidu Corporation”公司中所有薪水超过100万的员工信息。 2、找出所有担任经理职务的员工的名字。 3、找出所有被“Hans Write”管理的员工的名字。 4、列出各个公司员工薪水的总数。 5、找出居住在威海市“Wenhua West Road”的员工所在的所有公司的名字。 6、找出与其经理居住在同一城市同一街道的所有员工的姓名。 7、找出不在“Baidu Corporation”工作的所有员工的姓名。 8、找出所有经理管理的员工人数都不超过10人的公司名。
1、SELECT person_name FROM Works WHERE company_name='Baidu Corporation' AND salary>1000000;
2、SELECT person_name FROM Manages;
3、SELECT person_name FROM Manages WHERE manager_name='Hans Write';
4、SELECT Company.company_name, SUM(Works.salary) FROM Company JOIN Works ON Company.company_name=Works.company_name GROUP BY Company.company_name;
5、SELECT DISTINCT Company.company_name FROM Company JOIN Works ON Company.company_name=Works.company_name JOIN Employee ON Works.person_name=Employee.person_name WHERE Employee.city='威海市' AND Employee.street='Wenhua West Road';
6、SELECT DISTINCT Employee.person_name FROM Employee JOIN Manages ON Employee.person_name=Manages.person_name JOIN Employee AS Manager ON Manages.manager_name=Manager.person_name WHERE Employee.city=Manager.city AND Employee.street=Manager.street;
7、SELECT person_name FROM Employee WHERE person_name NOT IN (SELECT person_name FROM Works WHERE company_name='Baidu Corporation');
8、SELECT Company.company_name FROM Company JOIN Manages ON Company.company_name=Manages.company_name GROUP BY Company.company_name HAVING COUNT(*)<=10;
阅读全文