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

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

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

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

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

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

1.1 數(shù)值類型

最常用: TINYINT、INTBIGINT、FLOAT、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ù)合法、不亂、不重復、不空。

2.1 NOT NULL 非空

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

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

復合主鍵

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

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

當表創(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 唯一鍵

值不能重復,但允許 NULL。

email varchar(64) unique

2.8 FOREIGN KEY 外鍵

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

foreign key (class_id) references myclass(id)

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

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

相關(guān)文章

最新評論

紫阳县| 全州县| 乌苏市| 卢龙县| 盐山县| 亚东县| 德江县| 利津县| 游戏| 大英县| 大田县| 五家渠市| 江口县| 固镇县| 中西区| 闽清县| 德江县| 阿巴嘎旗| 凭祥市| 海宁市| 西充县| 鸡泽县| 永安市| 澄迈县| 德钦县| 南开区| 赣州市| 扶绥县| 湄潭县| 堆龙德庆县| 威信县| 高碑店市| 石台县| 南部县| 莎车县| 德清县| 建湖县| 温州市| 富锦市| 奈曼旗| 凤城市|