亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文掌握MySQL表的創(chuàng)建和約束

 更新時間:2022年07月26日 08:22:22   作者:微涼秋意  
這篇文章主要和大家分享一下數(shù)據(jù)庫的創(chuàng)建和銷毀語法以及詳細講解MySQL表的創(chuàng)建代碼和約束的使用,文中的示例代碼講解詳細,感興趣的可以了解一下

一、數(shù)據(jù)庫的建立和銷毀

建立數(shù)據(jù)庫:

create database [if not exists] 數(shù)據(jù)庫名 [default charset 字符集]

tips: 中括號[]里面的內(nèi)容可以省略不寫

加上if not exists的含義是:如果不存在此數(shù)據(jù)庫就會創(chuàng)建

default charset 字符集是創(chuàng)建數(shù)據(jù)庫的時候設(shè)置字符集

銷毀數(shù)據(jù)庫:

drop database [if exists] 數(shù)據(jù)庫名

tips: 可省略部分的含義同上

二、表的建立和銷毀

1、表的建立

語法:

create table [if not exists] 表名(
    字段名  數(shù)據(jù)類型  [約束],
    字段名  數(shù)據(jù)類型  [約束],
    ...(最后一個字段不能加逗號)
)

1.1、命名規(guī)則

表名通常以t_開頭

關(guān)鍵字段通常以表名縮寫_開頭

MySQL不區(qū)分大小寫,不能使用關(guān)鍵字命名,多個部分之間用下劃線連接

1.2、數(shù)據(jù)類型

需要掌握的數(shù)據(jù)類型:

1.整數(shù):int、integer、bigint

2.小數(shù):decimal

3.字符串:varchar

4.枚舉:enum

5.日期:datatime

使用建議:

當字段數(shù)字一定大于0并且不會進行減運算時可以使用無符號數(shù)unsigned,通常不建議

float和double存在精度問題,后續(xù)mysql將不再支持

char和verchar在保存多個字符時底層實現(xiàn)是一致的,只是占用空間的模式不同,不建議使用char,因為有可能浪費空間

timestamp上限太低,date和time不實用,所以日期建議使用datetime

2、表約束概念

2.1、約束預(yù)覽

約束解釋說明
primary key主鍵用來標志一列為主鍵列
not null非空約束該列值不允許為空
unique唯一約束該列值不允許重復(fù)
default默認給該列設(shè)置默認值
foreign key外鍵標志一列為外鍵值
check檢查約束MySQL不支持

2.2、特點及作用

主鍵

作用:可以作為唯一標識具體鎖定某行數(shù)據(jù)

特點:非空且唯一

一張表至多有一個主鍵列

非空

特點:值不能為null,必須設(shè)定

唯一

特點:值可以為null,并且可以存在多個null,該約束只對已經(jīng)存在的值有效

非空約束+唯一約束 不等同于 主鍵約束

默認

特點:如果該列未顯式賦值,則使用默認值存放

語法: default(值)

外鍵的使用放在下面具體講解

3、表約束具體使用

3.1、列級約束

直接將約束定義到在列的聲明里

使用示例:

-- id、姓名、年齡、性別、身高、生日
create table if not exists t_person(
        p_id int primary key,-- 主鍵
        p_name varchar(50) unique not null,-- 唯一+非空
        age tinyint unsigned not null,-- 非空 無符號數(shù)  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數(shù)點占1位:000.0
        birthday datetime
)

3.2、表級約束

將約束單獨定義在所有列的下方,not null和default沒有表級約束

語法:[constraint 自定義約束名] 約束類型(字段名)

使用示例:

create table if not exists t_person(
        p_id int,-- 主鍵
        p_name varchar(50) not null,-- 唯一+非空
        age tinyint unsigned not null,-- 非空 無符號數(shù)  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數(shù)點占1位:000.0
        birthday datetime,
        -- 表級約束
        primary key(p_id),-- 給p_id添加主鍵約束
        constraint un_name unique(p_name)-- 給p_name添加唯一約束
)

3.3、外鍵約束

作用:用來表示兩張表之間的聯(lián)系,必須結(jié)合另一張表使用

