Mysql--期末復習

目錄

一.變量

1.系統變量? global session

2.用戶自定義變量

3.局部變量

二.觸發器

1.pysx函數(銷售)拼音縮寫觸發器

2.goods維護(存儲過程)

3.xkglxt

4.訂單延期


一.變量

1.系統變量? global session

2.用戶自定義變量

1.不用提前聲明,使用時直接''? @變量名? ? ? ''

2.set @name='lisi';

set 字段名 into @name from 表名

3.局部變量

1.需要用declare聲明

2.declare 變量名 類型?

3.set 變量名=值

二.觸發器

1.pysx函數(銷售)拼音縮寫觸發器

DELIMITER $$USE `shujuku`$$DROP FUNCTION IF EXISTS `PysxCx`$$CREATE DEFINER=`root`@`localhost` FUNCTION `PysxCx`(zw VARCHAR(20)) RETURNS VARCHAR(20) CHARSET utf8mb4READS SQL DATA
BEGINSET @pysx='';SET @l=CHAR_LENGTH(zw);SET @i=1;WHILE (@i<=@l) DOSELECT jp INTO @jp FROM hzpyb ?WHERE hz=SUBSTR(zw,@i,1);SET @pysx=CONCAT(@pysx,@jp);SET @i=@i+1;END WHILE;?? ?RETURN @pysx;END$$DELIMITER ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?觸發器維護pysx縮寫2

DELIMITER $$USE `shujuku`$$DROP TRIGGER `Update_mcsx_before_insert_goods`$$CREATETRIGGER `Update_mcsx_before_insert_goods` BEFORE INSERT ON `goods`?FOR EACH ROW BEGIN ??SET new.abbreviations=pysxcx(new.gname); ? ?
END;
$$DELIMITER ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?觸發器維護pysx縮寫2

DELIMITER $$USE `shujuku`$$DROP TRIGGER `Update_mcsx_before_update_goods_gname`$$CREATETRIGGER `Update_mcsx_before_update_goods_gname` BEFORE UPDATE ON `goods`?FOR EACH ROW BEGIN ? ?IF new.gname<>old.gname THEN ? ? ?SET new.abbreviations=pysxcx(new.gname); ? ??END IF; ? ?
END;
$$DELIMITER ;

2.goods維護(存儲過程)

goodswh

DELIMITER $$USE `shujuku`$$DROP PROCEDURE IF EXISTS `goodswh`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `goodswh`(gid INT,gname VARCHAR(20),unit VARCHAR(20),barcode VARCHAR(20),retail_Price DECIMAL(10,2),promotional_Price DECIMAL(10,2),STATUS TINYINT)
BEGINIF gid=0 THENINSERT INTO goods(gname,unit,barcode,retail_Price,promotional_Price,STATUS)?VALUES (gname,unit,barcode,retail_Price,promotional_Price,STATUS);ELSEIF gid>0 THENUPDATE ?goods SET goods.gname=gname, goods.unit=unit,?goods.barcode=barcode, goods.retail_Price=retail_Price, goods.promotional_Price=promotional_Price,?goods.STATUS=STATUS?WHERE ?goods.gid=gid;ELSEDELETE FROM goods WHERE ?goods.gid=-gid;END IF;END$$DELIMITER ;

goodscx

DELIMITER $$USE `shujuku`$$DROP PROCEDURE IF EXISTS `goodscx`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `goodscx`(gid INT)
BEGINIF gid=0 THENSELECT * FROM goods;ELSESELECT * FROM goods  WHERE goods.gid=gid;END IF;
END$$DELIMITER ;

?刪除觸發器

DELIMITER $$USE `shujuku`$$DROP TRIGGER /*!50032 IF EXISTS */ `delete_from_stock_after_delete_goods`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `delete_from_stock_after_delete_goods` BEFORE DELETE ON `goods` FOR EACH ROW BEGIN	DELETE FROM stock WHERE gid=old.gid;   
END;
$$DELIMITER ;

?11.銷售業務存儲過程

