首頁 > 軟體

MySQL資料庫表的合併與分割區實現介紹

2022-09-28 14:01:09

建立資料表

建立資料表的,使用字串應該遵循的原則

  • 從速度方面考慮,要選擇固定的列,可以使用CHAR型別
  • 要節省空間,使用動態的列,可以使用VARCHAR型別
  • 要將列中的內容限制為一種選擇,可以使用ENUM型別
  • 允許在一列中有多個條目,可以使用SET型別
  • 如果要搜尋的內容不區分大小寫,可以使用TEXT型別
  • 如果要搜尋的內容區分大小寫,可以使用BLOB型別

建立資料表其實就是在已經建立好的資料庫中建立新表。

資料表屬於資料庫,在建立資料表之前,應該使用語句

"use <資料庫名>" ;      //表明使用哪個資料庫。

如果你沒有選擇資料庫的話,MySQL會丟擲No database selected 的錯誤提示

建立資料表的語句為:

create table 資料表名稱(

欄位名1 資料型別 [完整約束條件] [預設值],

欄位名2 資料型別 [完整約束條件] [預設值],

欄位名3 資料型別 [完整約束條件] [預設值],

"資料表名稱"是建立資料表的名字。"欄位名"是資料表的列名,"完整性約束條件"是欄位的特殊約束條件

使用create table 建立表時,必須指定以下資訊:

資料表名不區分大小寫,且不能使用SQL中的關鍵字,如DROP,INSERT等。

如果資料表中有多個欄位(列),欄位(列)的名稱和資料型別要用英文逗號隔開。

資料庫表合併

合併表:把多個結果相同的的表合併為一個容器。

容器的型別:Myisam,儲存引擎:merge

存在的問題:有重複的行

create table packtable(
  id ....
)engine=merge unique=(table1,table2);

資料庫表分割區

表的分割區:

  • 水平分割區:根據某個欄位進行分割區(RANGE分割區)
create table test1(
id int(10) primary key auto_increment,
 score int(3)
)engine=innodb default charset=utf8 partition by range(score)(
//根據score欄位分割區,score小於60的在p1分割區
  partition p1 values less than(60),
//根據score欄位分割區,score小於70的在p2 分割區
 partition p2 values less than(70),
 //根據score欄位分割區,score大於70的在p3 分割區
  partition p3 values lessthan maxvalue
 );
  • list分割區:第一選擇基於某 列的值是否屬於某個 集合
create table test1(
     id int(10) primary key auto_increment,
     branch_id int(3)
)engine=innodb default charset=utf8 partition by list(branch_id  )(
    //根據branch_id 欄位分割區,branch_id  在1,2,3之中的為p1分割區
     partition p1 values less in(1,2,3),
    //根據branch_id 欄位分割區,branch_id  在7,8,9 之中的為p2分割區
     partition p2 values less in(7,8,9)
);
  • hash分割區:支援數值型別
--
-- 根據birthda欄位獲取月份,再根據月份進行分割區儲存,一共分12個區;
--
create table test1(
 id int(10) primary key auto_increment,
 birthday date
)engine=innodb default charset=utf8 partition by hash(month(birthday))  partitions 12;
 
  • 線性分割區(linear hash):巨量資料是增加,合併,拆分速度更快
--
-- 根據branch_id欄位進行分割區儲存,一共分5個區;
--
create table test1(
 id int(10) primary key auto_increment,
 branch_id int(3)
)engine=innodb default charset=utf8 partition by linear hash (branch_id  ) partitions 5;
  • key分割區:可以計算一列或者多列進行分割區
--
-- 根據branch_id欄位進行分割區儲存,一共分5個區;
--
create table test1(
 id int(10) primary key auto_increment,
 branch_id int(3)
)engine=innodb default charset=utf8 partition by key (branch_id  ) partitions 5;

到此這篇關於MySQL資料庫表的合併與分割區實現介紹的文章就介紹到這了,更多相關MySQL資料庫表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com