wyq 8 months ago
parent b000bc7822
commit d1a17001a3

@ -0,0 +1,165 @@
--1.
--1: 50
--50
SELECT *
FROM "tb_jiaofei"
WHERE "yingfje" > 50;
--2: 200
--200
SELECT *
FROM "tb_records"
WHERE "waterusage" > 200;
--2.
--1: (50, 100)
--50100
SELECT *
FROM "tb_jiaofei"
WHERE "yingfje" BETWEEN 50 AND 100;
--2: (100, 200, 300)
--(100, 200, 300)
SELECT *
FROM "tb_records"
WHERE "waterusage" IN (100, 200, 300);
--3.
--1: 20241
--20241
SELECT *
FROM "tb_jiaofei"
WHERE "niany" = '2024-01';
--2: 150300
--150300
SELECT *
FROM "tb_records"
WHERE "waterusage" BETWEEN 150 AND 300;
--4.
--1: user
--user
SELECT *
FROM "tb_user"
WHERE "username" LIKE '%user%';
--2:
--
SELECT *
FROM "tb_yichang"
WHERE "yiclx" LIKE '%破裂%';
--5.
--1:
--
SELECT "tb_jiaofei"."id", "tb_jiaofei"."zhangh", "tb_jiaofei"."yingfje", "tb_jiaofei"."shifje", "tb_user"."name", "tb_user"."tele"
FROM "tb_jiaofei"
JOIN "tb_user" ON "tb_jiaofei"."zhangh" = "tb_user"."id";
--2:
--
SELECT "tb_user"."name", "tb_records"."waterusage", "tb_shuijia"."price"
FROM "tb_user"
JOIN "tb_records" ON "tb_user"."id" = "tb_records"."usid"
JOIN "tb_shuijia" ON "tb_records"."nmonth" = "tb_shuijia"."niany";
--6.
--1: 50
--50
SELECT *
FROM "tb_records"
WHERE "usid" IN (
SELECT "zhangh"
FROM "tb_jiaofei"
WHERE "yingfje" > 50
);
--2: 300
--300
SELECT *
FROM "tb_yichang"
WHERE "zhangh" IN (
SELECT "usid"
FROM "tb_records"
WHERE "waterusage" > 300
);
--7. EXISTS
--1:
--使EXISTS
SELECT *
FROM "tb_user" u
WHERE EXISTS (
SELECT 1
FROM "tb_jiaofei" j
WHERE j."zhangh" = u."id"
);
--2:
--使EXISTS
SELECT *
FROM "tb_user" u
WHERE EXISTS (
SELECT 1
FROM "tb_yichang" y
WHERE y."zhangh" = u."id"
);
--8.
--1:
--
SELECT *
FROM "tb_records"
WHERE "usid" = '2024122121332710000009';
--2:
--
SELECT *
FROM "tb_records";
SELECT *
FROM "tb_yichang";
--3:
--
SELECT *
FROM "tb_jiaofei";
--4:
--
SELECT *
FROM "tb_yichang"
WHERE "zhuangt" = '未处理';
--9.
--1:
--
SELECT "usid", SUM("waterusage") AS "total_water_usage"
FROM "tb_records"
GROUP BY "usid";
--2:
--
SELECT "niany", SUM("yingfje") AS "total_amount_due"
FROM "tb_jiaofei"
GROUP BY "niany";

@ -0,0 +1,58 @@
--1.
--
DELETE FROM "tb_records"
WHERE "usid" = '2024122121332710000009';
--2.
--
DELETE FROM "tb_jiaofei"
WHERE "Account" = '2024122121332710000009';
--3.
--
DELETE FROM "tb_shuijia"
WHERE "niany" = '2024-02';
--4.
--
DELETE FROM "tb_yichang"
WHERE "id" = '2024122121434710000040';
--5.
--
DELETE FROM "tb_admin"
WHERE "id" = '1234567890';
--6.
--
DELETE FROM "tb_user"
WHERE "id" = '2024122121332710000009';
--7.
--
DELETE FROM "tb_records"
WHERE "id" = '2024122121493610000049';
--8.
--
DELETE FROM "tb_yichang"
WHERE "zhuangt" = '未处理';
--9.
--
DELETE FROM "tb_jiaofei"
WHERE "AmountPaid" = "AmountDue";
--10.
--
DELETE FROM "tb_shuijia"
WHERE "niany" = '2024-02';