DELIMITER $$USE `shujuku`$$DROP PROCEDURE IF EXISTS `Xsjlcp_new`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `Xsjlcp_new`(cashierid INT, uid INT, payment TINYINT, xsmx VARCHAR(8000))
BEGINDECLARE amount_money DECIMAL(18,3);DECLARE actual_money DECIMAL(18,3);DECLARE discount_money DECIMAL(18,3);-- 如果存在名為 lsb 的表,則刪除它DROP TEMPORARY TABLE IF EXISTS lsb;-- 創建臨時表 lsb,包含 gid 和 xssl 兩個字段CREATE TEMPORARY TABLE lsb (gid INT, xssl NUMERIC(18,3));-- 使用 WHILE 循環解析 xsmx 中的數據并插入到 lsb 表中WHILE (xsmx > '') DOSET @k = POSITION(',' IN xsmx);SET @gid = LEFT(xsmx, @k - 1);SET xsmx = SUBSTR(xsmx, @k + 1);SET @k = POSITION(',' IN xsmx);SET @xssl = LEFT(xsmx, @k - 1);INSERT INTO lsb(gid, xssl) VALUES(@gid, @xssl);SET xsmx = SUBSTR(xsmx, @k + 1);END WHILE;-- 計算總金額和實際金額SELECT SUM(xssl * retail_Price) INTO amount_money FROM lsb, goods WHERE lsb.gid = goods.gid;SELECT SUM(xssl * promotional_Price) INTO actual_money FROM lsb, goods WHERE lsb.gid = goods.gid;SET discount_money = amount_money - actual_money;-- 插入收銀記錄到 cashaccount 表INSERT INTO cashaccount(cashierid, uid, payment, amount_money, actual_money, discount_money)VALUES (cashierid, uid, payment, amount_money, actual_money, discount_money);-- 插入銷售明細到 cashaccount_detail 表INSERT INTO cashaccount_detail(cashaccountid, gid, salesquantity, retailprice, promotionalprice)SELECT LAST_INSERT_ID(), lsb.gid, xssl, retail_Price, promotional_Price FROM lsb, goods WHERE lsb.gid = goods.gid;-- 更新庫存UPDATE stock s JOIN lsb ON s.gid = lsb.gid SET s.quantity = s.quantity - lsb.xssl;-- 如果 uid 大于等于 10000,則更新用戶的卡余額和積分IF uid >= 10000 THENUPDATE `user` SET card_balance = card_balance - actual_money, points = points + FLOOR(actual_money)WHERE uid = uid;END IF;-- 刪除臨時表 lsbDROP TEMPORARY TABLE IF EXISTS lsb;END$$DELIMITER ;

3.xkglxt

1.實現學生表的插入,需要判斷當前學號學生是否存在

DELIMITER $$USE `myspj`$$DROP PROCEDURE IF EXISTS `insert_Student`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_Student`(IN Studentid INT ,IN Studentname VARCHAR(10))
BEGINDECLARE StudentExists INT ;SELECT COUNT(*) INTO StudentExistsFROM Student WHERE id=Studentid;IF StudentExists > 0 THEN?SELECT '學號存在,學生信息插入失敗' ;ELSEINSERT INTO Student(id,`name`) VALUES (Studentid,Studentname);SELECT '學生信息插入成功';END IF;END$$DELIMITER ;

2.實現選課表的插入,需要判斷當前課程id和學生id是否存在

DELIMITER $$USE `myspj`$$DROP PROCEDURE IF EXISTS `insert_xuanke`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_xuanke`(IN _xid INT, IN _id INT, IN _kid INT, IN _chengji INT)
BEGIN ? ?DECLARE studentExists INT DEFAULT 0; ? ?DECLARE courseExists INT DEFAULT 0; ? ?SELECT COUNT(*) INTO studentExists ??FROM Student WHERE id = _id; ? ?IF studentExists = 0 THEN ? ?SELECT '學生id不存在' AS result; ?END IF; ?SELECT COUNT(*) INTO courseExists ??FROM kecheng WHERE kid = _kid; ?IF courseExists = 0 THEN ? ?SELECT '課程id不存在' AS result; ?ELSE ? ?-- 檢查學生是否已經選了這門課程 ?IF NOT EXISTS (SELECT 1 FROM xuanke WHERE kid = _kid AND id = _id) THEN ? ?INSERT INTO xuanke (xid, id, kid, chengji) VALUES (_xid, _id, _kid, _chengji); ? ?SELECT '插入成功' AS result; ?ELSE ? ?SELECT '學生已選該課程'; ? ?END IF; ? ?END IF; ?
END$$DELIMITER ;

4.訂單延期

將顧客表上余額不足1000元的,將訂單日期延后10天

UPDATE orders
SET DATE = DATE_ADD(DATE, INTERVAL 10 DAY)
WHERE orders.gid IN (SELECT gidFROM customersWHERE balance < 1000
);

將商品表中沒有顧客訂購的商品信息刪除

DELETE FROM goods
WHERE goods.`sid` NOT IN (
SELECT DISTINCT orders.`sid` FROM orders
)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11947.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

古月居講師/簽約作者招募計劃

機器人&#xff0c;作為一個集成了多學科技術的復雜系統&#xff0c;其開發過程充滿了挑戰。為了幫助開發者們更好地克服這些挑戰&#xff0c;提升項目的開發效率和質量&#xff0c;古月居特別招募[博客簽約作者/課程講師]。如果您平常熱愛記錄、分享開發者經驗的習慣&#xff…

Emby for Mac(輕松管理多媒體影音庫)1.9.9中文版

Emby for Mac是一款強大的多媒體影音庫管理工具&#xff0c;可以幫助用戶輕松管理和瀏覽自己的影音資源。它可以將用戶的個人視頻、音樂和照片組合在一起&#xff0c;并將其流式傳輸到用戶的設備上。 Emby for Mac 1.9.9中文版下載 Emby for Mac具有易于使用的界面&#xff0c;…

分布式與一致性協議之PBFT算法

