• Increase font size
  • Default font size
  • Decrease font size

Zarządzanie tabelami w bazach danych

Dawid Wilk, Robert Wilk, Marcin Rotman

Baza danych to zbiór kartotek i informacji, które można przetwarzać za pomocą odpowiednich programów komputerowych. Multimedialne bazy danych zawierają pola różnorodnego typu: numeryczne, znakowe, tekstowe, a także wskaźnikowe odnoszące się do zapamiętanych w komputerze cyfrowych obrazów, animacji, dźwięków. W zależności od charakteru przedmiotu zainteresowania bazy danych tworzą wielokolumnowe tabele spełniające ścisłe wymogi. Bazę danych można nazwać bazą informacji, ponieważ obejmuje wszelkiego rodzaju zbiory informacji, które tworzone są za pomocą kartotek, segregatorów, teczek na dokumenty, itp. Bazy danych umożliwiają szybkie wyszukiwanie informacji według określonego kryterium nawet z bardzo dużego zbioru.

Zarządzanie bazą danych

Tabela bazy danych zwana również arkuszem danych podzielona jest na kolumny i wiersze. Pola tabeli określają rodzaj informacji zawartych w poszczególnych w poszczególnych kolumnach. Wiersze tabeli to rekordy, zawierają informacje o jednym elemencie tabeli bazy danych i są ponumerowane. Aby posortować (uporządkować) rekordy, należy wskazać pola, według których mają być posortowane, oraz ustalić porządek - rosnący lub malejący. Na rekordach można wykonywać różne operacje, np.: usuwanie lub wstawianie nowych rekordów.

Język SQL w bazach danych

Język SQL (Structured Query Language) służy do manipulowania danymi umieszczonymi w relacyjnych bazach danych. Jest językiem uniwersalnym, dzięki czemu praca na różnych systemach baz danych sprowadza się do wydawania tych samych lub podobnych komend tzw. zapytań SQL. Język SQL został zaimplementowany w większości relacyjnych systemów baz danych takich jak: DB2, Oracle, InterBase, MySQL, dBase, Paradox.
Składnię języka SQL można podzielić na trzy części:

  • język definiowania struktur danych - DDL (Data Definition Language) - jest wykorzystywany do wszelkiego rodzaju operacji na tabelach, takich jak: tworzenie, modyfikacja oraz usuwanie,
  • język do wybierania i manipulowania danymi - DML (Data Manipulation Language) - służy do manipulowania danymi umieszczonymi w tabelach, pozwala na wstawienie danych, ich prezentację, modyfikowanie oraz usuwanie,
  • język do zapewnienia bezpieczeństwa dostępu do danych - DCL (Data Control Language) - jest używany głównie przez administratorów systemu baz danych do nadawania odpowiednich uprawnień do korzystania z bazy danych.

Tworzenie tabel

Tabele zawierają pola, które określają jakie dane będzie zawierał pojedynczy rekord (inaczej: wiersz). Jeśli chcesz utworzyć tabelę przechowującą dane o pracownikach trafią do niej pola typu imię, nazwisko, data_urodzenia, płaca. Jeden z rekordów będzie wyglądał następująco: 'Jan', 'Kowalski', '2002-07-20', '1200.00'. Już na pierwszy rzut oka widać, że podane dane są różnego typu. imię i nazwisko to dane tekstowe, data_urodzenia to pole zawierające w sobie datę, płaca reprezentuje dane liczbowe.
Do utworzenia tabeli służy polecenie SQL CREATE TABLE:

CREATE TABLE nazwa_tabeli struktura_tabeli;
CREATE TABLE pracownicy (
   imie VARCHAR(30),
   nazwisko VARCHAR(30),
   data_urodzenia DATE,
    placa DECIMAL(10,2)
);


Powyższe polecenie utworzy tabelę pracownicy o następującej strukturze:

 | Field          | Type          | Null | Key | Default    | Extra |
 | imie           | varchar(30)   | YES  |     | NULL       |       |
 | nazwisko       | varchar(30)   | YES  |     | NULL       |       |
 | data_urodzenia | date          | YES  |     | 1950-01-01 |       |
 | placa          | decimal(10,2) | YES  |     | 1000.00    |       |


