mysql 主鍵約束起名 MySQL名稱的主鍵約束

2021-10-22 02:44:37 字數 1711 閱讀 5248

資料定義語句:

create table persons

p_id int not null,

lastname varchar(255) not null,

firstname varchar(255),

address varchar(255),

city varchar(255),

constraint pk_personid primary key (p_id)

的價值和目的是什麼

約束pk_personid主鍵(p_id)?

與此相對

主鍵(p_id)?

mysql的文件除了this之外並沒有說太多.

解決方法:

就像mysql忽略constraint pk_personid部分一樣.您可以通過建立表然後將其轉儲或發出show create table persons進行檢查.

我猜想它支援此語法僅是為了與其他sql server相容(但是對於主鍵和其他本地鍵則忽略它),並且不儲存其資訊(約束名稱).

但是,對於與外來鍵一起使用,在mysql中也使用constraint關鍵字.

mysql> create table test.persons (

-> p_id int not null,

-> lastname varchar(255) not null,

-> firstname varchar(255),

-> address varchar(255),

-> city varchar(255),

-> constraint pk_personid primary key (p_id)

query ok, 0 rows affected (0.50 sec)

server$mysqldump -p test persons

enter password:

-- table structure for table `persons`

drop table if exists `persons`;

create table `persons` (

`p_id` int(11) not null,

`lastname` varchar(255) not null,

`firstname` varchar(255) default null,

`address` varchar(255) default null,

`city` varchar(255) default null,

primary key (`p_id`)

) engine=innodb default charset=latin1;

這也是測試以證明mysql不會在任何地方儲存約束名稱,並且在列印錯誤時不使用約束名稱(如在問題what is the purpose of constraint naming中針對其他sql伺服器所提到的那樣:

mysql> insert into persons (p_id) values(1);

query ok, 1 row affected, 1 warning (0.00 sec)

mysql> insert into persons (p_id) values(1);

error 1062 (23000): duplicate entry '1' for key 'primary'

標籤:sql,mysql,constraints,primary-key

MySQL 主鍵約束

主鍵,又稱住碼,是表中一列或多列的組合。主鍵要求主鍵列的資料唯一,並且不允許為空,主鍵能夠唯一地表識表中的一條記錄,可以結合外來鍵定義不同資料表之間的關係,並且可以加快資料庫查詢的速度。主鍵和 記錄一一對應的。主鍵分為兩種型別 單字段主鍵和多字段聯合主鍵。一.單字段主鍵 單字段主鍵有乙個字斷組成,字...

MySQL之主鍵約束

mysql支援的完整性約束 約束條件 描述 primary key 主鍵約束 unique 唯一約束 not null 非空約束 default 預設約束 auto increment 自動增長約束 foreign key 外來鍵約束主鍵約束 特點 唯一且為空 主鍵可以由乙個字段組成,也可以由多個字...

mysql約束,主鍵,外來鍵

資料庫表約束 對錶中的資料進行限制,保證資料的正確性 有效性和完整性,乙個表如果新增了約束,不正確的資料將無法插入到表中。約束在建立表的時候新增比較合適。約束名約束關鍵字 主鍵primary key 唯一unique 非空not null 外來鍵foreign key 檢查約束 check 注 my...