MySQL Lab2 答案与解析

news/2025/3/18 14:31:28/

在这里插入图片描述
在这里插入图片描述
一、table 创建部分:

CREATE TABLE Branch (branchNo CHAR(4),street VARCHAR(45) NOT NULL,city VARCHAR(45) NOT NULL,postcode VARCHAR(45) NOT NULL,PRIMARY KEY (branchNo)
);
/*alter table Branch modify street VARCHAR(45) NOT NULL;
alter table Branch modify city VARCHAR(45) NOT NULL;
alter table Branch modify postcode VARCHAR(45) NOT NULL;*/CREATE TABLE Staff (staffNo VARCHAR(4),fName VARCHAR(45) NOT NULL,lName VARCHAR(45) NOT NULL,position VARCHAR(45) NOT NULL,sex VARCHAR(10) NOT NULL,DoB DATE NOT NULL,salary INT NOT NULL,branchNo CHAR(4),PRIMARY KEY (staffNo),FOREIGN KEY (branchNo)REFERENCES Branch (branchNo)ON UPDATE CASCADE ON DELETE SET NULL
);
-- drop table Staff;CREATE TABLE PrivateOwner (ownerNo CHAR(4),fName VARCHAR(45) NOT NULL,lName VARCHAR(45) NOT NULL,address VARCHAR(45) NOT NULL,telNo VARCHAR(45) NOT NULL,PRIMARY KEY (ownerNo)
);-- 更改表中的字段方法:
/*alter table PrivateOwner change owner ownerNo CHAR(4);
select *
from PrivateOwner;
*/
CREATE TABLE PropertyForRent (propertyNo VARCHAR(4),street VARCHAR(45) NOT NULL,city VARCHAR(45) NOT NULL,postcode VARCHAR(45) NOT NULL,type VARCHAR(45) NOT NULL,rooms INT NOT NULL,rent INT NOT NULL,ownerNo CHAR(4),staffNo VARCHAR(4),branchNo CHAR(4),PRIMARY KEY (propertyNo),FOREIGN KEY (ownerNo)REFERENCES PrivateOwner (ownerNo)ON UPDATE CASCADE ON DELETE SET NULL,FOREIGN KEY (staffNo)REFERENCES Staff (staffNo)ON UPDATE CASCADE ON DELETE SET NULL,FOREIGN KEY (branchNo)REFERENCES Branch (branchNo)ON UPDATE CASCADE ON DELETE SET NULL
);
-- drop table  PropertyForRent;
-- alter table PropertyForRent add  FOREIGN KEY (staffNo) REFERENCES Staff (staffNo);
-- alter table PropertyForRent add foreign key(ownerNo) references PrivateOwner(ownerNo);
-- drop table PropertyForRent;CREATE TABLE Client (clientNo CHAR(4) NOT NULL,fName VARCHAR(45) NOT NULL,lName VARCHAR(45) NOT NULL,telNo VARCHAR(45) NOT NULL,preType VARCHAR(45) NOT NULL,maxRent INT NOT NULL,PRIMARY KEY (clientNo)
);CREATE TABLE Registration (clientNo CHAR(4),branchNo CHAR(4),staffNo VARCHAR(4),dataJoined DATE NOT NULL,PRIMARY KEY (clientNo , branchNo , staffNo),FOREIGN KEY (staffNo)REFERENCES Staff (staffNo)ON UPDATE CASCADE,FOREIGN KEY (branchNo)REFERENCES Branch (branchNo)ON UPDATE CASCADE,FOREIGN KEY (clientNo)REFERENCES Client (clientNo)ON UPDATE CASCADE
);CREATE TABLE Viewing (clientNo CHAR(4),propertyNo VARCHAR(4),viewDate DATE,comment VARCHAR(45),PRIMARY KEY (clientNo , propertyNo , viewDate),FOREIGN KEY (clientNo)REFERENCES Client (clientNo)ON UPDATE CASCADE,FOREIGN KEY (propertyNo)REFERENCES PropertyForRent (propertyNo)ON UPDATE CASCADE
);

二、插入数据

