电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

拆解 MySQL 的高階使用與概念

瀏覽:4日期:2023-10-16 14:19:12

前面我們主要分享了MySQL中的常見知識與使用。這里我們主要分享一下MySQL中的高階使用,主要包括:函數(shù)、存儲過程和存儲引擎。

對于MySQL中的基礎(chǔ)知識,可以參見

《與 MySQL 的零距離接觸》

1 函數(shù)

函數(shù)可以返回任意類型的值,也可以接收這些類型的參數(shù)。

字符函數(shù) 函數(shù)名稱 描述CONCAT() 字符連接CONCAT_WS() 使用指定的分隔符進行字符連接FORMAT() 數(shù)字格式化LOWER() 轉(zhuǎn)換成小寫字母UPPER() 轉(zhuǎn)換成大寫字母LEFT() 獲取左側(cè)字符RIGHT() 獲取右側(cè)字符LENGTH() 獲取字符串長度LTRIM() 刪除前導(dǎo)空格RTRIM() 刪除后續(xù)空格TRIM() 刪除前導(dǎo)和后續(xù)空格SUBSTRING() 字符串截取[NOT] LIKE 模式匹配REPLACE() 字符串替換

函數(shù)可以嵌套使用。

% (百分號):代表任意個字符。

_ (下劃線):代表任意一個字符。

# 刪除前導(dǎo)’?’符號SELECT TRIM(LEADING ’?’ FROM ’??MySQL???’);# 刪除后續(xù)’?’符號SELECT TRIM(TRAILING ’?’ FROM ’??MySQL???’);# 刪除前后’?’符號SELECT TRIM(BOTH ’?’ FROM ’??My??SQL???’);# 將’?’符號替換成’!’符號SELECT REPLACE(’??My??SQL???’, ’?’, ’!’);# 從中’MySQL’第1個開始,截取2個字符SELECT SUBSTRING(’MySQL’, 1, 2);# 從中’MySQL’截取最后1個字符SELECT SUBSTRING(’MySQL’, -1);# 從中’MySQL’第2個開始,截取至結(jié)尾SELECT SUBSTRING(’MySQL’, 2); 數(shù)值運算符函數(shù) 函數(shù)名稱 描述CEIL() 進一取整DIV 整數(shù)除法FLOOR() 舍一取整MOD 取余數(shù)(取模)POWER() 冪運算ROUND() 四舍五入TRUNCATE() 數(shù)字截取 比較運算符函數(shù) 函數(shù)名稱 描述[NOT]BETWEEN…AND.. [不]在范圍之內(nèi)[NOT]IN() [不]在列出值范圍內(nèi)IS[NOT]NULL [不]為空 日期時間函數(shù) 函數(shù)名稱 描述NOW() 當(dāng)前日期和時間CURDATE() 當(dāng)前日期CURTIME() 當(dāng)前時間DATE_ADD() 日期變化DATEDIFF() 日期差值DATE_FORMAT() 日期格式化

# 時間增加1年SELECT DATE_ADD(’2016-05-28’, INTERVAL 365 DAY);# 時間減少1年SELECT DATE_ADD(’2016-05-28’, INTERVAL -365 DAY);# 時間增加3周SELECT DATE_ADD(’2016-05-28’, INTERVAL 3 WEEK);# 日期格式化SELECT DATE_FORMAT(’2016-05-28’, ’%m/%d/%Y’);# 更多時間格式可以前往MySQL官網(wǎng)查看手冊 信息函數(shù) 函數(shù)名稱 描述CONNECTION_ID() 連接IDDATEBASE() 當(dāng)前數(shù)據(jù)庫LAST_INSERT_ID() 最后插入記錄的ID號USER() 當(dāng)前用戶VERSION() 版本信息 聚合函數(shù) 函數(shù)名稱 描述AVG() 平均值COUNT() 計數(shù)MAX() 最大值MIN() 最小值SUM() 求和 加密函數(shù) 函數(shù)名稱 描述MD5() 信息摘要算法PASSWORD() 密碼算法 自定義函數(shù)

