初步完成lab4代码

This commit is contained in:
typingbugs 2024-04-07 23:20:02 +08:00
parent 659e5f0ebd
commit 398d2c6e26
2 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,35 @@
DROP USER 'ticketAgent'@'localhost';
DROP USER 'stationManager'@'localhost';
DROP USER 'adminUser'@'localhost';
FLUSH PRIVILEGES;
CREATE USER 'ticketAgent'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'stationManager'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'adminUser'@'localhost' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT ON DBLab.Tickets TO 'ticketAgent'@'localhost';
GRANT ALL PRIVILEGES ON DBLab.Stations TO 'stationManager'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON DBLab.* TO 'adminUser'@'localhost';
REVOKE INSERT ON DBLab.Tickets FROM 'ticketAgent'@'localhost';
GRANT SELECT(Price) ON DBLab.Tickets TO 'ticketAgent'@'localhost';
GRANT UPDATE(Name, City) ON DBLab.Stations TO 'stationManager'@'localhost';
CREATE ROLE 'ticketRole';
CREATE ROLE 'stationRole';
GRANT SELECT, INSERT ON DBLab.Tickets TO 'ticketRole';
GRANT SELECT, UPDATE ON DBLab.Stations TO 'stationRole';
GRANT 'ticketRole' TO 'ticketAgent'@'localhost';
GRANT 'stationRole' TO 'stationManager'@'localhost';
REVOKE 'ticketRole' FROM 'ticketAgent'@'localhost';
FLUSH PRIVILEGES;

View File

@ -0,0 +1,59 @@
DROP VIEW
IF
EXISTS v_TrainRoutes;
DROP VIEW
IF
EXISTS v_StayTimes;
DROP VIEW
IF
EXISTS v_TrainStationCounts;
CREATE VIEW v_TrainRoutes AS SELECT
ID AS TrainID,
StationID_start,
StationID_arrive
FROM
Trains;
CREATE VIEW v_StayTimes AS SELECT
TrainID,
StationID,
arrive_time,
leave_time,
TIMEDIFF( leave_time, arrive_time ) AS StayDuration
FROM
Passbys;
CREATE VIEW v_TrainStationCounts AS SELECT
TrainID,
COUNT( StationID ) AS StationCount
FROM
Passbys
GROUP BY
TrainID;
SELECT
*
FROM
v_StayTimes
WHERE
TrainID = 'G103';
UPDATE v_StayTimes
SET StationID = 3
WHERE
TrainID = 'G103'
AND arrive_time = '2024-03-28 07:13:00';
SELECT
*
FROM
v_StayTimes
WHERE
TrainID = 'G103';
DELETE
FROM
v_StayTimes
WHERE
TrainID = 'G103'
AND arrive_time = '2024-03-28 07:13:00';
SELECT
*
FROM
v_StayTimes
WHERE
TrainID = 'G103';