在分布式系統中&#xff0c;數據的一致性是一個至關重要的問題。為了保證分布式系統中節點之間的數據一致性&#xff0c;人們提出了許多一致性協議和算法。 其中&#xff0c;PBFT&#xff08;Practical Byzantine Fault Tolerance&#xff0c;實用拜占庭容錯&#xff09;算法是…

content-type之multipart/form-data和application/json比較

multipart/form-data 知識點: 用途: 主要用于文件上傳以及包含非ASCII字符或二進制數據的表單數據提交。它將表單數據分割成多個部分&#xff0c;每個部分前都有一個boundary字符串作為分隔&#xff0c;可以包含文本字段和文件字段。結構: 包含了Content-Disposition頭部&…

機器學習案例:加州房產價格(四)

參考鏈接&#xff1a;https://hands1ml.apachecn.org/2/#_12 數據探索和可視化、發現規律 通過之前的工作&#xff0c;你只是快速查看了數據&#xff0c;對要處理的數據有了整體了解&#xff0c;現在的目標是更深的探索數據。 首先&#xff0c;保證你將測試集放在了一旁&…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時&#xff0c;你可以通過不同的方式發送JSON或表單數據&#xff08;application/x-www-form-urlencoded&#xff09;。同時&#xff0c;處理接口錯誤狀態碼&#xff08;如400&#xff09;和返回null的情況也是很重要的。以下是一些示例代碼&…

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…

【Python】Python中類的__iter__()方法

在Python中&#xff0c;__iter__ 方法是一個特殊的方法&#xff0c;它用于定義一個對象的迭代器行為。這個方法是面向對象編程中實現可迭代對象&#xff08;即支持迭代的對象&#xff09;的一部分。當你創建一個類&#xff0c;并且希望其實例能夠在例如 for 循環中被迭代時&…

Hive-拉鏈表的設計與實現

Hive-拉鏈表的設計與實現 在Hive中&#xff0c;拉鏈表專門用于解決在數據倉庫中數據發生變化如何實現數據存儲的問題。 1.數據同步問題 Hive在實際工作中主要用于構建離線數據倉庫&#xff0c;定期的從各種數據源中同步采集數據到Hive中&#xff0c;經過分層轉換提供數據應用…

MYSQL 存儲過程 函數

ddldml ? CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 學號,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2)…

【JAVA SE】初識JAVA

??歡迎大家來到Celia的博客?? &#x1f389;&#x1f389;創作不易&#xff0c;請點贊關注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所屬專欄&#xff1a;JAVA 個人主頁&#xff1a;Celias blog~ 目錄 ?編輯 一、關于JAVA 1.1 JAVA語言簡介 1.2 語言優勢 1…

鏈表常見OJ題

目錄 題目一&#xff1a;移除鏈表元素 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求 &#xff08;3&#xff09;題解 題目二&#xff1a;反轉鏈表 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求?編輯 &#xff08;3…

藍橋杯備戰.19有獎問答dfs

P9230 [藍橋杯 2023 省 A] 填空問題 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include<bits/stdc.h> using namespace std; #define endl \n //#define int long long const int N 2e510; int a[N],w[N]; int ans 0; void dfs(int score,int cnt) {if(cnt>3…

項目9-網頁聊天室1(注冊+Bycrpt加密)

1.準備工作 1.1.前端頁面展示 1.2 數據庫的建立 我們通過注冊頁面&#xff0c;考慮如何設計用戶表數據庫。 用戶id&#xff0c;userId用戶名&#xff0c;唯一&#xff0c;username用戶密碼&#xff0c;password&#xff08;包括密碼和確認密碼ensurePssword【數據庫沒有該字段…

【簡單介紹下Milvus】

&#x1f308;個人主頁: 程序員不想敲代碼啊 &#x1f3c6;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f44d;點贊?評論?收藏 &#x1f91d;希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff0c;讓我們共…

網絡3--網絡通信的深度理解(端口號)

網絡通信的進一步理解 兩個主機間進行通信&#xff0c;其實是兩個主機間的軟件進行通信&#xff0c;軟件也就是可執行程序&#xff0c;運行時就是進程&#xff0c;所以也為進程間通信。 進程間通信需要共享資源&#xff0c;這里兩個主機間的共享資源是網絡&#xff0c;利用的是…

Visual Studio生成C++的DLL文件(最簡單版)

前言 當你在使用C編寫一些可重用的代碼時&#xff0c;將其打包成一個動態鏈接庫&#xff08;DLL&#xff09;可以使其更容易地被其他項目或者程序調用和使用。Visual Studio提供了一種簡單的方式來生成C的DLL文件。下面是一個關于如何在Visual Studio中生成C的DLL文件的簡單教…

【 第一性原理計算方法及應用】

第一性原理計算方法及應用述

對接極速行情丨DolphinDB MDL 行情插件使用指南

通聯數據依托于金融大數據&#xff0c;結合人工智能技術為投資者提供個性化、智能化、專業化投資服務&#xff0c; MDL 則是通聯數據提供的高頻行情數據服務。DolphinDB 提供了能夠從 MDL 服務器獲取高頻行情數據的 DolphinDB MDL 插件&#xff0c;幫助用戶方便地通過 DolphinD…