用戶自定義函數(shù)(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內(nèi)置函數(shù)相同。UDF是對MySQL擴展的一種途徑。

必要條件 參數(shù):可以有零個或多個 返回值:只能有一個

參數(shù)和返回值沒有必然的聯(lián)系。

創(chuàng)建自定義函數(shù)

CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body

函數(shù)體(routine_body)

函數(shù)體由合法的SQL語句構(gòu)成; 函數(shù)體可以是簡單的SELECT或INSERT語句; 函數(shù)體如果為復(fù)合結(jié)構(gòu)則使用BEGIN…END語句; 復(fù)合結(jié)構(gòu)可以包含聲明,循環(huán),控制結(jié)構(gòu)。

示例

# 不帶參數(shù)CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(), ’%Y-%m-%d %H:%i:%s’);# 帶參數(shù)CREATE FUNCTION f2(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED) RETURNS FLOAT(10, 2) UNSIGNED RETURN (num1 + num2) / 2;# 具有復(fù)合結(jié)構(gòu)函數(shù)體# 可能需要使用DELIMITER命令修改分隔符CREATE FUNCTION f3(username VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT test(username) VALUES(username);RETURN LAST_INSERT_ID();END 2 存儲過程

拆解 MySQL 的高階使用與概念 存儲過程是SQL語句和控制語句的預(yù)編譯集合,以一個名稱存儲作為一個單元處理。可以由用戶調(diào)用執(zhí)行,允許用戶聲明變量以及進行流程控制。存儲過程可以接收輸入類型的參數(shù),也可以接收輸出類型的參數(shù),并可以存在多個返回值。執(zhí)行效率比單一的SQL語句高。

優(yōu)點 增強SQL語句的功能和靈活性

在存儲過程中可以寫控制語句具有很強的靈活性,可以完成復(fù)雜的判斷及較復(fù)雜的運算。

實現(xiàn)較快的執(zhí)行速度

如果某一操作包含了大量的SQL語句,那么這些SQL語句都將被MySQL引擎執(zhí)行語法分析、編譯、執(zhí)行,所以效率相對過低。而存儲過程是預(yù)編譯的,當(dāng)客戶端第一次調(diào)用存儲過程時,MySQL的引擎將對它進行語法分析、編譯等操作,然后把這個編譯的結(jié)果存儲到內(nèi)存中,所以說第一次使用的時候效率和以前是相同的。但是以后客戶端再次調(diào)用這個存儲過程時,直接從內(nèi)存中執(zhí)行,所以說效率比較高,速度比較快。

減少網(wǎng)絡(luò)流量

如果通過客戶端每一個單獨發(fā)送SQL語句讓服務(wù)器來執(zhí)行,那么通過http協(xié)議來提交的數(shù)據(jù)量相對來說較大。

創(chuàng)建

CREATE [DEFINER = {user|CURRENT_USER}] PROCEDURE sp_name ([proc_parameter[, ...]]) [characteristic ...] routine_body

proc_parameter :

[IN | OUT | INOUT] param_name type

參數(shù):

IN ,表示該參數(shù)的值必須在調(diào)用存儲過程時指定。

OUT ,表示該參數(shù)值可以被存儲過程改變,并且可以返回。

INOUT ,表示該參數(shù)的調(diào)用時指定,并且可以被改變和返回。

特性:

COMMENT 注釋

CONTAINS SQL 包含SQL語句,但不包含讀或?qū)憯?shù)據(jù)的語句。

NO SQL 不包含SQL語句。

READS SQL DATA 包含讀寫數(shù)據(jù)的語句。

MODIFIES SQL DATA 包含寫數(shù)據(jù)的語句。

SQL SECURITY {DEFINER | INVOKER} 指明誰有權(quán)限來執(zhí)行。

過程體 過程體由合法的SQL語句構(gòu)成; 過程體可以是任意SQL語句; 不能通過存儲過程來創(chuàng)建數(shù)據(jù)表、數(shù)據(jù)庫。可以通過存儲過程對數(shù)據(jù)進行增、刪、改、查和多表連接操作。 過程體如果為復(fù)合結(jié)構(gòu)則使用BEGIN…END語句; 復(fù)合結(jié)構(gòu)中可以包含聲明、循環(huán)、控制結(jié)構(gòu)。 調(diào)用

CALL sp_name ([parameter[, ...]])CALL sp_name[()] 刪除

DROP PROCEDURE [IF EXISTS] sp_name 修改

ALTER PROCEDURE sp_name [characteristic ...] COMMENT ’string’| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}| SQL SECURITY {DEFINER | INVOKER} 存儲過程與自定義函數(shù)的區(qū)別 存儲過程實現(xiàn)的功能要復(fù)雜一些,而函數(shù)的針對性更強。 存儲過程可以返回多個值,函數(shù)只能有一個返回值。 存儲過程一般獨立執(zhí)行,函數(shù)可以作為其他SQL語句的組成部分來實現(xiàn)。

示例:

# 創(chuàng)建不帶參數(shù)的存儲過程CREATE PROCEDURE sp1() SELECT VERSION();# 創(chuàng)建帶有IN類型參數(shù)的存儲過程(users為數(shù)據(jù)表名)# 參數(shù)的名字不能和數(shù)據(jù)表中的記錄名字一樣CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)BEGINDELETE FROM users WHERE id = p_id;END# 創(chuàng)建帶有IN和OUT類型參數(shù)的存儲過程(users為數(shù)據(jù)表名)CREATE PROCEDURE removeUserAndReturnUserNumsById(IN p_id INT UNSIGNED, OUT userNums INT UNSIGNED)BEGINDELETE FROM users WHERE id = p_id;SELECT COUNT(id) FROM users INTO userNums;END# 創(chuàng)建帶有多個OUT類型參數(shù)的存儲過程(users為數(shù)據(jù)表名)CREATE PROCEDURE removeUserAndReturnInfosByAge(IN p_age SMALLINT UNSIGNED, OUT delUser SMALLINT UNSIGNED, OUT userNums SMALLINT UNSIGNED)BEGINDELETE FROM users WHERE age = p_age;SELECT ROW_COUNT INTO delUser;SELECT COUNT(id) FROM users INTO userNums;END 3 存儲引擎

MySQL可以將數(shù)據(jù)以不同的技術(shù)存儲在文件(內(nèi)存)中,這種技術(shù)就稱為存儲引擎。

每一種存儲引擎使用不同的存儲機制、索引技巧、鎖定水平,最終提供廣泛且不同的功能。

共享鎖(讀鎖):在同一時間段內(nèi),多個用戶可以讀取同一個資源,讀取過程中數(shù)據(jù)不會發(fā)生任何變化。

排他鎖(寫鎖):在任何時候只能有一個用戶寫入資源,當(dāng)進行寫鎖時會阻塞其他的讀鎖或者寫鎖操作。

鎖顆粒

表鎖:是一種開銷最小的鎖策略。

行鎖:是一種開銷最大的鎖策略。

并發(fā)控制

當(dāng)多個連接記錄進行修改時保證數(shù)據(jù)的一致性和完整性。

事務(wù)

事務(wù)用于保證數(shù)據(jù)庫的完整性。

舉例:用戶銀行轉(zhuǎn)賬

用戶A 轉(zhuǎn)賬200元 用戶B

實現(xiàn)步驟:

1)從當(dāng)前賬戶減掉200元(賬戶余額大于等于200元)。

2)在對方賬戶增加200元。

事務(wù)特性:

1)原子性(atomicity)

2)一致性(consistency)

3)隔離性(isolation)

4)持久性(durability)

外鍵

是保證數(shù)據(jù)一致性的策略。

索引

是對數(shù)據(jù)表中一列或多列的值進行排序的一種結(jié)構(gòu)。

類型

MySQL主要支持以下幾種引擎類型:

MyISAM InnoDB Memory CSV Archive

各類存儲引擎特點

特點 MyISAM InnoDB Memory Archive存儲限制 256TB 64TB 有 無事務(wù)安全 - 支持 - -支持索引 支持 支持 支持 鎖顆粒 表鎖 行鎖 表鎖 行鎖數(shù)據(jù)壓縮 支持 - - 支持支持外鍵 - 支持 - -

CSV:實際上是由逗號分隔的數(shù)據(jù)引擎,在數(shù)據(jù)庫子目錄為每一個表創(chuàng)建一個 .csv 的文件,這是一種普通的文本文件,每一個數(shù)據(jù)行占用一個文本行。不支持索引。

BlackHole:黑洞引擎,寫入的數(shù)據(jù)都會消失,一般用于做數(shù)據(jù)復(fù)制的中繼。

MyISAM:適用于事務(wù)的處理不多的情況。

InnoDB:適用于事務(wù)處理比較多,需要有外鍵支持的情況。

索引分類:普通索引、唯一索引、全文索引、btree索引、hash索引…

修改存儲引擎 通過修改MySQL配置文件 default-storage-engine=engine_name 通過創(chuàng)建數(shù)據(jù)表命令實現(xiàn) CREATE TABLE table_name(...)ENGINE=engine_name 通過修改數(shù)據(jù)表命令實現(xiàn) ALTER TABLE table_name ENGINE[=]engine_name 4 管理工具

phpMyAdmin

需要有PHP環(huán)境

Navicat

MySQL Workbench

來自:http://chars.tech/2017/05/29/mysql-advanced-study/

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 污泥烘干机-低温干化机-工业污泥烘干设备厂家-焦作市真节能环保设备科技有限公司 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 信阳市建筑勘察设计研究院有限公司| 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | STRO|DTRO-STRO反渗透膜(科普)_碟滤| 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 谈股票-今日股票行情走势分析-牛股推荐排行榜| 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | BHK汞灯-百科|上海熙浩实业有限公司 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 打造全球沸石生态圈 - 国投盛世|