@ -0,0 +1,61 @@
--1.
-- usid
CREATE OR REPLACE FUNCTION get_user_water_usage(user_id VARCHAR)
RETURNS TABLE(id VARCHAR, usid VARCHAR, nmonth DATE, waterusage DECIMAL) AS $$
BEGIN
RETURN QUERY
SELECT id, usid, nmonth, waterusage
FROM "tb_records"
WHERE usid = user_id;
END;
$$ LANGUAGE plpgsql;
--2.
--
CREATE OR REPLACE FUNCTION get_user_payment_history(user_account VARCHAR)
RETURNS TABLE(PaymentID SERIAL, AmountDue DECIMAL, AmountPaid DECIMAL, PaymentDate TIMESTAMP) AS $$
BEGIN
RETURN QUERY
SELECT PaymentID, AmountDue, AmountPaid, PaymentDate
FROM "tb_jiaofei"
WHERE Account = user_account;
END;
$$ LANGUAGE plpgsql;
--3.
--
CREATE OR REPLACE FUNCTION update_water_price(price DECIMAL, month DATE)
RETURNS VOID AS $$
BEGIN
UPDATE "tb_shuijia"
SET price = price
WHERE niany = month;
END;
$$ LANGUAGE plpgsql;
--4.
--
CREATE OR REPLACE FUNCTION add_exception_record(user_account VARCHAR, exception_type VARCHAR, status VARCHAR)
RETURNS VOID AS $$
BEGIN
INSERT INTO "tb_yichang" (zhangh, yiclx, zhuangt, createtime)
VALUES (user_account, exception_type, status, NOW());
END;
$$ LANGUAGE plpgsql;
--5.
--
CREATE OR REPLACE FUNCTION get_payments_by_date_range(user_account VARCHAR, start_date DATE, end_date DATE)
RETURNS TABLE(PaymentID SERIAL, AmountDue DECIMAL, AmountPaid DECIMAL, PaymentDate TIMESTAMP) AS $$
BEGIN
RETURN QUERY
SELECT PaymentID, AmountDue, AmountPaid, PaymentDate
FROM "tb_jiaofei"
WHERE Account = user_account
AND PaymentDate BETWEEN start_date AND end_date;
END;
$$ LANGUAGE plpgsql;

