Mysql

關於設置約束的基本 SQL 問題

  • July 21, 2015

constraint pk_dept primary key (deptno)在像下面這樣的程式碼中,如果只是簡單的工作,還需要寫primary key (deptno)什麼?是pk_dept數據庫內部使用的東西,因為它似乎不是表的可見部分嗎?

create table dept
   (deptno decimal(2,0),
   dname  varchar(14),
   loc varchar(13),
   constraint pk_dept primary key (deptno));

主鍵是存在於數據庫元數據中的對象。不管它是如何創建的,它都會有一個名字。問題是它是否具有與您的編碼標準相匹配並且您的團隊一眼就能理解的有意義的名稱,或者它是否具有系統生成的無意義名稱並且每個人都必須不斷地查找?

RDBMS 不關心什麼字元串構成對象的名稱。這是一台電腦;所有字元串都同樣有意義/更少。

將這一點誇大到極端,您可以將所有表稱為T1, T2,T3等和列C1, C2, C3。應用程序可以工作,DBMS 不會在意,但是男孩很難維護!

您可能會遇到複製未命名對象的問題。源系統和目標系統在內部通過不同的名稱知道對象,複製在嘗試將源映射到目標時會感到困惑。

引用自:https://dba.stackexchange.com/questions/107579