中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL表的創建和約束實例分析

發布時間:2022-07-27 10:05:12 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“MySQL表的創建和約束實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL表的創建和約束實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、數據庫的建立和銷毀

建立數據庫:

create database [if not exists] 數據庫名 [default charset 字符集]

tips: 中括號[]里面的內容可以省略不寫

加上if not exists的含義是:如果不存在此數據庫就會創建

default charset 字符集是創建數據庫的時候設置字符集

銷毀數據庫:

drop database [if exists] 數據庫名

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

二、表的建立和銷毀

1、表的建立

語法:

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

1.1、命名規則

表名通常以t_開頭

關鍵字段通常以表名縮寫_開頭

MySQL不區分大小寫,不能使用關鍵字命名,多個部分之間用下劃線連接

1.2、數據類型

需要掌握的數據類型:

1.整數:int、integer、bigint

2.小數:decimal

3.字符串:varchar

4.枚舉:enum

5.日期:datatime

使用建議:

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

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

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

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

2、表約束概念

2.1、約束預覽

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

2.2、特點及作用

主鍵

作用:可以作為唯一標識具體鎖定某行數據

特點:非空且唯一

一張表至多有一個主鍵列

非空

特點:值不能為null,必須設定

唯一

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

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

默認

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

語法: 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,-- 非空 無符號數  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數點占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,-- 非空 無符號數  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數點占1位:000.0
        birthday datetime,
        -- 表級約束
        primary key(p_id),-- 給p_id添加主鍵約束
        constraint un_name unique(p_name)-- 給p_name添加唯一約束
)

3.3、外鍵約束

作用:用來表示兩張表之間的聯系,必須結合另一張表使用

特點:

  • 連接的必須是另一張表的主鍵或者唯一列

  • 外鍵列的值不可自定義,必須來自另一張表與之關聯的列中已經存在的值

  • 值可以為null,不唯一

  • 必須用表級約束創建

語法:

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

使用:

  • 建表順序:先建沒有外鍵的表,再建有外鍵的表

  • 刪表順序:先刪有外鍵的,再刪沒外鍵的

  • 外鍵列的數據類型必須與所連接的列一致

使用示例:

-- 班級表: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 – 才能刪班級表

讀到這里,這篇“MySQL表的創建和約束實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延津县| 岳西县| 南乐县| 榆树市| 全州县| 报价| 木兰县| 纳雍县| 唐海县| 大渡口区| 浪卡子县| 麟游县| 白水县| 临沭县| 炎陵县| 丹东市| 江口县| 新安县| 乐都县| 邵武市| 井陉县| 广德县| 哈密市| 南昌县| 大理市| 包头市| 灵山县| 连州市| 阳东县| 百色市| 丰都县| 吉木乃县| 鄱阳县| 盈江县| 宜川县| 丹东市| 满城县| 呼伦贝尔市| 安丘市| 新营市| 静宁县|