@ -0,0 +1,241 @@
/*
Navicat Premium Dump SQL
Source Server : 192.168.248.128_5432
Source Server Type : PostgreSQL
Source Server Version : 90204 (90204)
Source Host : 192.168.248.128:5432
Source Catalog : postgres
Source Schema : gaussdb
Target Server Type : PostgreSQL
Target Server Version : 90204 (90204)
File Encoding : 65001
Date: 22/12/2024 16:43:38
*/
-- ----------------------------
-- Table structure for tb_admin
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_admin";
CREATE TABLE "gaussdb"."tb_admin" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"username" varchar(20) COLLATE "pg_catalog"."default",
"password" varchar(20) COLLATE "pg_catalog"."default",
"name" varchar(12) COLLATE "pg_catalog"."default",
"tele" varchar(11) COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Records of tb_admin
-- ----------------------------
INSERT INTO "gaussdb"."tb_admin" VALUES ('1234567890', '1', '1', 'admin', '13245679845');
-- ----------------------------
-- Table structure for tb_employee
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_employee";
CREATE TABLE "gaussdb"."tb_employee" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"username" varchar(20) COLLATE "pg_catalog"."default",
"password" varchar(20) COLLATE "pg_catalog"."default",
"name" varchar(18) COLLATE "pg_catalog"."default",
"gender" varchar(10) COLLATE "pg_catalog"."default",
"numb" varchar(32) COLLATE "pg_catalog"."default",
"tele" varchar(11) COLLATE "pg_catalog"."default",
"idnum" varchar(18) COLLATE "pg_catalog"."default",
"age" int4,
"empposition" varchar(255) COLLATE "pg_catalog"."default",
"xuel" varchar(255) COLLATE "pg_catalog"."default",
"deptid" varchar(255) COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Records of tb_employee
-- ----------------------------
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122111320410000001', 'admin1', '123456', '王天恩', '', '1', '15967215736', '252627381538183547', 20, '经理', '本科', '行政');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122111325710000002', 'admin2', '123456', '吴殷琦', '', '2', '13370942590', '362529200305083514', 21, '经理', '本科', '人事');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121210310000001', 'admin3', '123456', '张三', '', '3', '15965485731', '365784695635842684', 19, '专员', '本科', '销售');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121222510000002', 'admin4', '123456', '李四', '', '4', '14695725483', '378426544258935425', 24, 'HR专员', '硕士', '人事');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121234010000003', 'admin5', '123456', '王五', '', '5', '14726845351', '384521555247852541', 31, '专员', '本科', '销售');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121244410000004', 'admin6', '123456', '赵六', '', '6', '14364525417', '378425841635241572', 27, '经理', '博士', '技术');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121265410000005', 'admin7', '123456', '吴七', '', '7', '13784526842', '374152622415357184', 23, '专员', '大专', '销售');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121302010000006', 'admin8', '123456', '周八', '', '8', '16752348175', '348525655124836781', 28, '专员', '本科', '人事');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121312410000007', 'admin9', '123456', '孙九', '', '9', '15726482148', '367848255357415726', 24, '专员', '本科', '行政');
INSERT INTO "gaussdb"."tb_employee" VALUES ('2024122121323610000008', 'admin10', '123456', '刘十', '', '10', '16754285147', '374815268426845214', 32, '经理', '硕士', '财政');
-- ----------------------------
-- Table structure for tb_jiaofei
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_jiaofei";
CREATE TABLE "gaussdb"."tb_jiaofei" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"zhangh" varchar(255) COLLATE "pg_catalog"."default",
"niany" varchar(255) COLLATE "pg_catalog"."default",
"yingfje" float8,
"shifje" float8,
"createtime" timestamp(6),
"yuang" varchar(255) COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Records of tb_jiaofei
-- ----------------------------
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121402010000029', '2024122121332710000009', '2024-01', 67.4, 67.4, '2024-12-21 21:40:20.055', '2024122111320410000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121405210000030', '2024122121335410000010', '2024-01', 57.6, 57.6, '2024-12-21 21:40:52.709', '2024122111325710000002');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121411310000031', '2024122121342710000011', '2024-01', 84.2, 84.2, '2024-12-21 21:41:13.266', '2024122111320410000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121412910000032', '2024122121345210000012', '2024-01', 67.3, 67.3, '2024-12-21 21:41:29.664', '2024122111320410000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121414510000033', '2024122121352210000013', '2024-01', 64.3, 64.3, '2024-12-21 21:41:45.457', '2024122111325710000002');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121420310000034', '2024122121354710000014', '2024-01', 94.3, 94.2, '2024-12-21 21:42:03.933', '2024122111320410000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121421810000035', '2024122121362410000015', '2024-01', 64.2, 64.2, '2024-12-21 21:42:18.704', '2024122121210310000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121423210000036', '2024122121364810000016', '2024-01', 54.1, 54.1, '2024-12-21 21:42:32.378', '2024122121210310000001');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121424710000037', '2024122121371810000017', '2024-01', 67.4, 67.4, '2024-12-21 21:42:47.282', '2024122111325710000002');
INSERT INTO "gaussdb"."tb_jiaofei" VALUES ('2024122121430310000038', '2024122121374910000018', '2024-01', 67.1, 67.1, '2024-12-21 21:43:03.066', '2024122111320410000001');
-- ----------------------------
-- Table structure for tb_records
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_records";
CREATE TABLE "gaussdb"."tb_records" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"usid" varchar(255) COLLATE "pg_catalog"."default",
"nmonth" varchar(255) COLLATE "pg_catalog"."default",
"waterusage" varchar(255) COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Records of tb_records
-- ----------------------------
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121493610000049', '2024122121332710000009', '2024-01', '315');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121495610000050', '2024122121335410000010', '2024-01', '216');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121501110000051', '2024122121342710000011', '2024-01', '328');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121501910000052', '2024122121345210000012', '2024-01', '143');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121502810000053', '2024122121352210000013', '2024-01', '186');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121503810000054', '2024122121354710000014', '2024-01', '405');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121505010000055', '2024122121362410000015', '2024-01', '256');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121505710000056', '2024122121364810000016', '2024-01', '248');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121510610000057', '2024122121371810000017', '2024-01', '203');
INSERT INTO "gaussdb"."tb_records" VALUES ('2024122121511310000058', '2024122121374910000018', '2024-01', '218');
-- ----------------------------
-- Table structure for tb_shuijia
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_shuijia";
CREATE TABLE "gaussdb"."tb_shuijia" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"niany" varchar(255) COLLATE "pg_catalog"."default",
"price" float8
)
;
-- ----------------------------
-- Records of tb_shuijia
-- ----------------------------
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121381610000019', '2024-01', 3.6);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121382510000020', '2024-02', 4.1);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121383710000021', '2024-03', 3.7);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121385010000022', '2024-04', 3.3);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121390110000023', '2024-05', 3.8);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121391310000024', '2024-06', 3.1);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121392510000025', '2024-07', 4.1);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121393210000026', '2024-08', 3.6);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121394010000027', '2024-09', 3.2);
INSERT INTO "gaussdb"."tb_shuijia" VALUES ('2024122121395210000028', '2024-10', 3.5);
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_user";
CREATE TABLE "gaussdb"."tb_user" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"username" varchar(20) COLLATE "pg_catalog"."default",
"password" varchar(20) COLLATE "pg_catalog"."default",
"name" varchar(18) COLLATE "pg_catalog"."default",
"gender" varchar(10) COLLATE "pg_catalog"."default",
"age" int4,
"tele" varchar(11) COLLATE "pg_catalog"."default",
"place" varchar(255) COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121332710000009', 'user1', '123456', '李强', '', 43, '13700000001', '北京朝阳区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121335410000010', 'user2', '123456', '王丽', '', 34, '13700000002', '上海浦东新区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121342710000011', 'user3', '123456', '赵雷', '', 51, '13700000003', '广州天河区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121345210000012', 'user4', '123456', '孙娜', '', 38, '13700000004', '深圳福田区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121352210000013', 'user5', '123456', '周洋', '', 43, '13700000005', '杭州西湖区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121354710000014', 'user6', '123456', '陈涛', '', 28, '13700000006', '成都锦江区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121362410000015', 'user7', '123456', '刘红', '', 25, '13700000007', '南京秦淮区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121364810000016', 'user8', '123456', '郑敏', '', 46, '13700000008', '武汉武昌区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121371810000017', 'user9', '123456', '孙明', '', 26, '13700000009', '重庆渝中区');
INSERT INTO "gaussdb"."tb_user" VALUES ('2024122121374910000018', 'user10', '123456', '张艳', '', 24, '13700000010', '天津和平区');
-- ----------------------------
-- Table structure for tb_yichang
-- ----------------------------
DROP TABLE IF EXISTS "gaussdb"."tb_yichang";
CREATE TABLE "gaussdb"."tb_yichang" (
"id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
"zhangh" varchar(255) COLLATE "pg_catalog"."default",
"yiclx" varchar(255) COLLATE "pg_catalog"."default",
"zhuangt" varchar(255) COLLATE "pg_catalog"."default",
"createtime" timestamp(6)
)
;
-- ----------------------------
-- Records of tb_yichang
-- ----------------------------
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121432410000039', '2024122121332710000009', '水管破裂', '未处理', '2024-12-21 21:43:24.747');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121434710000040', '2024122121335410000010', '欠费', '已处理', '2024-12-21 21:43:47.091');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121440610000041', '2024122121342710000011', '用水超标', '未处理', '2024-12-21 21:44:06.807');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121443310000042', '2024122121345210000012', '用水异常', '未处理', '2024-12-21 21:44:33.429');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121444910000043', '2024122121352210000013', '余额不足', '已处理', '2024-12-21 21:44:49.031');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121451110000044', '2024122121335410000010', '欠费', '未处理', '2024-12-21 21:45:11.442');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121463410000045', '2024122121345210000012', '水管破裂', '已处理', '2024-12-21 21:46:34.445');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121464510000046', '2024122121345210000012', '欠费', '未处理', '2024-12-21 21:46:45.795');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121470110000047', '2024122121371810000017', '欠费', '未处理', '2024-12-21 21:47:01.31');
INSERT INTO "gaussdb"."tb_yichang" VALUES ('2024122121472810000048', '2024122121364810000016', '用水异常', '未处理', '2024-12-21 21:47:28.704');
-- ----------------------------
-- Primary Key structure for table tb_admin
-- ----------------------------
ALTER TABLE "gaussdb"."tb_admin" ADD CONSTRAINT "tb_admin_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_employee
-- ----------------------------
ALTER TABLE "gaussdb"."tb_employee" ADD CONSTRAINT "tb_employee_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_jiaofei
-- ----------------------------
ALTER TABLE "gaussdb"."tb_jiaofei" ADD CONSTRAINT "tb_jiaofei_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_records
-- ----------------------------
ALTER TABLE "gaussdb"."tb_records" ADD CONSTRAINT "tb_records_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_shuijia
-- ----------------------------
ALTER TABLE "gaussdb"."tb_shuijia" ADD CONSTRAINT "tb_shuijia_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_user
-- ----------------------------
ALTER TABLE "gaussdb"."tb_user" ADD CONSTRAINT "tb_user_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table tb_yichang
-- ----------------------------
ALTER TABLE "gaussdb"."tb_yichang" ADD CONSTRAINT "tb_yichang_pkey" PRIMARY KEY ("id");

