在work数据库中,创建以下两个关系模式。 职工表:Worker(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码; 部门表:Section(部门号,名称,经理名,地址,电话号码),其中部门号为主码; (1) 使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义; SQL语句 (a)定义每个模式的主码; (b)定义参照完整性; (c)定义职工的年龄不能小于18岁,并且不能超过60岁; (d)职工的姓名不能为空; (e)职工的工资不能为空,且不能小于800; (f)部门名称不能为空且不能重复,定义约束名为UK_dName。 (2)验证完整性约束,使用SQL语言分别向两个表中插入记录,验证上面的各种约束条件。 (3)将职工的年龄改为不能小于16岁,并且不能大于65岁。
时间: 2023-10-08 19:03:47 浏览: 148
1. SQL语句如下:
创建职工表:
```sql
CREATE TABLE Worker(
WorkerID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT CHECK (Age >= 18 AND Age <= 60),
Position VARCHAR(50),
Salary DECIMAL(10, 2) NOT NULL CHECK (Salary >= 800),
SectionID INT,
CONSTRAINT FK_SectionID FOREIGN KEY (SectionID) REFERENCES Section(SectionID)
);
```
创建部门表:
```sql
CREATE TABLE Section(
SectionID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
ManagerName VARCHAR(50),
Address VARCHAR(100),
PhoneNumber VARCHAR(20),
CONSTRAINT UK_dName UNIQUE (Name)
);
```
2. 验证完整性约束,使用SQL语言分别向两个表中插入记录,验证上面的各种约束条件。
插入职工表记录:
```sql
INSERT INTO Worker (WorkerID, Name, Age, Position, Salary, SectionID)
VALUES (1, 'John', 25, 'Manager', 1200, 1);
```
插入部门表记录:
```sql
INSERT INTO Section (SectionID, Name, ManagerName, Address, PhoneNumber)
VALUES (1, 'Sales', 'Jane', '123 Main St', '555-1234');
```
3. 将职工的年龄改为不能小于16岁,并且不能大于65岁。
```sql
ALTER TABLE Worker
ALTER COLUMN Age INT CHECK (Age >= 16 AND Age <= 65);
```
阅读全文