SQL SERVER – 2008 – vytvoření primárního klíče, cizího klíče a výchozího omezení
primární klíč, cizí klíč a výchozí omezení jsou 3 hlavní omezení, která je třeba vzít v úvahu při vytváření tabulek nebo dokonce po tom. Zdá se, že je velmi snadné použít tato omezení, ale při jejich implementaci stále máme nějaké zmatky a problémy. Snažil jsem se tedy psát o těchto omezeních, která mohou být vytvořena nebo přidána na různých úrovních a různými způsoby nebo metodami.
omezení primárního klíče: omezení primárních klíčů zabraňuje duplicitním hodnotám sloupců a poskytuje každému sloupci jedinečný identifikátor a také vytváří seskupený index ve sloupcích.
1) Vytvořte příkaz tabulky pro vytvoření primárního klíče
a. úroveň sloupce
USE AdventureWorks2008GOCREATE TABLE Products(ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,ProductName VARCHAR(25));GO
b. Úroveň tabulky
CREATE TABLE Products(ProductID INT,ProductName VARCHAR(25)CONSTRAINT pk_products_pid PRIMARY KEY(ProductID));GO
2) Chcete-li vytvořit primární klíč, změňte příkaz tabulky
ALTER TABLE ProductsADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)GO
3) změnit příkaz k poklesu primárního klíče
ALTER TABLE ProductsDROP CONSTRAINT pk_products_pid;GO
omezení cizího klíče: Pokud je omezení cizího klíče přidáno do existujícího sloupce nebo sloupců v tabulce SQL Server, ve výchozím nastavení zkontroluje existující data ve sloupcích, aby se zajistilo, že všechny hodnoty kromě NULL existují ve sloupcích odkazovaného primárního klíče nebo jedinečného omezení.
1) Vytvořte příkaz tabulky pro vytvoření cizího klíče
a. úroveň sloupce
USE AdventureWorks2008GOCREATE TABLE ProductSales(SalesID INT CONSTRAINT pk_productSales_sid PRIMARY KEY,ProductID INT CONSTRAINT fk_productSales_pid FOREIGN KEY REFERENCES Products(ProductID),SalesPerson VARCHAR(25));GO
b. Úroveň tabulky
CREATE TABLE ProductSales(SalesID INT,ProductID INT,SalesPerson VARCHAR(25)CONSTRAINT pk_productSales_sid PRIMARY KEY(SalesID),CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID));GO
1) změnit příkaz tabulky pro vytvoření cizího klíče
ALTER TABLE ProductSalesADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)GO
2) Změnit prohlášení tabulky k poklesu cizího klíče
ALTER TABLE ProductSalesDROP CONSTRAINT fk_productSales_pid;GO
výchozí omezení: výchozí omezení při vytvoření v nějakém sloupci bude mít výchozí data, která jsou uvedena v omezení, když do tohoto sloupce nejsou vloženy žádné záznamy ani data.
1) Vytvořte příkaz tabulky pro vytvoření výchozího omezení
a. úroveň sloupce
USE AdventureWorks2008GOCREATE TABLE Customer(CustomerID INT CONSTRAINT pk_customer_cid PRIMARY KEY,CustomerName VARCHAR(30),CustomerAddress VARCHAR(50) CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN');GO
b. úroveň tabulky: neplatí pro výchozí omezení
2) Změňte příkaz tabulky a přidejte výchozí omezení
ALTER TABLE CustomerADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddressGO
3) změnit tabulku pro zrušení výchozího omezení
ALTER TABLE CustomerDROP CONSTRAINT df_customer_AddGO