skanuj0315 (2)

skanuj0315 (2)



330 PHP i MySQL dla każdego

CREATE TABLE Autorzy(

Id INTEGER PRIMARY KEY. Imię VARCHAR(45). Nazwisko VARCHAR(45)

Ograniczenie ze względu na klucz obcy możemy dodać wykonując instrukcję:

ALTER TABLE Książki ADD CONSTRAINT autorzy książki FOREIGN KEY (Autorld) REFERENCES Autorzy!Id)

Taką instrukcję bez problemów można wykonać na pustej tabeli Ksi azki. Jeśli jednak tabela ta będzie zawierała dane niespełniające zależności związanych z kluczem obcym, serwer zgłosi błąd: Cannot add or update a chi Id row: a foreign key constraint fails, tak jak zostało to zaprezentowane na rysunku 11.22.

mysql> ALTER TABLE Książki

-> ADD CONSTRAINT autorzy_ksiazki

-> FOREIGN KEY (autorID) REFERENCES Autorzy(Id);

ERROR 1216 (23000): Cannot ada or update a child row: a foreign key constraint f

ails

mysql>

Rysunek 11.22. Próba dodania klucza obcego do tabeli, w bazie zawierającej niespójne dane

Ograniczenie związane z kluczem obcym może być w każdej chwili usunięte przy wykorzystaniu instrukcji ALTER TABLE w schematycznej postaci:

ALTER TABLE nazwajabeli DROP FOREIGN KEY nazwa_ograniczenia\

Jeśli zatem chcemy usunąć dodane wcześniej ograniczenie autorzy_ksiazki z tabeli Książki, powinniśmy zastosować instrukcję:

ALTER TABLE Książki DROP FOREIGN KEY autorzy_ksiazki:

Podzapytania

Podzapytania to mechanizm, który pozwala na wykorzystanie wyników jednego zapytania w innym zapytaniu. Nazywane są one również zapytaniami zagnieżdżonymi. Pełna obsługa podzapytań została wprowadzona do MySQL w wersji 4.1. Mogą być one wykorzystywane w zapytaniach typu SELECT, INSERT, UPDATE i DELETE, gdzie najczęściej są wprowadzane do klauzuli WHERE. Możemy wyróżnić dwa główne typy podzapytań:

♦    proste (ang. simple)

♦    skorelowane (ang. correlated)

Podzapytania proste

Podzapytanie proste to takie podzapytanie, które jest wykonywane raz, a jego wynik jest następnie wykorzystywany w zapytaniu głównym. Załóżmy, że mamy w bazie trzy tabele: Klienci, Towary i Zamówienia, wypełnione danymi takimi, jak w przedstawione


Wyszukiwarka

Podobne podstrony:
39212 skanuj0333 (3) 348 PHP i MySQL dla każdegc CREATE TABLE Klienci! Id INTEGER AUTO INCREMENT P
45470 skanuj0471 PHP i MySQL dla każdego CREATE TABLE SubskrypcjeUzytkownlcyl Userld INTEGER NOT NUL
CREATE TABLE Wydawnictwo ( ID INT PRIMARY KEY, Nazwa VARCHAR(45), Adres VARCHAR<45)I); Następnym
CREATE TABLE Ksiazka ( ID INT PRIMARY KEY, Tytuł VARCHAR(45), LiczbaStr tinyint, W_ID INT, CONSTRAIN
24346 skanuj0451 468 PHP i MySQL dla każdego if(modifyMessage($ P0ST[ id ]. $ POSTE header ]. $_POST
19684 skanuj0380 (2) 398 PHP i MySQL dla każdego Tabela ta zostanie utworzona za pomocą instrukcji S
32987 skanuj0337 (2) 352 PHP i MySQL dla każdegooraz dwa klucze obce: ALTER TABLE KsiazkiZamowienia
81324 skanuj0509 530 PHP i MySQL dla każdego <table width="100S" height="100S!&quo

więcej podobnych podstron