1. 程式人生 > 其它 >mysql06 資料表的基本操作

mysql06 資料表的基本操作

1、建立資料表

  • 在資料庫中,資料表是資料庫中最重要、最基本的操作物件,是資料儲存的基本單位
  • 資料表被定義為列的集合,資料在表中是按照行和列的格式來儲存的。
  • 每一行代表一條唯一的記錄,每一列代表記錄中的一個

1、建立表的語法形式

  • 資料表屬於資料庫,在建立資料表之前,應該使用語句“USE <資料庫名>”指定操作是在哪個資料庫,如果沒有選擇資料庫,會丟擲"No database selected"的錯誤。
  • 基本語法格式如下
CREATE TABLE <表名> (
    欄位名1, 資料型別 [列級別約束條件] [預設值],
    欄位名2, 資料型別 [列級別約束條件] [預設值],
    ……
    [表級別約束條件]
);
  • 使用CREATE TABLE建立表時,必須指定以下資訊:
    • 要建立的表的名稱,不區分大小寫,不能使用SQL語言中的關鍵字,如DROPALTER, INSERT等。
    • 資料表中每一個列(欄位)的名稱和資料型別,如果建立多個列,要用逗號隔開。

示例:

mysql> create database db1;                           #建立資料庫
mysql> use db1;                                       #選擇使用資料庫
mysql> create table tb11 (nid int, name char(10));    #建立資料表
mysql> show tables;                                   #檢視資料表
+---------------+
| Tables_in_db1 |
+---------------+
| tb11          |
+---------------+

2、主鍵約束

  • 主鍵,又稱主碼,是表中一列或多列的組合
  • 主鍵約束(Primary Key Constraint)要求主鍵列的資料唯一,並且不為空
  • 主鍵能夠唯一地標識表中的一條記錄,可以結合外來鍵來定義不同資料表之間的關係,並且可以加快資料庫查詢的速度。
  • 主鍵和記錄之間的關係如同身份證和人之間的關係,是一一對應的。
  • 主鍵分為兩種型別:單欄位主鍵和多欄位聯合主鍵。

1、單欄位主鍵

  • 在定義列的同時指定主鍵,基本語法格式如下
欄位名 資料型別 PRIMARY KEY [預設值]    #使用列級約束
  • 在定義完所有列之後指定主鍵,基本語法格式如下
[CONSTRAINT <約束名>] PRIMARY KEY [欄位名]    #使用表級約束

示例1:列級約束

create table tb_test1(
    nid int(11) primary key,
    name char(20)
);

示例2:表級約束

create table tb_test100(
    nid int(11),
    name char(20),
	primary key(nid)    #欄位要使用小括號
);

2、多欄位聯合主鍵

  • 主鍵由多個欄位聯合組成。
  • 在定義完所有列之後指定聯合主鍵,基本語法格式如下
PRIMARY KEY [欄位1, 欄位2, ... ,欄位n]    #使用表級約束

示例:

create table tb_test3(
    nid int(11),
    name char(20),
	primary key(nid, name)
);

3、外來鍵約束

  • 外來鍵用來在兩個表的資料之間建立連結,它可以是一列或者多列。
  • 一個表可以有一個或多個外來鍵。
  • 外來鍵對應的是參照完整性,一個表的外來鍵可以為空值,若不為空值,則每一個外來鍵值必須等於另一個表中主鍵的某個值。
  • 外來鍵:首先它是表中的一個欄位,它可以不是本表的主鍵,但對應另外一個表的主鍵。外來鍵主要作用是保證資料引用的完整性,定義外來鍵後,不允許刪除在另一個表(主表)中具有關聯關係的行。外來鍵的作用是保持資料的一致性、完整性。
  • 主表(父表):對於兩個具有關聯關係的表而言,相關聯欄位中主鍵所在的那個表即是主表。(被引用的表)
  • 從表(子表):對於兩個具有關聯關係的表而言,相關聯欄位中外來鍵所在的那個表即是從表。
  • 基本語法格式如下
[CONSTRAINT <外健名>] PORETGN KEY 欄位名1 [,欄位名2 ...] REFERENCES <主表名> 主健列1, [主健列2,...]
    • “外來鍵名”為定義的外來鍵約束的名稱,一個表中不能有相同名稱的外來鍵。
    • “欄位名”表示子表需要新增外來鍵約束的欄位列。
    • “主表名”即被子表外來鍵所依賴的表的名稱。
    • “主鍵列”表示主表中定義的主鍵列,或者列組合。
#                                                                                                                    #