insert into Branch values('B005','22 Deer Rd','London','SW1 4EH');
insert into Branch values('B007','16 Argylly Rd','Aberdeen','AB2 3SU');
insert into Branch values('B003', '163 Main St', 'Glasgow', 'G11 9QX');
insert into Branch values('B004', '32 Manse Rd', 'Bristol', 'BS99 1NZ');
insert into Branch values('B002', '56 Clover St', 'London', 'NW10 6EU');insert into Staff values('SL21','John','White','Manager','M','1945-10-1',30000,'B005');
insert into Staff values('SG37', 'Ann', 'Beech', 'Assistant', 'F', '1960-11-10', 12000, 'B003');
insert into Staff values('SG14', 'David', 'Ford', 'Supervisor', 'M', '1958-03-24', 18000, 'B003');
insert into Staff values('SA9', 'Mary', 'Howe', 'Assistant', 'F', '1970-02-19', 9000, 'B007');
insert into Staff values('SG5', 'Susan', 'Brand', 'Manager', 'F', '1940-06-03', 24000, 'B003');
insert into Staff values('SL41', 'Julie', 'Lee', 'Assistant', 'F', '1965-06-13', 9000, 'B005');insert into PropertyForRent values ('PA14','16 Holhead','Aberden','AB7 5SU','House',6,650,'CO46','SA9','B007');
insert into PropertyForRent values('PL94', '6 Argyll St', 'London', 'NW2', 'Flat', 4, 400, 'CO87', 'SL41', 'B005');
insert into PropertyForRent values('PG4', '6 Lawrence St', 'Glasgow', 'G11 9QX', 'Flat', 3, 350, 'CO40', NULL, 'B003');
insert into PropertyForRent values ('PG36', '2 Manor Rd', 'Glasgow', 'G32 4QX', 'Flat', 3, 375, 'CO93', 'SG37', 'B003');
insert into PropertyForRent values('PG21', '18 Dale Rd', 'Glasgow', 'G12', 'House', 5, 600, 'CO87', 'SG37', 'B003');
insert into PropertyForRent values('PG16', '5 Novar Dr', 'Glasgow', 'G12 9AX', 'Flat', 4, 450, 'CO93', 'SG14', 'B003');insert into PrivateOwner values ('CO46','Joe','Keogh','2 Fergus Dr,Aberdeen AB2 7SX','01224-861212');
insert into PrivateOwner values ('CO87', 'Carol', 'Farrel', '6 Achray St, Glasgow G32 9DX', '0141-357-7419');
insert into PrivateOwner values ('CO40', 'Tina', 'Murphy', '63 Well St, Glasgow G42', '0141-943-1728');
insert into PrivateOwner values ('CO93', 'Tony', 'Shaw', '12 Park Pl, Glasgow G4 0QR', '0141-225-7025');insert into Client values ('CR76','John','Kay','0207-774-5632','Flat',425);
insert into Client values ('CR56', 'Aline', 'Stewart', '0141-848-1826', 'Flat', 350);
insert into Client values('CR74', 'Mike', 'Ritchie', '01475-392178', 'House', 750);
insert into Client values('CR62', 'Mary', 'Tregear', '01224-196720', 'Flat', 600);insert into Viewing values('CR56','PA14','2004-05-24','too small');
insert into Viewing values('CR76', 'PG4', '2004-04-20', 'too remote');
insert into Viewing values('CR56', 'PG4', '2004-05-26', NULL);
insert into Viewing values('CR62', 'PA14', '2004-05-14', 'no dining room');
insert into Viewing values('CR56', 'PG36', '2004-04-28', NULL);insert into Registration values('CR76','B005','Sl41','2004-1-2');
insert into Registration values('CR56', 'B003', 'SG37', '2003-04-11');
insert into Registration values('CR74', 'B003', 'SG37', '2002-11-16');
insert into Registration values('CR62', 'B007', 'SA9', '2003-03-07');

三、问题回答:(注意看注释)

