mysql種約束和資料表操作

2022-09-01 05:39:09 字數 1423 閱讀 6621

約束

約束保證資料的完整性和一致性

約束分為表級約束和列級約束  

對某乙個字段約束成為列級約束  

針對兩個或兩個以上字段約束成為表級約束

約束型別包括:

not null  非空約束

primary key 主鍵約束

unique key  唯一約束

default   預設約束

foreign key 外來鍵約束

foreign key 外來鍵約束 

保持資料一致性,完整性。實現一對一或者一對多關係,這也是很多資料庫稱之為關係型資料庫根本原因

外來鍵約束的要求:

父表和子表必須使用相同的儲存引擎,而且禁止使用臨時表。

父表:子表所參照的表

子表:具有外來鍵列的表

資料表的儲存引擎只能為innodb。

外來鍵列和參照列必須具有相似的資料型別。其中數字的長度或是否有符號位必須相同,而字元的長度則可以不同。

參照列:外來鍵列所參照的那一列

外來鍵列和參照列必須建立過索引,如果外來鍵列不存在索引的話,mysql將自動建立索引。參照列沒有索引,mysql不會自動建立索引。

編輯資料表的預設儲存引擎,如果儲存引擎不是innodb怎麼修改

mysql配置檔案

mysql配置檔案檔名  my.int 找到default-storage-engine,改為innodb即可

default-storage-engine=innodb,之後重新啟動

外來鍵約束的參照操作

1、cascade:從父表中刪除或更新且刪除自動刪除或更新子表中匹配的行

2、set null:從父表中刪除或者更新行,並設定子表中的外來鍵列為null。如果使用該選項,必須保證子表列沒有指定not null

3、restrict:拒絕對父表的刪除或更新操作

4、no action:標準sql的關鍵字,在mysql中和restrict相同

表級約束與列級約束

對某乙個字段約束成為列級約束    

針對兩個或兩個以上字段約束成為表級約束 

列級約束即可在列定義時宣告,也可以在列定義後宣告

但是表級約束,只能在列定以後宣告

在實際開發中,用列級約束比較多,表級約束很少用,除此之外,在所有的約束中,並不是說每種約束都存在著表級或列級約束,其中,not null 非空約束,default約束這兩種約束就不存在表級約束,它們只有列級約束,而對於其他的三種,像主鍵,唯一,外來鍵,它們都可以存在表級和列級約束。在有些資料中有check檢測約束,但是並不起作用。

修改資料表:列的新增,列的刪除,約束的新增,約束的刪除等

新增單列:通過alter table實現

alter table tbl_name add [column] col_name 

column_definition [frist | after col_name]

MySQL約束 資料表操作

作用 保證資料的完整性 一致性。分類 表級約束 對多個資料列的約束列級約束 對乙個資料列的約束 區別 表級約束只能在列定義時宣告 列級約束可以在定義後宣告 具體 not null非空約束primary key主鍵約束 保證唯一性,自動為非空,只有乙個unique key唯一約束 保證唯一性,可以為空...

MySQL資料庫和資料表操作

顯示資料庫 show databases 顯示資料表 show tables 選擇資料庫 use database name 顯示表結構 desc table name create database database name drop database database name create ...

MySQL資料表操作

建立資料表 create table 資料表名示例 create temporary table if not exists 資料表名 col name type 完整性約束條件 col name type 完整性約束條件 table options select statement 建立使用者表 ...