Istnieje możliwość określenia wartości standardowej, jakie przyjmie każde nowe pole w momencie, kiedy nie zostanie wypełnione innymi danymi. Wartości standardowe podaje się dla każdego pola po słowie kluczowym DEFAULT zaraz po definicji typu. Polecenie tworzące tę samą tabelę jednak z definicją wartości standardowych dla niektórych pól (data_urodzenia => '1950-01-01' i placa => '1000.00') będzie wyglądać następująco:

 CREATE TABLE pracownicy (
   imie VARCHAR(30),
   nazwisko VARCHAR(30),
   data_urodzenia DATE DEFAULT '1950-01-01',
   placa DECIMAL(10,2) DEFAULT '1000.00'
 );


Tabela pracownicy będzie wówczas wyglądać:

 | Field          | Type          | Null | Key | Default    | Extra |
 | imie           | varchar(30)   | YES  |     | NULL       |       |
| nazwisko       | varchar(30)   | YES  |     | NULL       |       |
 | data_urodzenia | date          | YES  |     | 1950-01-01 |       |
 | placa          | decimal(10,2) | YES  |     | 1000.00    |       |


Do usunięcia tabeli służy proste polecenie:

  DROP TABLE nazwa_tabeli;


Spowoduje to usunięcie tabeli wraz ze wszystkimi umieszczonymi w niej danymi.

Modyfikacja danych w tabeli

Po utworzeniu tabeli należy wypełnić ją danymi. Służy do tego polecenie INSERT. Polecenie SQL dla przykładu będzie wyglądać następująco:

 INSERT INTO pracownicy 
 VALUES ('Jan', 'Kowalski', '2002-07-20', '1200.00');


Powyższe polecenie wstawi pojedynczy rekord do tabeli pracownicy. Aby wstawić kolejne rekordy należy ponowić powyższe zapytanie używając nowych danych:

INSERT INTO pracownicy
VALUES ('Aleksander', 'Borowiecki', '1952-08-06',  '1500.34');
INSERT INTO pracownicy
VALUES ('Aniela', 'Michałkowska', '1970-05-23', '854.29');
INSERT INTO pracownicy
VALUES ('Katarzyna', 'Kowalska', '2002-07-02', '1200.00');


Polecenia INSERT można użyć także w innej formie. Za nazwą tabeli można wyspecyfikować listę pól, które będziesz wypełniać danymi. Pozostałe pola przyjmą puste lub standardowe wartości. Zapytanie z wyspecyfikowaną listą pól wygląda następująco:

 INSERT INTO pracownicy (imie, nazwisko) 
 VALUES ('Izabela', 'Kwiatkowska');


Powyższa składnia polecenia jest szczególnie przydatna gdy tabela posiada wiele kolumn, a nie chcesz w danym momencie podawać wszystkich danych dla pojedynczego rekordu lub satysfakcjonują Cię ustawione wcześniej wartości standardowe.

Poleceniem INSERT można wstawiać nowe dane do istniejącej tabeli. Do modyfikacji danych już wcześniej umieszczonych w tabeli służy polcenie UPDATE. Jego składnia jest następująca:

 UPDATE nazwa_tabeli 
 SET nazwa_pola='nowa_wartość';


Po słowie kluczowym SET podaj kolejno (po przecinku) nazwy kolumn wraz z nowymi wartościami, jakie powinny przyjąć. Po wydaniu poniższego polecenia:

 UPDATE pracownicy SET imie='Zofia';


wszystkie rekordy w polu imie będą miały wartość 'Zofia':

 | imie  | nazwisko     | data_urodzenia | placa   |
 | Zofia | Kowalski     | 2002-07-20     | 1200.00 |
 | Zofia | Kwiatkowska  | NULL           |    NULL |
 | Zofia | Borowiecki   | 1952-08-06     | 1500.34 |
 | Zofia | Michałkowska | 1970-05-23     |  854.29 |
 | Zofia | Kowalska     | 2002-07-02     | 1200.00 |


