欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库例题答案

程序员文章站 2022-03-29 20:24:54
– 1.请填写以上的(1)~(9)处的注释,写明各编号下的一个SQL语句实现的功能;– 2.在official表中查找工作年限在20(包含)年以上或工作年限字段为空的所有工作人员的信息。SELECT * FROM officalWHERE Overtime >= 20 or Overtime is NULL;– 3.查询所有管理人员的基本信息。SELECT * FROM offical WHERE PNr IN(SELECT DISTINCT Manager FROM offical...

– 1.请填写以上的(1)~(9)处的注释,写明各编号下的一个SQL语句实现的功能;

– 2.在official表中查找工作年限在20(包含)年以上或工作年限字段为空的所有工作人员的信息。

SELECT * FROM offical
WHERE Overtime >= 20 or Overtime is NULL;

– 3.查询所有管理人员的基本信息。

SELECT * FROM offical 
WHERE PNr IN
(SELECT DISTINCT Manager FROM offical );  

– 4.查找专门的联络员的所有信息及他所联络的所有车主的信息。

SELECT `Owner`.*, offical.* FROM  `Owner` ,contact,offical
WHERE offical.PNr = contact.PersNumber and contact.OwnerID = `Owner`.OwnerID;

– 5.在当前的数据库中查找各个城市的汽车保有量。

SELECT b.city,count(`owner`)
FROM car a, `owner` b
WHERE a.`Owner` = b.OwnerID
GROUP BY city;

– 7.查找年龄在25(包含)岁以上且所在城市以’W’开头的车主的信息。

SELECT * FROM `Owner`
WHERE (datediff(now(),birthDay)/365) >= 25 and city like 'w%';

– 8.查找车辆所有者为公司的全部信息。

select * from `Owner`
where birthday is NULL;	

– 9.查找奔驰或宝马或者马力在160匹以上车的信息及车主的信息。

SELECT * FROM car , `Owner`
WHERE  (Brand = 'BMW' OR Brand = 'Mercedes' OR HP > 160) and `Owner`.OwnerID = car.`Owner`;

– 10.2012年有几辆车被偷了?

SELECT count(*) 2012被偷车辆数量 FROM stolen 
WHERE year(reported_at) = '2012';

– 11.假如一车辆注册进入car表之后,如果没有人工干预,25年之后会强制转移至别的表中并从此表中删除。现请用右外连接查询所有被盗车辆的所有信息及被盗时间。

SELECT * FROM car a
RIGHT OUTER JOIN stolen b ON  a.PlateNumber = b.PlateNumber;

– 12.查找拥有至少2车辆车的车主信息。提示:先在car 表里按车主进行分组查询;

SELECT * FROM  `Owner`
WHERE `OwnerID`  IN 
(SELECT `Owner` FROM car 
GROUP BY `Owner`
HAVING  count(*) >= 2);

– 13.我要借一辆红色的车,我应该去联系谁(按照你认为合理的方式解决)?

SELECT  a.`Name` 车主姓名, a.city 所在城市 , b.color 车辆颜色
FROM `Owner` a , car b
WHERE   a.OwnerID = b.`Owner`  AND b.color = 'red';

– 14.如果P04号工作人员有联络客户,找出联络客户的ID,姓名与所在城市。

SELECT `Owner`.OwnerID , `Owner`.`Name` , `Owner`.city
FROM `Owner`, contact 
WHERE  `Owner`.OwnerID = contact.OwnerID  AND contact.PersNumber = 'P04';

– 15.查询工作人员的平均工作年限。

SELECT avg(Overtime) 平均工作年限 FROM  offical;

– 16.删除车牌尾号为’77’的车辆信息。

DELETE FROM car
WHERE PlateNumber LIKE '%77';

– 17.将owner表的name字段的数据类型修改为varchar(20)。

DESC `owner`;
ALTER TABLE `Owner`  MODIFY  `Name`  VARCHAR(20);

– 18.创建一个存储过程,能根据车主的姓名,查询出该车主的所有的车辆信息。

delimiter $$
CREATE PROCEDURE car_information(in `Name1` varchar(20))
begin
SELECT * FROM car 
WHERE `Owner` IN 
(SELECT OwnerID FROM `owner`
WHERE `Name` = `Name`);
end $$
delimiter ;

CALL car_information('Ms U');

– 19.在offical表中查询’Mr A’上级的上级的工号。

SELECT Manager FROM offical
WHERE PNr in
(SELECT Manager FROM offical 
WHERE `Name` = 'Mr A');

– 20.将offical 表中工号为P04的员工的工作年限修改为6。

UPDATE offical SET Overtime = 6
WHERE PNr =  'P04';

– 21.将carid 为 f02的车辆过户给 Mr Z ,请在数据库表中实施。

UPDATE car SET `Owner` = 
 (SELECT OwnerID FROM `owner` 
WHERE `Name` = 'Mr Z')
WHERE CarID = 'f02';

– 22.将carid 为 F20的车喷涂为红色,请在数据库表中实施。

UPDATE car SET color = 'red'
WHERE CarID = 'F20';

– 23.创建一个视图audi_owner,该视图中要包含所有的车主信息及车辆信息,且车辆中只含有audi品牌。

CREATE VIEW audi_owner
AS (SELECT *  FROM `owner` a ,car b
WHERE b.Brand = 'audi' and a.OwnerID = b.`Owner`) ;

SELECT * FROM audi_owner ;

– 24.在car表上创建一个索引index_find,索引中含有carid与车牌号两个字段。

CREATE INDEX index_find ON car(CarID,PlateNumber);
SHOW INDEX FROM car;

本文地址:https://blog.csdn.net/conjurer_yft/article/details/107392912

相关标签: mysql