@ -0,0 +1,68 @@
--1.
--.
UPDATE "tb_user"
SET "tele" = '13912345678'
WHERE "id" = '2024122121332710000009';
--2.
--
UPDATE "tb_user"
SET "place" = '上海浦东新区'
WHERE "id" = '2024122121335410000010';
--3.
--
UPDATE "tb_shuijia"
SET "price" = '4.0'
WHERE "niany" = '2024-02';
--4.
--
UPDATE "tb_jiaofei"
SET "yingfje" = "shifje"
WHERE "PaymentID" = 1;
--5.
--
UPDATE "tb_yichang"
SET "zhuangt" = '已处理'
WHERE "id" = '2024122121434710000040';
--6.
--
UPDATE "tb_records"
SET "waterusage" = '350'
WHERE "id" = '2024122121493610000049';
--7.
--
UPDATE "tb_admin"
SET "password" = 'new_password'
WHERE "id" = '1234567890';
--8.
--
UPDATE "tb_user"
SET "age" = 30
WHERE "id" = '2024122121332710000009';
--9.
--
UPDATE "tb_jiaofei"
SET "AmountPaid" = '100.00'
WHERE "PaymentID" = 1;
--10.
--
UPDATE "tb_records"
SET "nmonth" = '2024-02'
WHERE "id" = '2024122121493610000049';

