MySQL(8)存儲過程和函數

字段名 ? 數據類型 主鍵 外鍵 非空 唯一 自增

id? INT ?是? ?否? ? 是? ? 是? 否

name VARCHAR(50)? 否? ?否? ? 是? ? 否? 否

glass? ?VARCHAR(50)? 否? ?否? ? 是? ? 否? 否

mysql> create table sch (-> id int primary key not null unique,-> name varchar(50) not null,-> glass varchar(50) not null-> );

sch 表內容

id name glass

1 xiaommg glass 1

2? xiaojun glass 2

 insert into sch values('1','xiaommg','glass 1'),('2','xiaojun','glass 2');

select * from sch ;

1、創建一個可以統計表格內記錄條數的存儲函數 ,函數名為count_sch()

1.1創建函數

mysql> \d $$
mysql> create procedure count_sch()-> begin ->      select count(*) from sch;-> end $$
Query OK, 0 rows affected (0.00 sec)mysql> \d ;

1.2叫一下函數

mysql> call count_sch();

?

2、創建一個存儲過程avg_sai,有3個參數,分別是deptno,job,接收平均工資,功能查詢emp表dept為30,job為銷售員的平均工資。(使用之前的emp表)

2.1創建emp表

CREATE TABLE `emp`  (`empno` int(4) NOT NULL,`ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`mgr` int(4) NULL DEFAULT NULL,`hiredate` date NOT NULL,`sai` int(255) NOT NULL,`comm` int(255) NULL DEFAULT NULL,`deptno` int(2) NOT NULL,PRIMARY KEY (`empno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2.2插入數據

INSERT INTO `emp` VALUES (1001, '甘寧', '文員', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛綺絲', '銷售員', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '銷售員', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '劉備', '經理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '謝遜', '銷售員', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '關羽', '經理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '張飛', '經理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '諸葛亮', '分析師', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事長', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韋一笑', '銷售員', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文員', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文員', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '龐統', '分析師', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黃蓋', '文員', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '張三', '保潔員', 1001, '2013-05-01', 80000, 50000, 50);

?

2.3創建avg_sai

mysql>\d $$
mysql> create procedure avg_sai(in a1 int ,in a2 varchar(50),out a3 int)-> begin->      select avg(sai) into a3 from emp->      where deptno = a1 and job = a2;-> end $$
Query OK, 0 rows affected (0.00 sec)mysql> \d ;

?

mysql> call avg_sai(30,'銷售員',@xx);

ERROR 1366 (HY000): Incorrect string value: '\xE9\x94\x80\xE5\x94\xAE...' for column 'a2' at row 1?

炸裂

有待完善。

?

?

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

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

相關文章

MySQL(9)主從復制和讀寫分離

1.理解MySQL主從復制原理。 復制是MySQL提供的一直高可用、高性能的解決方案,一般用來建立大型的應用,總體來說,分為以下三步: (1)master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件&#x…

NoSQL(1)

1、簡述redis應用場景。 Redis 概念:Redis(Remote Dictionary Server),即遠程字典服務,是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。特征: 數據間沒有必然的聯系內部…

NoSQL(2)

1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令 1、 Keys相關的命令操作: (1) 查看key是否存在: EXISTS name #判斷該鍵是…

NoSQL(3)

1、什么是MongoDB ? MongoDB 是由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下,添加更多的節點,可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為…

Python二級筆記(1)

操作題 1,寬度為30字符,星號字符填充,居中對齊。如果輸入字符串超30位,則全部輸出。 例如:鍵盤輸入字符串q為‘abcd’,屏幕輸出abcd 代碼: s input(請輸入一個字符串:) print({:*^30}.form…

Python二級筆記(2)

知識點: 1,鏈表可以是線性結構也可以是非線性結構 線性表的鏈式存儲結構稱為線性鏈表;鏈表上一種物理存儲單元上非連續,非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的,鏈表可以說…

Python二級筆記(3)

知識點: 1,排序可以在不同的存儲結構上實現,但快速排序法適于順序存儲的線性表,不適用于鏈式存儲的線性表。 堆棧序適用于線性結構,不適用于非線性結構 2,基本路徑測試根據軟件過程性描述中的控制流確定程…

軟件工程學簡述

軟件危機 軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。(考試中名詞解釋或者選擇題為主) 軟件危機的典型表現 (1)對軟件開發成本和進度的估計常常很不準確。 (2)用戶對“已完成的…

Python二級筆記(4)

知識點&#xff1a; 1&#xff0c;冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數均為n(n-1)/2&#xff0c;堆排序在最壞情況下比較次數為nlog(2↓)n,在最壞情況下希爾排序需要比較的次數是n(↑r)&#xff08;1<r<2&#xff09;。 2&#xff0c;…

Python二級筆記(5)

知識點&#xff1a; 1&#xff0c;樹的度&#xff0c;及樹中存在的最大度數&#xff1b;如樹的度為3&#xff0c;即樹中只存在度為0&#xff0c;1&#xff0c;2&#xff0c;3的結點。 2&#xff0c;設循環隊列的存儲空間為Q&#xff08;1:m&#xff09;,初始狀態為空。在循環…

Qt圖形界面編程入門(1)

一、類和對象 1&#xff0c;面向過程程序設計&#xff08;自頂向下設計&#xff09; 分析出解決問題所需的步驟&#xff0c;然后用函數把這些步驟一一實現&#xff0c;使用的時候一個一個調用 過程式設計對于比較復雜的問題&#xff0c;或是在開發中需求變化比較多的時候&am…

Qt圖形界面編程入門(2)

二&#xff0c;指針和引用 共同點&#xff1a;它們都代表其他變量占據的某一塊內存區&#xff0c;通過指針或引用都可以對他們代表的其他變量進行操作。 以下語句利用指針對變量賦值&#xff1a; int m; int *p; //指針定義 p &m; //將m的內存地址賦給p *p 5;…

Qt圖形界面編程入門(3)

公有成員和私有成員 從訪問權限上分&#xff0c;類的成員又分為&#xff1a;公有成員&#xff08;public&#xff09;、私有成員&#xff08;private&#xff09;和保護成員&#xff08;protected&#xff09;三類。 公有成員用public來說明。這部分成員可以在程序中通過“…

Qt圖形界面編程入門(4)

構造函數和析構函數 構造函數是一個與類同名的特殊的公有成員函數。 創建類對象時構造函數會被調用&#xff0c;且只調用一次/ 構造函數無返回類型。 默認構造函數格式&#xff1a; 類名&#xff08;&#xff09;{.......} Account(){ //無返回類型&#xff0c;無參數I…

Qt圖形界面編程入門(5)

三&#xff0c;繼承和多態 繼承是定義新類的一種機制&#xff0c;使用這種機制創建新類時只需要聲明新類和已創建類之間的差別 對應一個繼承關系&#xff0c;創建的新類稱為子類&#xff0c;被繼承的類稱為父類或基類。子類可以使用父類定義的屬性和方法&#xff0c;也可以…

tensorflow安裝教程

https://note.youdao.com/ynoteshare1/index.html?iddddc63e6a2dfb70605ae9753bcc71a60&typenote 如果失效請下載文件查看&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/15FZETB3rzcpH-LOOpmpjTQ 提取碼&#xff1a;6jfm 如果安裝包找不到請點擊鏈接提取&am…

TensorFlow深度學習應用開發實戰(深度學習簡介和開發環境搭建)

一、深度學習的發展及其應用 1.1 深度學習的發展歷程 1956年&#xff0c;John McCarthy&#xff08;約翰麥卡錫&#xff09;等人在美國達特茅斯學院&#xff08;Dartmounth College&#xff09;開會探討如何使用機器模擬人的智能時&#xff0c;提出了“人工智能”這一概念。 …

路由與交換技術(鋪墊內容)

一、OSI參考模型 層次 結構 功能 數據 地址 設備 7 應用層 用戶接口 原始文件 主機名 主機 6 表示層 壓縮&a…

Python二級筆記(6)

一、知識點 1&#xff0c;continue語句用于中斷本次循環的執行&#xff0c;繼續執行下一輪循環的條件&#xff0c;表示跳出當前循環&#xff1b;Python中的for、while循環都有一個可選的else語句&#xff0c;如果break語句終止循環&#xff0c;那么else語句將不會執行。 2&am…

瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型

一、瀑布模型 1、按照傳統的瀑布模型開發軟件&#xff0c;有下述幾個特點。 ①階段間具有順序性和依賴性 階段間具有順序性和依賴性&#xff0c;這個特點有兩重含義&#xff1a; 1&#xff0c;必須等前一階段的工作完成之后&#xff0c;才能開始后一階段的工作&#xff1b;…