精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

mysql怎么擴展字段 mysql如何增加字段

如何在mysql 的查詢結果中增加一個字段進去

通過 AUTO_INCREMENT設置SQL INSERT語句的時候,要避免 指定那個自增的字段.否則會發生主鍵的沖突。通過 ALTER TABLE語句 可以修改 自增的數值, 但是只能增加,不能減少。TRUNCATE TABLE 語句,會將自增ID重置為零。mysql CREATE TABLE test_c...

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、雅安服務器托管、營銷軟件、網站建設、寶安網站維護、網站推廣。

不改表結構如何動態擴展字段

增加 json 格式的擴展字段。

下面配合一些代碼來描述這個解決方案,讀者便于去理解。

mysql 數據庫腳本:

DROP TABLE IF EXISTS `cs_dustbin`;

CREATE TABLE IF NOT EXISTS `cs_dustbin` (

`id` VARCHAR(45) NOT NULL COMMENT '主鍵自增id',

`rfid_no` VARCHAR(20) NOT NULL COMMENT 'rfid 卡號',

`state` INT(1) NOT NULL COMMENT '垃圾桶狀態:0:已注銷;1:未使用;2:待使用;3:已使用(綁定收集點);',

`user_id` INT NOT NULL COMMENT '登記人,負責錄入垃圾桶的人',

`type` INT(1) NOT NULL DEFAULT 1 COMMENT '垃圾桶類型:1:餐廚垃圾桶',

`street_code` INT(11) DEFAULT NULL COMMENT '所在鎮街 code,根據狀態,這里的含義可能是領用鎮街、退還鎮街。',

`create_time` DATETIME NOT NULL DEFAULT now() COMMENT '創建時間',

`update_time` DATETIME NOT NULL DEFAULT now() COMMENT '更新時間',

`ext` VARCHAR(1000) NOT NULL DEFAULT '{}' COMMENT '擴展字段',

...

PRIMARY KEY (`id`))

ENGINE = InnoDB

COMMENT = '垃圾桶表';

復制代碼Java 代碼:

import com.alibaba.fastjson.JSON;

import lombok.Data;

import javax.validation.constraints.NotNull;

import java.util.Date;

import java.util.List;

/**

* 垃圾桶實體

* Created by Blink on 6/28/2018 AD.

*

* @author Blink

*/

@Data

public class Dustbin {

private String id;

/**

* rfid 卡號

*/

@NotNull

private String rfidNo;

/**

* 垃圾桶狀態:0:已注銷;1:未使用;2:待使用;3:已使用(綁定收集點);

* 對應 Dustbin.StateEnum 類

*/

@NotNull

private Integer state;

/**

* 錄入垃圾桶的人員id

*/

@NotNull

private Long userId;

/**

* 垃圾桶類型:1:餐廚垃圾桶

* DefaultValue: 1

*/

@NotNull

private Integer type;

/**

* 所在鎮街 code

* 根據狀態,這里的含義可能是領用鎮街、退還鎮街

*/

private Integer streetCode;

/**

* 創建時間

* defaultValue : now()

*/

@NotNull

private Date createTime;

/**

* 更新時間

*/

@NotNull

private Date updateTime;

/**

* 擴展字段,詳細數據查看 DustbinExt.java

* DefaultValue: {}

*/

private String ext;

...

public DustbinExt getExtObject() {

return JSON.parseObject(this.getExt(), DustbinExt.class);

}

public void setExtObject(DustbinExt ext) {

this.ext = JSON.toJSONString(ext);

}

/**

* 垃圾桶擴展屬性

* Created by Blink on 6/28/2018 AD.

*

* @author Blink

*/

@Data

public static class DustbinExt {

/**

* 所在鎮街

* 根據狀態,這里的含義可能是領用鎮街、退還鎮街、綁定的鎮街

*/

private String street;

/**

* 客戶(收集點)id,綁定收集點的時候需要填入

* 根據目前的需求(2018-06-29),當收集點解綁的時候

* 需要保存垃圾桶最新綁定收集點名稱,所以在解綁垃圾桶的時候不會把這個信息刪掉

* 只有當綁定收集點的時候才把他覆蓋

*/

private Long customerId;

/**

* 客戶(收集點)名稱,綁定收集點的時候需要填入

* 根據目前的需求(2018-06-29),當收集點解綁的時候

* 需要保存垃圾桶最新綁定收集點名稱,所以在解綁垃圾桶的時候不會把這個信息刪掉

* 只有當綁定收集點的時候才把他覆蓋

*/

private String customer;

/**

* 損壞部位

* 1:桶蓋;2:桶口;3:桶身;4:桶軸;5:桶底;6:桶輪;

* 對應 DustbinDamagePartEnum 類

*/

private ListInteger parts;

}

...

}