@ -0,0 +1,48 @@
--1. username
-- username
CREATE INDEX idx_tb_user_username ON "tb_user" ("username");
--2. id
-- id
CREATE INDEX idx_tb_user_id ON "tb_user" ("id");
--3. usid
--使 usid
CREATE INDEX idx_tb_records_usid ON "tb_records" ("usid");
--4. nmonth
--
CREATE INDEX idx_tb_records_nmonth ON "tb_records" ("nmonth");
--5. Account
-- Account
CREATE INDEX idx_tb_jiaofei_account ON "tb_jiaofei" ("Account");
--6. Month
--
CREATE INDEX idx_tb_jiaofei_month ON "tb_jiaofei" ("Month");
--7. zhangh
-- zhangh
CREATE INDEX idx_tb_yichang_zhangh ON "tb_yichang" ("zhangh");
--8. createtime
-- createtime
CREATE INDEX idx_tb_yichang_createtime ON "tb_yichang" ("createtime");
--9. niany
--
CREATE INDEX idx_tb_shuijia_niany ON "tb_shuijia" ("niany");
--10. tele place
-- tele place
CREATE INDEX idx_tb_user_tele_place ON "tb_user" ("tele", "place");

@ -0,0 +1,76 @@
--1.
--
CREATE VIEW "vw_user_water_info" AS
SELECT
u."id" AS "user_id",
u."username",
u."name" AS "user_name",
r."nmonth" AS "month",
r."waterusage" AS "water_usage",
p."price" AS "water_price",
r."waterusage" * p."price" AS "total_amount_due",
jf."AmountPaid" AS "amount_paid",
jf."AmountDue" AS "amount_due",
jf."PaymentDate" AS "payment_date"
FROM "tb_user" u
JOIN "tb_records" r ON u."id" = r."usid"
JOIN "tb_shuijia" p ON r."nmonth" = p."niany"
LEFT JOIN "tb_jiaofei" jf ON u."id" = jf."Account" AND r."nmonth" = jf."Month";
--2.
--
CREATE VIEW "vw_pending_exceptions" AS
SELECT
e."id" AS "exception_id",
e."yiclx" AS "exception_type",
e."zhangh" AS "user_account",
u."name" AS "user_name",
e."createtime" AS "creation_time",
e."zhuangt" AS "status"
FROM "tb_yichang" e
JOIN "tb_user" u ON e."zhangh" = u."id"
WHERE e."zhuangt" = '未处理';
--3.
--
CREATE VIEW "vw_payment_summary" AS
SELECT
u."id" AS "user_id",
u."name" AS "user_name",
jf."PaymentID",
jf."AmountDue" AS "due_amount",
jf."AmountPaid" AS "paid_amount",
jf."PaymentDate" AS "payment_date",
CASE
WHEN jf."AmountPaid" >= jf."AmountDue" THEN '已支付'
ELSE '未支付'
END AS "payment_status"
FROM "tb_jiaofei" jf
JOIN "tb_user" u ON jf."Account" = u."id";
--4.
--
CREATE VIEW "vw_user_water_usage_summary" AS
SELECT
u."id" AS "user_id",
u."username",
u."name" AS "user_name",
r."nmonth" AS "month",
SUM(r."waterusage") AS "total_water_usage"
FROM "tb_user" u
JOIN "tb_records" r ON u."id" = r."usid"
GROUP BY u."id", r."nmonth";
--5.
--
CREATE VIEW "vw_water_price_history" AS
SELECT
p."id" AS "price_id",
p."niany" AS "month",
p."price" AS "water_price"
FROM "tb_shuijia" p
ORDER BY p."niany";