特點:

  • 連接的必須是另一張表的主鍵或者唯一列
  • 外鍵列的值不可自定義,必須來自另一張表與之關(guān)聯(lián)的列中已經(jīng)存在的值
  • 值可以為null,不唯一
  • 必須用表級約束創(chuàng)建

語法:

foreign key(字段名) references 其他表名(其他表的連接字段名)

使用:

  • 建表順序:先建沒有外鍵的表,再建有外鍵的表
  • 刪表順序:先刪有外鍵的,再刪沒外鍵的
  • 外鍵列的數(shù)據(jù)類型必須與所連接的列一致

使用示例:

-- 班級表:id,班級名
create table t_class(
    c_id  int PRIMARY KEY,
    c_name varchar(20) not null
)
-- 學生表:id,姓名,所屬班級id
create table t_student(
    s_id int PRIMARY KEY,
    s_name varchar(20) not null,
    c_id int not null ,
    -- 表級約束
    FOREIGN KEY(c_id) REFERENCES t_class(c_id)
)

4、表的銷毀

語法:

drop table [if exists] 表名

注意事項:

在3.3外鍵約束具體使用中對于有外鍵的表,要先刪除有外鍵的表,再刪除沒有外鍵的表

drop table t_student – 先刪學生表

drop table t_class – 才能刪班級表

到此這篇關(guān)于一文掌握MySQL表的創(chuàng)建和約束的文章就介紹到這了,更多相關(guān)MySQL表 創(chuàng)建 約束內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql屬于關(guān)系型數(shù)據(jù)庫嗎

    mysql屬于關(guān)系型數(shù)據(jù)庫嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于mysql是否屬于關(guān)系型數(shù)據(jù)庫的相關(guān)文章,有興趣的朋友們可以參考下。
    2020-06-06
  • MySQL 字段默認值該如何設(shè)置

    MySQL 字段默認值該如何設(shè)置

    這篇文章主要介紹了MySQL 字段默認值該如何設(shè)置,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-02-02
  • mysql遠程跨庫聯(lián)合查詢的示例

    mysql遠程跨庫聯(lián)合查詢的示例

    本文主要介紹了mysql遠程跨庫聯(lián)合查詢的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 連接mysql的常用工具分享

    連接mysql的常用工具分享

    這篇文章主要介紹了連接mysql的常用工具,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Suse Linux 10中MySql安裝與配置步驟

    Suse Linux 10中MySql安裝與配置步驟

    這篇文章主要介紹了Suse Linux 10中MySql安裝與配置步驟,本文詳細的講解了安裝步驟,需要的朋友可以參考下
    2015-05-05
  • MySql視圖觸發(fā)器存儲過程詳解

    MySql視圖觸發(fā)器存儲過程詳解

    這篇文章主要介紹了MySql視圖觸發(fā)器存儲過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • mysql SKIP-NAME-RESOLVE 錯誤的使用時機造成用戶權(quán)限

    mysql SKIP-NAME-RESOLVE 錯誤的使用時機造成用戶權(quán)限

    新加的一臺服務(wù)器,連接內(nèi)網(wǎng)中的一臺mysql服務(wù)器的時候,經(jīng)常出現(xiàn)超時。
    2011-06-06
  • MySQL中LIKE?BINARY和LIKE模糊查詢實例代碼

    MySQL中LIKE?BINARY和LIKE模糊查詢實例代碼

    通常在實際應(yīng)用中,會涉及到模糊查詢的需求,下面這篇文章主要給大家介紹了關(guān)于MySQL中LIKE?BINARY和LIKE模糊查詢的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細步驟

    Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細步驟

    mysql在使用的過程中,難免遇到數(shù)據(jù)庫表誤操作,下面這篇文章主要給大家介紹了關(guān)于Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • InnoDB 類型MySql恢復(fù)表結(jié)構(gòu)與數(shù)據(jù)

    InnoDB 類型MySql恢復(fù)表結(jié)構(gòu)與數(shù)據(jù)

    MySQL中.frm文件:保存了每個表的元數(shù)據(jù),包括表結(jié)構(gòu)的定義等,該文件與數(shù)據(jù)庫引擎無關(guān)。MySQL中.ibd文件:InnoDB引擎開啟了獨立表空間(my.ini中配置innodb_file_per_table = 1)產(chǎn)生的存放該表的數(shù)據(jù)和索引的文件。
    2018-01-01

最新評論