-- question 2 try to violate the constraint on primary key:
insert into Registration values(null, 'B007', 'SA9', '2003-03-07');
/*
Error Code: 1048. Column 'clientNo' cannot be null
*/DELETE FROM Branch 
WHEREbranchNo = 'B005';
-- Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`lab2`.`registration`, CONSTRAINT `registration_ibfk_2` FOREIGN KEY (`branchNo`) REFERENCES `branch` (`branchNo`) ON UPDATE CASCADE)-- question3-a-2 update tuples in the parent tuples
-- note: 需要先把安全模式关掉:
SET SQL_SAFE_UPDATES = 0;UPDATE Staff 
SET salary = salary * 1.1
WHEREbranchNo IS NOT NULL;-- 查看相关结果:
SELECT *
FROMStaff;
UPDATE Branch 
SET branchNo = 'B00X'
WHEREbranchNo = 'B005';
SELECT *
FROMBranch;
SELECT *
FROMRegistration;
SELECT *
FROMPropertyForRent;
/* 发现这些entity里面的branchNo 都随之发生了更新*/-- question 3-b-1 insert tuples in child table without a matching candidate key value in the parent tableinsert into Staff values('SL25','John','White','Manager','M','1945-10-1',30000,'B005');
/*
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`lab2`.`staff`, 
CONSTRAINT `staff_ibfk_1` FOREIGN KEY (`branchNo`) REFERENCES `branch` (`branchNo`) ON DELETE SET NULL ON UPDATE CASCADE)
*/UPDATE Staff 
SET branchNo = 'B005'
WHEREbranchNo = 'B00X';/* 一样的报错 是不能更新的*/-- question 4 use alter table statement to add、delete a column in the table 
-- ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
alter table Branch add test varchar(45)  not null;
SELECT *
FROMbranch;
alter table Branch drop test ;-- question5 update satement in MySQL
-- 5-a increase all mangers' salary by 10%
UPDATE Staff 
SET salary = 0
WHEREposition = 'manager';SELECT *
FROMStaff;-- 5-b change Julie Lee's position to supervisor and a salary increase of 5%
UPDATE Staff 
SET position = 'supervisor',salary = 10
WHEREfName = 'Julie' AND lName = 'Lee';-- 5-c give an increase on rent by 2% on all properties in Glasgow
UPDATE PropertyForRent 
SET rent = rent * 1.02
WHEREcity = ' Glasgow';select * from PropertyForRent ;

http://www.ppmy.cn/news/488362.html

相关文章

数据库LAB2

show databases; use dreamhome2; show tables;create database test; create database test2;-- 这个是副本 use test;CREATE TABLE IF NOT EXISTS Branch (branchNo VARCHAR(4) NOT NULL,street VARCHAR(40) NOT NULL,city VARCHAR(20) NOT NULL,postcode VARCHAR(10) NOT NU…

使用dbvisualizer等工具连接DB2报错 -4222, 必须属性是未知主机

问题描述&#xff1a; 使用工具&#xff0c;比如dbvisualizer、aqua data studio等&#xff0c;连接DB2数据库时报错如下&#xff1a; An error occurred whild establishing the connection: Type: com.ibm.db2.jcc.b.qm Error Code: -4222 SQL State: 08001 Message: [jc…

hp服务器装无线网卡,已解决: 更换无线网卡 - 惠普支持社区 - 843969

楼主你好&#xff01; 已核实&#xff0c;理论上支持7260无线网卡&#xff0c;但是需要看机器本身的无线网卡是否是双天线的&#xff0c;如果不是双天线的话&#xff0c;需要改成双天线的配置&#xff0c;才能支持 支持的无线网卡信息如下 Intel Dual Band Wireless-AC 3160 80…

G42 Healthcare帮助车手恢复正常生活

阿联酋阿布扎比--(美国商业资讯)--G42 Healthcare在阿联酋开展的#4Humanity试验成功之后&#xff0c;2020年环法自行车赛冠军车队阿联酋队的车手和工作人员接种了阿联酋卫生与预防部核准的COVID-19疫苗&#xff0c;该疫苗由中国医药集团子公司中国生物技术集团公司(CNBG)开发。…

Kubernetes K8S之affinity亲和性与反亲和性详解与示例

Kubernetes K8S之Node节点亲和性与反亲和性以及Pod亲和性与反亲和性详解与示例 主机配置规划 服务器名称(hostname)系统版本配置内网IP外网IP(模拟)k8s-masterCentOS7.72C/4G/20G172.16.1.11010.0.0.110k8s-node01CentOS7.72C/4G/20G172.16.1.11110.0.0.111k8s-node02CentOS7.…

k8s_难产的ingress架构初体验(二)

之前曲折的铺路 https://blog.csdn.net/cds992/article/details/106170316 https://blog.csdn.net/cds992/article/details/106246616 环境说明 腾讯云环境, 新搭的环境。 [roottest service]# kubectl get svc -n ingress-nginx NAME TYPE…

高德一直显示服务器繁忙,全国春运TOP10繁忙服务区 无锡京沪高速梅村服务区排第二...

我苏网讯今天(2月7日),高德地图携手中国气象局公共气象服务中心、全国80多家交通管理部门联合发布了《2018春运安全出行指南》。 报告显示,2018年春运期间全国高速交通将迎来两个高峰期,分别是腊月二十五返乡高峰和正月初六返程高峰。其中长三角、珠三角区域高速公路压力最大…

数控技术复习(二):数控编程必备的基础知识

文章首发于个人博客&#xff0c;欢迎访问&#xff1a;数控技术复习(二):数控编程必备的基础知识 数控机床加工零件&#xff1a;零件图代码->程序单->控制介质->数控装置->伺服电机->机床自动加工。从零件图纸到编制零件加工程序和制作控制介质的全过程称为数控…