日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql merge表介绍

發布時間:2025/3/13 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql merge表介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ?在Mysql數據庫中。Mysql Merge表有點類似于視圖。以下就讓我們來一起了解一下Mysql Merge表都有哪些長處。希望對您能有所幫助。

Mysql Merge表的長處:
A: 分離靜態的和動態的數據
B:利用結構接近的的數據來優化查詢
C: 查詢時能夠訪問更少的數據
D:更easy維護大數據集
E: 能夠通過改動.mrg文件來改動Merge表,當然也能夠用alter進行改動,改動后要通過FLUSH TABLES刷新表緩存。此法能夠動態添加降低子表
創建方法,例:
mysql>CREATE TABLE t1(a INT NOT NULL PRIMARY KEY)ENGINE=MyISAM;
mysql>CREATE TABLE t2(a INT NOT NULL PRIMARY KEY)ENGINE=MyISAM;
mysql>CREATE TABLE mrg(a INT NOT NULL PRIMARY KEY)ENGINE=MERGE UNION=(t1,t2)??????? INSERT_METHOD=LAST;
以下加入測試數據
mysql>INSERT INTO t1(a) VALUES(1),(2);
mysql>INSERT INTO t2(a)VALUES(1),(2);
查詢一下看看結果
mysql>SELECT a FROM mrg;
結果會顯示出t1,t2兩個表中的數據
+------+
|? a???? |
+------+
|?????? 1|
|?????? 2|
|?????? 1|
|?????? 2|
+------+

對于merge表,須要注意的是???
1。每一個子表的結構必須一致。主表和子表的結構須要一致。
2。每一個子表的索引在merge表中都會存在,所以在merge表中不能依據該索引進行唯一性檢索。


3? 子表須要是MyISAM引擎
4?? REPLACE在merge表中不會工作
5?? AUTO_INCREMENT 不會依照你所期望的方式工作。

創建Mysql Merge表的參數 INSERT_METHOD有幾個參數 。


LAST? 假設你運行insert 指令來操作merge表時,插入操作會把數據加入到最后一個子表中。FIRST? 同理。運行插入數據時會把數據加入到第一個子表中。
比方本例。對merge表運行插入操作
mysql>INSERT INTO mrg(a)VALUES(18);
查詢一下
mysql>SELECT a FROM t2;
結果你會發現18出如今t2表中。
---------------------------------------------------------------
假設你對mrg表或者子表進行了DROP操作,那將有可能會產生些不可預知的情況。


假設刪除mrg表。那么各個子表間將不會有聯系。

可是假設刪除當中的任一子表,對于GNU/LINUX來說,merge表結構及數據仍然存在。
mysql>DROP TABLE t1,t2;
mysql>SELECT a FROM mrg;
結果你會發現mrg表的查詢結果不變。




他將多個表在邏輯上當作一個表來查詢。他建立后有兩個文件,?
.frm 表結構定義?
.mrg union表的名字清單


--
-- merger表的結構 `test_merge`
--

CREATE TABLE IF NOT EXISTS `test_merge` (
? `id` int(5) NOT NULL auto_increment,
? `names` varchar(100) NOT NULL,
? PRIMARY KEY? (`id`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=gb2312 INSERT_METHOD=LAST UNION=(`test_merge_1`,`test_merge_2`,`test_merge_3`);

--
-- 導出表中的數據 `test_merge`
--

INSERT INTO `test_merge` (`id`, `names`) VALUES
(1, 'aa'),
(1, 'bb'),
(1, 'cc');

-- --------------------------------------------------------

--
-- 基本表的結構 `test_merge_1`
--

CREATE TABLE IF NOT EXISTS `test_merge_1` (
? `id` int(5) NOT NULL auto_increment,
? `names` varchar(100) NOT NULL,
? PRIMARY KEY? (`id`)
) ENGINE=MyISAM? DEFAULT CHARSET=gb2312 AUTO_INCREMENT=3 ;

--
-- 導出表中的數據 `test_merge_1`
--

INSERT INTO `test_merge_1` (`id`, `names`) VALUES
(1, 'aa');

-- --------------------------------------------------------

--
--基本 表的結構 `test_merge_2`
--

CREATE TABLE IF NOT EXISTS `test_merge_2` (
? `id` int(5) NOT NULL auto_increment,
? `names` varchar(100) NOT NULL,
? PRIMARY KEY? (`id`)
) ENGINE=MyISAM? DEFAULT CHARSET=gb2312 AUTO_INCREMENT=2 ;

--
-- 導出表中的數據 `test_merge_2`
--

INSERT INTO `test_merge_2` (`id`, `names`) VALUES
(1, 'bb');

-- --------------------------------------------------------

--
-- 基本表的結構 `test_merge_3`
--

CREATE TABLE IF NOT EXISTS `test_merge_3` (
? `id` int(5) NOT NULL auto_increment,
? `names` varchar(100) NOT NULL,
? PRIMARY KEY? (`id`)
) ENGINE=MyISAM? DEFAULT CHARSET=gb2312 AUTO_INCREMENT=2 ;

--
-- 導出表中的數據 `test_merge_3`
--

INSERT INTO `test_merge_3` (`id`, `names`) VALUES
(1, 'cc');
1. 此表類似于SQL中的union機制。?
2. 此表結構必須與基本表全然一致。包含列名、順序。UNION表必須同屬一個DATABASE。

?
3. 基本表類型必須是MyISAM。?
4. 能夠通過改動.mrg文件來改動MERGE表,每一個基本表的名字占一行。注意:改動后要通過FLUSH TABLES刷新表緩存。?
5. 對基本表的更改能夠直接反映在此表上。?
6. INSERT_METHOD的取值能夠是: 0 不同意插入 FIRST 插入到UNION中的第一個表 LAST 插入到UNION中的最后一個表。(4.0之后可用)?
7. 定義在它上面的約束沒有不論什么作用,約束是由基本表控制的,比如兩個基本表中存在著相同的一個Key值。那么在MERGE表中會有兩個一樣的Key值。

轉載于:https://www.cnblogs.com/blfshiye/p/5115472.html

總結

以上是生活随笔為你收集整理的mysql merge表介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。