最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫之?dāng)?shù)據(jù)類型與表約束

 更新時間:2026年07月06日 15:23:05   作者:澪貳  
在MySQL數(shù)據(jù)庫中,數(shù)據(jù)類型和表約束是非常重要的概念,它們幫助確保數(shù)據(jù)的完整性、準確性和安全性,下面我將分別介紹MySQL中的數(shù)據(jù)類型和表約束,感興趣的朋友一起看看吧

MySQL 設(shè)計表結(jié)構(gòu)時,數(shù)據(jù)類型選得對、約束用得好,表結(jié)構(gòu)就穩(wěn)了一半。這篇文章把「數(shù)據(jù)類型」和「表約束」兩大核心知識點講透

1.MySQL 數(shù)據(jù)類型

MySQL 數(shù)據(jù)類型主要分四大類:數(shù)值類型、字符串類型、日期時間類型、枚舉/集合類型。

1.1 數(shù)值類型

最常用: TINYINTINT、BIGINTFLOAT、DECIMAL

整數(shù)類型

  • TINYINT1字節(jié),-128~127;無符號 0~255
  • INT4字節(jié),常用作主鍵 ID
  • BIGINT8字節(jié),超大數(shù)字用
-- 無符號 tinyint(0~255)
create table tt2(num tinyint unsigned);

小數(shù)類型

  • FLOAT:單精度,4字節(jié),精度一般
  • DECIMAL(M,D):高精度定點數(shù),錢/金額必須用它
-- 高精度小數(shù),推薦用 decimal
create table tt8(
    salary float(10,8), 
    salary2 decimal(10,8)
);

BIT 類型

  • 0/1 最省空間
  • 顯示時按 ASCII 碼展示
create table tt5(gender bit(1)); -- 只能存 0 或 1

1.2 字符串類型

CHAR(size)

  • 固定長度,最大 255 字符
  • 速度快,空間浪費
  • 適合:身份證、手機號、MD5
name char(32); -- 永遠占 32 字符空間

VARCHAR(size)

  • 可變長度,用多少占多少
  • 最大 65535 字節(jié)
  • UTF8 下最大 21844 字符
name varchar(60); -- 變長,節(jié)省空間

CHAR vs VARCHAR 怎么選?

  • 長度固定 → CHAR
  • 長度不固定 → VARCHAR
  • 定長浪費空間、效率高;變長省空間、效率稍低

1.3 日期時間類型

  • DATEyyyy-mm-dd
  • DATETIMEyyyy-mm-dd hh:mm:ss
  • TIMESTAMP:時間戳,更新行時自動刷新
create table birthday (
    t1 date, 
    t2 datetime, 
    t3 timestamp
);

1.4 ENUM 與 SET(單選/多選)

  • ENUM:單選(男/女)
  • SET:多選(游泳、籃球、登山)
create table votes(
    username varchar(30),
    hobby set('登山','游泳','籃球'),
    gender enum('男','女')
);

查詢 SET 必須用 find_in_set

select * from votes where find_in_set('登山', hobby);

2.MySQL 表約束

約束 = 保證數(shù)據(jù)合法、不亂、不重復(fù)、不空。

2.1 NOT NULL 非空

字段不允許為 NULL,業(yè)務(wù)字段強烈建議加。

create table myclass(
    class_name varchar(20) not null,
    class_room varchar(10) not null
);

2.2 DEFAULT 默認值

插入時不填則自動用默認值。

age tinyint unsigned default 0,
sex char(2) default '男'

2.3 COMMENT 字段注釋

必加!方便維護,通過 show create table 表名\G 可以看到該字段。

name varchar(20) not null comment '用戶姓名';

2.4 ZEROFILL 補零

數(shù)字不足長度時前面補 0。

id int(5) unsigned zerofill;
-- 1 → 00001

2.5 PRIMARY KEY 主鍵

  • 唯一 + 非空
  • 一張表只能一個主鍵
id int unsigned primary key auto_increment

復(fù)合主鍵

create table tt14(
id int unsigned,
course char(10) comment '課程代碼',
score tinyint unsigned default 60 comment '成績',
primary key(id, course) -- id和course為復(fù)合主鍵
);

如果有多個字段作為主鍵,可以使用復(fù)合主鍵,多個字段組合起來必須唯一

當(dāng)表創(chuàng)建好以后但是沒有主鍵的時候,可以再次追加主鍵

alter table 表名 add primary key(字段列表)

刪除主鍵

alter table 表名 drop primary key;

2.6 AUTO_INCREMENT 自增長

配合主鍵使用,自動 +1,自增長字段必須是整數(shù),一張表最多只能有一個自增長。

id int primary key auto_increment

2.7 UNIQUE 唯一鍵

值不能重復(fù),但允許 NULL。

email varchar(64) unique

2.8 FOREIGN KEY 外鍵

保證關(guān)聯(lián)表數(shù)據(jù)合法性,防止無效關(guān)聯(lián)。外鍵用于定義主表和從表之間的關(guān)系:外鍵約束主要定義在從表上,主表則必須是有主鍵約束或 unique 約束。當(dāng)定義外鍵后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列存在或為 null

foreign key (class_id) references myclass(id)

建立外鍵的本質(zhì)其實就是把相關(guān)性交給 mysql 去審核了,提前告訴 mysql表之間的約束關(guān)系,那么當(dāng)用戶插入不符合業(yè)務(wù)邏輯的數(shù)據(jù)的時候,mysql 不允許你插入

到此這篇關(guān)于MySQL數(shù)據(jù)庫之?dāng)?shù)據(jù)類型與表約束的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)類型與表約束內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

房产| 仪征市| 铁岭县| 郸城县| 京山县| 岳池县| 万荣县| 九龙坡区| 和政县| 峨眉山市| 大庆市| 苍溪县| 汽车| 常宁市| 彝良县| 合川市| 绿春县| 武宣县| 牡丹江市| 乌拉特后旗| 五寨县| 手机| 英吉沙县| 抚松县| 淳安县| 岳阳县| 武汉市| 获嘉县| 建宁县| 英超| 浦江县| 嘉兴市| 锡林浩特市| 鄂州市| 永城市| 威信县| 通化县| 安吉县| 长垣县| 广安市| 崇仁县|