赞
踩
作为《学生食堂信息管理系统》项目开发组的程序员,按要求完成:
数据库的创建;
数据表的创建;
数据的操作。
学生食堂信息管理系统的 E-R 图如图 2.16 所示,逻辑数据模型如图 2.17 所示,物理数据模型如图 2.18 所示,数据表字段名定义见表 2.8。请按以下设计完成数据库创建、数据表创建和数据操作任务:




-- 2.1、创建数据库CardDB CREATE DATABASE CardDB USE CardDB -- 2.2、创建表 CREATE TABLE IF NOT EXISTS T_card( Card_id CHAR(50) NOT NULL, Student_id CHAR(50) NOT NULL, Student_name CHAR(50) NOT NULL, Curr_money DECIMAL(8,2), Register_date DATETIME, PRIMARY KEY(Card_id) )ENGINE=INNODB DEFAULT CHARSET=utf8; SELECT * FROM T_card CREATE TABLE IF NOT EXISTS T_add_money( Add_id CHAR(50) NOT NULL, T_c_Card_id CHAR(50) NOT NULL, Student_name CHAR(50) NOT NULL, The_money DECIMAL(8,2), Register_date DATETIME, PRIMARY KEY(Add_id) )ENGINE=INNODB DEFAULT CHARSET=utf8; SELECT * FROM T_add_money CREATE TABLE IF NOT EXISTS T_consume_money( Consume_id CHAR(50) NOT NULL, T_c_Card_id CHAR(50) NOT NULL, Student_name CHAR(50) NOT NULL, The_money DECIMAL(8,2), Register_date DATETIME, PRIMARY KEY(Consume_id) )ENGINE=INNODB DEFAULT CHARSET=utf8; SELECT * FROM T_consume_money -- 2.3、查询所有饭卡信息 SELECT * FROM T_card -- 2.4、查询所有饭卡的余额之和 SELECT SUM(Curr_money) AS '所有饭卡余额' FROM T_card -- 2.5、-查询某日所有饭卡的充值金额之和(比如 2011 年 6 月 1 号总共充值金额是多少元) SELECT SUM(The_money) FROM T_add_money WHERE CONVERT(DATE_FORMAT(Register_date,'%Y-%m-%d'),CHAR)='2022-10-10' SELECT CONVERT(DATE_FORMAT(Register_date,'%Y-%m-%d'),CHAR) FROM T_add_money SELECT DATE_FORMAT(Register_date,'%y-%m-%d') FROM T_add_money -- 错误的 select date_format(Register_date,'YYYY mm dd') from T_add_money -- 2.6、查询某饭卡在 2011 年 3 月到 2011 年 6 月之间的消费金额 SELECT SUM(The_money) FROM T_consume_money WHERE YEAR(Register_date)=2022 AND MONTH(Register_date) BETWEEN 10 AND 12 AND T_c_Card_id=001 SELECT YEAR(Register_date) FROM T_consume_money SELECT DATE_FORMAT(Register_date,'%Y') FROM T_consume_money SELECT DATE_FORMAT('2022-10-10','%Y') -- 2.7、存储过程 DELIMITER $$ CREATE PROCEDURE IsAbleToCosume(IN cardId INT,IN thisCosume DECIMAL(8,2)) BEGIN DECLARE curMoney INT; DECLARE result CHAR(10); SET curMoney=(SELECT Curr_money FROM T_card WHERE Card_id=cardId); IF(curMoney >= thisCosume) THEN SET result='true'; ELSE SET result='false'; END IF; END $$ DELIMITER ; CALL IsAbleToCosume(001,100) SELECT @result DELIMITER $$ CREATE PROCEDURE IsAbleToCosume2(IN cardId INT,IN thisCosume DECIMAL(8,2),OUT result CHAR(10)) BEGIN DECLARE curMoney INT; SET curMoney=(SELECT Curr_money FROM T_card WHERE Card_id=cardId); IF(curMoney >= thisCosume) THEN SET result='true'; ELSE SET result='false'; END IF; END $$ DELIMITER ; SET @temp='massimo' CALL IsAbleToCosume2(001,1000,@temp) SELECT @temp SELECT * FROM T_card



Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。