MySQL約束 資料表操作

2021-12-30 09:27:27 字數 3506 閱讀 4239

作用:保證資料的完整性、一致性。

分類:

表級約束:對多個資料列的約束列級約束:對乙個資料列的約束 區別:表級約束只能在列定義時宣告;列級約束可以在定義後宣告

具體

not null非空約束primary key主鍵約束:保證唯一性,自動為非空,只有乙個unique key唯一約束:保證唯一性,可以為空,可以多個default預設約束:沒有賦值時,自動賦預設值,可以多個foreign key外來鍵約束:實現1對n的關係(n為自然數)新增

alter table tb_name add [ constraint [symbol ] ]

primary key [ index_type ] ( index_col_name,... );eg.:

alter table user add constraint id

primary key (id);刪除

alter table tb_name drop primary key;eg.:

alter table user drop primary key;新增

alter table tb_name add [ constraint [symbol ] ]

unique [ index | key ] [ index_name ] [ index_type ]

( index_col_name,... );eg.:

alter table user add unique (username);刪除

alter table tb_name drop index_nameeg.:

alter table user drop index username;新增、刪除

alter table tb_name alter [column] col_name

;eg.:

alter table user alter age set default 15;(子表有外來鍵列的表,父表有參照列的)

父子表,使用相同的儲存引擎,非臨時表 資料表的儲存引擎為innodb 外來鍵列和參照列有相似的資料型別(數字長度、有無符號必須相同) 外來鍵列和參照列有索引(外來鍵列缺省自動建立)

修改儲存引擎(編輯配置檔案my.ini)

default-storge-engine = innodb

外來鍵約束的參照操作

cascde:當父表(刪除|更新),則自動(刪除|更新)子表對應的行set null:當父表(刪除|更新),則設定表中的外來鍵列為nullrestrict:拒絕對父表(刪除|更新)no action:同restrict

新增alter table tb_name add [ constraint [symbol ] ]

foreign key [ index_name ] ( index_col_name,... )

reference_definition;eg.:

alter table user add foreign key (pid) references test (id);刪除

alter table tb_name drop foreign key fk_symbol;eg.:

alter table user drop foreign key pid;(最後乙個不+,)

create table [if not exists] table_name(

column_name datatype [unsigned] [auto_increment] [primary key]

[ null | not null],

...);uto_increment 自動編號:必須和主鍵一起用,起始為1,每次+1

eg.:test表pid,參照user表中的id

create table test (

id smallint unsigned auto_increment primary key,

username varchar(20) not null unique key,

age tinyint unsigned null,

*** enum('w','m',n) default 'n',

pid bigint,

foreign key (pid) references user (id) on delete cascade

);alter table tb_name rename [to | as ] new_tb_name;

rename table tb_name to new_tb_name

[,tb_name2 to new_tb_name2]...;新增單列

alter table tb_name add [column] col_name

column_definition [ first | after col_name ] ;eg.:

alter table test add column password

varchar(20) not null after;新增多列

alter table tb_name add [column]

( col_name column_definition ,...);eg.:

alter table user add column

( age smallint ,

address varchar(32)

);刪除列

alter table tb_name drop [column] col_name;eg.:

alter table user drop column password;修改列定義

alter table tb_name modify [column] col_name

column_definition [first | after col_name]修改列名稱

alter table tb_name change [column] old_col_name

new_col_name column_definition [first | after col_name]檢視資料表

show tables [from db_name ]

[ like 'pattern' | where expr ]eg.:

show tables from test;檢視資料表結構

show columns from tb_name;eg.:

show columns from test;

mysql種約束和資料表操作

約束 約束保證資料的完整性和一致性 約束分為表級約束和列級約束 對某乙個字段約束成為列級約束 針對兩個或兩個以上字段約束成為表級約束 約束型別包括 not null 非空約束 primary key 主鍵約束 unique key 唯一約束 default 預設約束 foreign key 外來鍵約...

MySQL資料表操作

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

MySQL 資料表操作

重新命名表 複製表刪除表 格式 create tempoprary table if not exists 表名 create definition,table options select statement 引數說明 關鍵字說明 create definition 表的列屬性。要求建立表時,至少...