Nie jest to najczęściej pożądana sytuacja. Zazwyczaj chcesz zmienić dane dotyczące tylko jednego lub wybranych rekordów. Do określenia czego ma dotyczyć zmiana służy klauzula WHERE podawana na końcu polecenia UPDATE.
W celu zmiany imienia tylko dla Izabeli Kwiatkowskiej polecenie UPDATE będzie wyglądać następująco:

 UPDATE pracownicy SET imie='Zofia' 
 WHERE  nazwisko='Kwiatkowska';


Do usunięcia danych z tabeli służy polecenie DELETE. Aby usunąć wszystkie dane z tabeli należy wydać polecenie:

 DELETE FROM nazwa_tabeli;


Można użyć także opisywanego już wcześniej warunku wyboru, dzięki któremu wyspecyfikujesz dane przeznaczone do usunięcia. Aby usunąć z przykładowej tabeli pracownicy wszystkie rekordy, w których płaca jest wyższa od 1000 należy wydać następujące polecenie:

 DELETE FROM pracownicy WHERE placa > 1000;

Pobieranie danych z tabeli

Aby pobrać dane zapisane w tabeli należy użyć zapytania SELECT. Jego postać ogólna prezentuje się następująco:

 SELECT co_zaprezentować FROM nazwa_tabeli 
   |WHERE warunki_wyszukiwania!
   |ORDER BY sortowanie |ASC | DESC|, ...|
   |LIMIT |ofset,| ilość_wierszy|;


W miejscu co_zaprezentować podaj (po przecinku) listę kolumn, które chcesz zawrzeć w zestawieniu. W miejscu nazwa_tabeli podaj nazwę tabeli, z której pobierzesz dane. Wybierając trzy kolumny do zestawienia z tabeli pracownicy napiszesz następująco:
SELECT imie, nazwisko, placa FROM pracownicy;
Spowoduje to wyświetlenie wszystkich rekordów, jednak w zestawieniu zostaną zaprezentowane jedynie wartości trzech pól: imie, nazwisko i placa:

 | imie       | nazwisko     | placa   |
 | Jan        | Kowalski     | 1200.00 |
 | Izabela    | Kwiatkowska  |    NULL |
 | Aleksander | Borowiecki   | 1500.34 |
 | Aniela     | Michałkowska |  854.29 |
 | Katarzyna  | Kowalska     | 1200.00 |


Aby w zestawieniu umieścić wszystkie pola można użyć w miejscu co_zaprezentować znaku '*' (gwiazdki):

 SELECT * FROM pracownicy;


Dzięki klauzuli WHERE jesteś w stanie wpłynąć na zakres prezentowanych danych. Dzięki niej możesz dokładnie definiować co chcesz uzyskać swoim zapytaniem. Specyfikując dokładne warunki wyszukiwania można z tabeli zawierającej setki tysięcy rekordów wybrać tylko kilka interesujących w danym momencie informacji.
Stosując operatory przyrównania możesz dokładnie określić, jakie informacje chcesz pobrać. Dozwolone w MySQL operatory przyrównania to:
=    równe
>    większe
>=    większe równe
<    mniejsze
<=    mniejsze równe
<> lub !=    różne
LIKE    służy głównie do porównywania danych łańcuchowych

Przykłady zastosowania:

 SELECT * FROM pracownicy 
 WHERE placa >= 1000;
 SELECT imie, nazwisko, placa
 FROM pracownicy
 WHERE nazwisko = 'Kowalski';


Spowoduje wyświetlenie danych (tylko imię, nazwisko i placa) wszystkich pracowników, których nazwisko brzmi dokładnie Kowalski:

 SELECT * FROM pracownicy 
 WHERE nazwisko LIKE 'K%';


