theMASK
v.20210228, php: 7.1.33, strona: 41

theMASK

Ulubione

SQL - tabela, perspektywa (widok)

Perspektywa , to wirtualna reprezentacja istniejącej tabeli przechowującej fizyczne dane. Zastosowanie perspektywy umożliwia zapisanie skomplikowanego kodu zapytania SELECT do formy, która będzie dostępna na takich samych zasadach jak fizyczna tabela. 


CREATE TABLE tabela (pola parametry) ENGINE=InnoDB DEFAULT CHARSET=utf8

ALTER TABLE tabela ADD PRIMARY KEY (pole_id);

ALTER TABLE tabela  MODIFY pole_id int(6) NOT NULL AUTO_INCREMENT;


CREATE VIEW widok AS 
SELECT pole1, pole2 FROM tabela WHERE warunki;

Znaczenie:

  • pola: nazwy pól tabeli z typem oraz innymi parametrami (rozdzielnik: przecinek):

    • wybrane typy danych:
      • typ: INT (3) - pole integer o długości 3 cyfr
      • typ: VARCHAR (25) - pole tekstowe o długości 25 znaków
      • typ: TEXT- pole tekstowe o długości 65,535 B (~65kB)
      • typ: MEDIUMTEXT - pole tekstowe o długości 16,777,215 B (~16MB)
      • typ: LONGTEXT - pole tekstowe o długości 4,294,967,295 B (~4GB)
      • typ: DATE (pole daty: 2019-04-30)
      • typ: DATETIME (pole daty i czasu: 2020-03-21 06:12:23)
      • itd.
    • parametry pól:
      • NULL/NOT NULL - zawartość pola (NULL - może być puste)
      • CARACTER SET COLLATE utf8_polish_ci - strona kodowa ciągu znaków (tu: UTF8-polish)
  • engine: rodzaj zastosowanej bazy InnoDB, MyIsam itp.

  • pole_id: pole typu integer, pełniące rolę klucza głównego tabeli

  • auto_increment: ustawienie właściwości dla klucza głównego powodujące automatyczne zwiększanie licznika (wartości integer pola)

Przykłady:

CREATE TABLE `test11` (
  `id` int(6) NOT NULL,
  `date` date NOT NULL,
  `wartosc` int(5) NOT NULL,
  `zmienna` float(5,2) NOT NULL,
  `tekst` varchar(200) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `tekst_long` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `test11` ADD PRIMARY KEY (`id`);

ALTER TABLE `test11` MODIFY `id` int(6) NOT NULL AUTO_INCREMENT;


CREATE VIEW view_klienci AS
SELECT nazwa,kod_pocztowy,telefon FROM klienci WHERE sekcja = 'podmioty';

COMMIT;

W praktyce:

Tabela 1 (słownik_miast)

  • id_masto int(3) NOT NULL Primary key AUTO_INCREMENT
  • nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NUL
id_miasto nazwa
1 Warszawa
2 Kraków

Tabela 2 (słownik_kodow)

  • id_kodp int(3) NOT NULL Primary key AUTO_INCREMENT
  • nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NUL
id_kodp nazwa
1 00-001
2 12-234

Tabela 3 (słownik_ulic)

  • id_ulica int(3) NOT NULL Primary key AUTO_INCREMENT
  • nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NUL
id_ulica nazwa
1 Krokusów
2 Piłsudskiego

Tabela 4 (klienci):

  • id_klient int(6) NOT NULL Primary key AUTO_INCREMENT
  • nazwa varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NUL
  • nip varchar(13)
  • id_kodp int(3)
  • id_miasto int(3)
  • id_ulica int(3)
  • adres varchar(10)
id_klient nazwa nip id_kodp id_miasto id_ulica adres
345 Kowalski s.c. 123-222-33-56 2 2 1 123
3489 PHU Bek 222-22-22-333 2 2 2 12/4
9876 Spoko SA 777-77-77-888 1 1 1 1
Widok (pełne informacje o klientach):
  • CREATE VIEW v_klienci AS (SELECT k.id_klient, k.nazwa, k.nip, sm.nazwa as 'miasto', sk.nazwa as 'kod_pocztowy, su.nazwa as 'ulica', k.adres,  FROM klienci k, slownik_kodow sk, slownik_miast sm, slownik_ulic su WHERE k.id_miasto = sm.id_miasto AND k.id_kodp = sm.id_kodp AND k.id_ulica = su.id_i=ulica ORDER BY 4, 6, 2)
  • Tak utworzony widok powoduje, że informacje w nim zawarte będą aktualizować się automatycznie w przypadku edycji tabel źródłowych oraz zapobiegnie każdorazowemu budowaniu skomplikowanych zapytań SELECT.
id_klient nazwa nip miasto kod_pocztowy ulica adres
345 Kowalski s.c. 123-222-33-56 Kraków 12-234 Krokusów 123
3489 PHU Bek 222-22-22-333 Kraków 12-234 Piłsudskiego 12/4
9876 Spoko SA 777-77-77-888 Warszawa 00-001 Krokusów 1
Komentarze:
autor: Lesław, sekcja: IT, kategoria: SQL, publikacja: 1998-01-01 - 2099-12-31

×

Zaplecze: administratora

×

×

Szukaj

×

×Avatar



informacje

×