復制代碼mysql 腳本可以看到擴展字段的信息:

ext VARCHAR(1000) NOT NULL DEFAULT '{}' COMMENT '擴展字段'

復制代碼可以看到這么一段 Java 代碼:

...

/**

* 擴展字段,詳細字段查看 DustbinExt 類

* DefaultValue: {}

*/

private String ext;

public DustbinExt getExtObject() {

return JSON.parseObject(this.getExt(), DustbinExt.class);

}

public void setExtObject(DustbinExt ext) {

this.ext = JSON.toJSONString(ext);

}

...

復制代碼可以看到 ext 字段就是用來存儲 json 格式的數據,它可以動態地增加任何字段,甚至是對象,不需要通過 DDL(Data Definition Language) 去創建字段,非常適合用來解決上面提到的問題。

Java 代碼在這里起到輔助性作用,通過定義一個內部類來管理擴展字段的屬性,方便我們了解和管理擴展字段,提高代碼的可讀性和可維護性,java 這種方式也是筆者總結出來的較為優雅的做法(個人觀點)。

局限性

有經驗的讀者可能會提出,ext 字段在 Mysql 5.7.8 以下版本無法對擴展字段中的某一個或一部分字段建立索引,因為 Mysql 5.7.8 版本以下不支持(Mysql 5.7.8 支持為 Json Data Type 建立索引)。

沒錯,這是這個解決方案的一個局限性,在 Mysql 5.7.8 以下版本,我的建議是, ext 擴展字段不要存儲熱點數據,只存儲非熱點數據,這樣就可以避免查詢操作,降低維護 ext 字段帶來的成本和風險,那如何識別新增字段是不是熱點數據呢?這個需要結合實際業務需求來判斷,也可以詢問對業務和技術更有經驗的同事,便于讀者更快得出結論。

終極版解決方案

在一些極端的情況下,變化可能來得太快,而我們要的是減少變化帶來的成本和風險,所以在表設計之初可以根據自身經驗,或者找更有經驗的人尋求幫助,預估一下需要預留多少個備用字段,再配合擴展字段,基本上可以把改變(添加字段)表結構的次數降至一個非常少的次數。

總結

在特殊情況下,通過擴展字段 + 預留字段基本上可以做到動態擴展字段,又不會影響為熱點數據建立索引的情況,這樣我們得到了一個非常靈活的表結構,便于我們應對未來的變化,但是請注意,要維護好我們的實體,包括里面的每一個字段,敬畏每一行代碼。

mysql怎么給表增加一個字段

你如果想要給表增加一個字段,那么有很多種方法可以完成,比如說直接add一個字段在add的后面寫上字段的名稱和屬性。


分享標題:mysql怎么擴展字段 mysql如何增加字段
文章網址:http://m.jcarcd.cn/article/hjojoi.html
主站蜘蛛池模板: 97视频在线精| 成人一区在线播放 | 成人亚洲综合 | 国产精品网站不卡在 | 日本www色| 国产一区二区在线播 | 最新无码a∨在线观看 | 国外精品视频在线 | 日韩图片精品午夜 | 欧美在线精 | 精品国精品国产自在 | 国内精品在线国内 | 成人激情受网点 | 国产性色αv| 日韩视频不卡在线 | 青青草原国产在 | 日韩伦理片 | 日韩最新午夜片 | 国产亚洲欧美性爱 | 人成在线免费视频 | 国产免国产免费 | 精品视频国产 | 日本失禁成 | 欧州一级婬 | 国内自拍视频91 | 国产日韩精品aⅴ | 日韩男女性爱视频 | 日韩欧美亚洲综合久 | 精品国语自产拍在线 | 国产精首页 | 绿帽夫妻AV一级 | 福利导航视频大全 | 精品免费国产 | 欧美性爱五月天天亭 | 91亚色免费观看。 | 91蝌蚪国产 | 国产精品资源导航 | 不卡在线一区二区 | 国产在线视频国产 | 午夜日韩 | 欧美日韩激情视频 |