Spowoduje wyświetlenie wszystkich pracowników, których nazwisko rozpoczyna się na literę 'K':

 SELECT imie, nazwisko 
 FROM pracownicy
 WHERE nazwisko LIKE 'Kowalsk_';


spowoduje wyświetlenie wszystkich pracowników, których nazwisko zaczyna się ciągiem znaków 'Kowalsk' i zaraz po nim występuje jeden dowolny znak:
Warunki wyboru podawane za WHERE można łączyć ze sobą stosując operatory AND oraz OR. Dzięki temu istnieje możliwość zbudowania zapytania bardziej złożonego, a co za tym idzie bardziej dokładnego. W momencie zastosowania operatora AND wszystkie połączone tak warunki muszą zostać spełnione, aby w wyniku pojawił się dany rekord. Jeśli zastosujesz do połączenia warunków operator OR - wówczas może zostać spełniony tylko jeden z warunków wchodzących w skład zapytania. Wydając zapytanie:

  SELECT * FROM pracownicy 
  WHERE (placa > 500 AND placa < 1000)
  OR nazwisko = 'Kowalski';


spowodujesz wyświetlenie w wyniku wszystkich pracowników, których płaca mieści się w zakresie 500-1000 oraz pracowników o nazwisku 'Kowalski':
Dane w tabeli mogą być przechowywane w dowolnej kolejności. Możesz jednak spowodować ich pobranie w ściśle określonym porządku. Kolumny, według których MySQL ma posortować dane podaje się po klauzuli ORDER BY oddzielone przecinkami. Chcąc więc uszeregować listę pracowników rosnąco według nazwiska i malejąco według płacy wpiszesz następujące polecenie:

SELECT * FROM pracownicy 
ORDER BY nazwisko ASC, placa DESC;


ASC oznacza sortowanie rosnąco według podanego pola, DESC natomiast oznacza sortowanie malejące
Używając klauzuli LIMIT spowodujesz wyświetlenie jedynie części rekordów. Aby pobrać dwa pierwsze rekordy napisz:

SELECT * FROM pracownicy LIMIT 2;


Wypełniając pole ofset wyświetlisz podaną ilość rekordów od pewnego miejsca w tabeli. Chcąc pobrać rekordy od 3 do 7 napisz następująco:

SELECT * FROM pracownicy LIMIT 2, 5;


Spowoduje to wyświetlenie pięciu rekordów (o ile tyle istnieje w bazie) poczynając od rekordu trzeciego
MySQL pozwala na połączenie ze sobą wielu opcji, dzięki którym można bardzo dokładnie zawęzić poszukiwaną ilość informacji. Przykład bardziej złożonego zapytania można przedstawić następująco:

 SELECT imie, nazwisko, placa FROM pracownicy
   WHERE placa >= 500 AND placa < 1200
   ORDER BY nazwisko
   LIMIT 5;


Powyższe zapytanie spowoduje wygenerowanie następującego zestawienia:

 | imie   | nazwisko     | placa  |
 | Aniela | Michałkowska | 854.29 |



Jak widać połączono w tym momencie warunek wyboru według płacy pomiędzy 500 a 1200 z sortowaniem danych według nazwiska i ograniczeniem wyniku tylko do pięciu pierwszych rekordów.

Podsumowanie


W powyższej pracy w sposób podstawowy zostało opisane tworzenie i zarządzanie bazami danych.  Dokument ten jest prostą i szybką pomocą dla osób nie posiadających zbyt dużej wiedzy nt. baz danych.
W poszczególnych punktach przedstawiono krok po kroku tworzenie, a następnie proste zarządzanie tabelami w języku SQL. Powyższe przykłady mogą służyć za wzór i zostać wykorzystane przy tworzeniu prostych baz danych dla własnego użytku.

Literatura


Marcin Szeliga, Wydawnictwo Helion, ABC języka SQL
Paul Wilton, John Colby, Wydawnictwo Helion, SQL od podstaw
www.home.pl/support/manual

 

Naszą witrynę przegląda teraz 6 gości