@ -0,0 +1,95 @@
--1. 触发器:在插入用水记录时,自动更新异常记录
--需求:
--当插入一条新的用水记录时,系统会自动检查用水量是否超过预定的阈值,如果超过则在异常记录表中插入一条“用水超标”的异常记录。
CREATE OR REPLACE FUNCTION check_water_usage()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.waterusage > 500 THEN
INSERT INTO "tb_yichang" (zhangh, yiclx, zhuangt, createtime)
VALUES (NEW.usid, '用水超标', '未处理', NOW());
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_check_water_usage
AFTER INSERT ON "tb_records"
FOR EACH ROW
EXECUTE FUNCTION check_water_usage();
--2. 触发器:在更新水价时记录变更历史
--需求:
--每当更新水价表时,记录水价变更历史,保留每次变更的水价和变更时间。
CREATE OR REPLACE FUNCTION log_water_price_change()
RETURNS TRIGGER AS $$
BEGIN
INSERT INTO "tb_water_price_history" (niany, old_price, new_price, change_time)
VALUES (NEW.niany, OLD.price, NEW.price, NOW());
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_log_water_price_change
AFTER UPDATE ON "tb_shuijia"
FOR EACH ROW
EXECUTE FUNCTION log_water_price_change();
--3. 触发器:删除用户时,删除该用户的所有用水记录
--需求:
--当删除用户时,自动删除该用户的所有用水记录,保持数据一致性。
CREATE OR REPLACE FUNCTION delete_user_water_usage()
RETURNS TRIGGER AS $$
BEGIN
DELETE FROM "tb_records"
WHERE usid = OLD.id;
RETURN OLD;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_delete_user_water_usage
AFTER DELETE ON "tb_user"
FOR EACH ROW
EXECUTE FUNCTION delete_user_water_usage();
--4. 触发器:在插入异常记录时,检查用户的余额并更新状态
--需求:
--当插入一条新的异常记录时,如果异常类型为“余额不足”,系统会检查用户的余额,若余额不足则自动将异常记录的状态更新为“已处理”。
CREATE OR REPLACE FUNCTION update_exception_status_for_balance()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.yiclx = '余额不足' THEN
IF EXISTS (SELECT 1 FROM "tb_user_balance" WHERE usid = NEW.zhangh AND balance < 0) THEN
UPDATE "tb_yichang"
SET zhuangt = '已处理'
WHERE id = NEW.id;
END IF;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_update_exception_status_for_balance
AFTER INSERT ON "tb_yichang"
FOR EACH ROW
EXECUTE FUNCTION update_exception_status_for_balance();
--5. 触发器:在更新用户信息时,记录操作日志
--需求:
--每当更新用户信息时,系统会自动将变更的用户信息(如名称、电话、地址等)记录到操作日志表中。
CREATE OR REPLACE FUNCTION log_user_update()
RETURNS TRIGGER AS $$
BEGIN
INSERT INTO "tb_user_update_log" (user_id, old_name, new_name, old_tele, new_tele, old_place, new_place, update_time)
VALUES (NEW.id, OLD.name, NEW.name, OLD.tele, NEW.tele, OLD.place, NEW.place, NOW());
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_log_user_update
AFTER UPDATE ON "tb_user"
FOR EACH ROW
EXECUTE FUNCTION log_user_update();
Loading…
Cancel
Save