Język SQL kurs


Kurs SQL

Wprowadzenie.

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:

Relacyjny system baz danych

Relacyjny system baz danych przechowuje wszystkie dane w tabelach. Każda tabela zawiera dane na konkretny temat, np. dane o klientach, pracownikach, towarach itp. System bazy danych zarządza tymi informacjami, pozwala m.in. na szybsze ich wyszukiwanie i zorganizowanie.

Za każdym razem, kiedy potrzebujesz informacji z bazy danych, musisz "zapytać" system bazy danych w zrozumiałym dla niego języku. Tym językiem jest SQL.

Co to jest MySQL?

MySQL jest najpopularniejszym darmowym systemem obsługi baz danych rozpowszechnianym na zasadach licencji GPL (General Public License). Jego nowatorska budowa pozwoliła na stworzenie niezwykle szybkiego i niezawodnego serwera obsługującego bazy danych.

Połączenie z bazą danych MySQL

Aby połączyć się z serwerem baz danych potrzebujesz specjalnego programu tzw. klienta lub języka skryptowego (umieszczanego na serwerach WWW), który posiada wbudowaną obsługę baz danych. Przykładem programu klienckiego może być opisywany wcześniej MySQL-Front lub oprogramowanie dostarczane łącznie z pakietem MySQL. Najczęstszym jednak sposobem korzystania z bazy danych jest połączenie wywoływane z wnętrza skryptu.

W sieci home.pl połączenie z bazą MySQL można uzyskać z poziomu skryptów PHP i Perl oraz kompilowanych CGI. W każdym przypadku w celu połączenia się z serwerem baz danych należy podać jego nazwę (adres domenowy lub adres IP), nazwę użytkownika oraz hasło. Funkcja języka PHP, nawiązująca połączenie z serwerem MySQL, wygląda następująco:

$db = mysql_connect ("adres", "użytkownik", "hasło");

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

mysql_select_db ("baza");

Po poprawnym połączeniu się z bazą danych możesz przystąpić do wydawania poleceń języka SQL. Funkcję PHP wysyłającą zapytanie SQL do serwera wywołuje się następująco:

mysql_query ("zapytanie_SQL");

Po zakończonej pracy z bazą danych należy użyć funkcji:

mysql_close ($db);

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:

0x01 graphic

Każda tabela powinna posiadać swoją nazwę. Definiujesz ją w miejscu nazwa_tabeli. W miejsce struktura_tabeli wstawiasz dokładną specyfikację poszczególnych pól, jakie powinna zawierać tabela. Polecenie SQL dla przykładu podanego wyżej będzie wyglądać następująco:

0x01 graphic

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

0x01 graphic

Po każdej nazwie pola następuje definicja typu danych, jakie będzie ono zawierało. Spis wszystkich możliwych do użycia w MySQL typów danych znajduje się w osobnym artykule.

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:

0x01 graphic

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

0x01 graphic

Typy danych w MySQL:

0x01 graphic

0x01 graphic

Wstawianie danych do 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:

0x01 graphic

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

0x01 graphic

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:

0x01 graphic

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.

Modyfikacja danych

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:

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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:

0x01 graphic

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:

0x01 graphic

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:

0x01 graphic

Spowoduje to wyświetlenie wszystkich rekordów, jednak w zestawieniu zostaną zaprezentowane jedynie wartości trzech pól: imie, nazwiskoplaca:

0x01 graphic

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

0x01 graphic

Zostaną wówczas wyświetlone wszystkie rekordy znajdujące się w tabeli:

0x01 graphic

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.

Klauzulę WHERE stosuje się najczęściej w poleceniu SELECT. Ma ona jednak zastosowanie także w innych poleceniach operujących na danych takich jak UPDATE, DELETE itp.

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:

0x01 graphic

Spowoduje wyświetlenie listy pracowników, których płaca jest większa lub równa 1000:

0x01 graphic

0x01 graphic

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

0x01 graphic

0x01 graphic

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

0x01 graphic

Dzięki zastosowaniu znaków globalnych (% i _) istnieje możliwość przyrównania do dowolnego ciągu znaków. Znak '%' (procent) zastępuje dowolną ilość znaków. Znak '_' (podkreślenie) zastępuje dokładnie jeden znak. Zapytanie:

0x01 graphic

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:

0x01 graphic

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:

0x01 graphic

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':

0x01 graphic

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:

0x01 graphic

ASC oznacza sortowanie rosnąco według podanego pola, DESC natomiast oznacza sortowanie malejące:

0x01 graphic

Używając klauzuli LIMIT spowodujesz wyświetlenie jedynie części rekordów. Aby pobrać dwa pierwsze rekordy napisz:

0x01 graphic

W wyniku otrzymasz:

0x01 graphic

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:

0x01 graphic

Spowoduje to wyświetlenie pięciu rekordów (o ile tyle istnieje w bazie) poczynając od rekordu trzeciego:

0x01 graphic

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:

0x01 graphic

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

0x01 graphic

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.

Usuwanie danych z tabeli.

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

0x01 graphic

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:

0x01 graphic

Modyfikacja struktury tabeli

Do modyfikacji struktury tabeli służy polecenie ALTER TABLE. Zmodyfikowanie struktury tabeli zawierającej już jakieś dane spowoduje próbę podporządkowania istniejących danych nowemu formatowi. Dzięki temu poleceniu można dodawać, modyfikować, usuwać pola oraz manipulować indeksami. Ogólna postać polecenia przedstawia się następująco:

0x01 graphic

W miejsce specyfikacja_struktury podajesz dokładną operację, jaką chcesz wykonać na danej tabeli. Aby dodać kolejne pole do istniejącej tabeli należy użyć polecenia:

0x01 graphic

Spowoduje to dodanie jednego pola o nazwie rozmiar_buta na końcu struktury tabeli.

Aby zmienić typ jednego konkretnego pola użyj polecenia:

0x01 graphic

Aby usunąć konkretne pole ze struktury tabeli należy użyć polecenia:

0x01 graphic

Zmiana nazwy tabeli przedstawia się następująco:

0x01 graphic

Usuwanie tabeli.

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

0x01 graphic

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

Indeksy.

Indeksy, w dużym uproszczeniu, powodują przyśpieszenie operacji wyszukiwania wykonywanych na bardzo dużych tabelach.

Jeśli Twoje tabele mają więcej niż 100 rekordów zastanów się nad założeniem odpowiednich indeksów. W indeksach system bazy danych zapisuje wewnętrzne przyporządkowania bloków danych do odpowiednich rekordów, dzięki czemu operacja wyszukiwania sprowadza się do przeszukania indeksu, a nie całej tabeli.

Indeks należy zakładać dla pól, według których najczęściej jest wykonywane wyszukiwanie.

Modyfikacja indeksów przebiega w podobny sposób do modyfikacji struktury tabeli. Dodanie indeksu na polu nazwisko będzie wyglądało następująco:

0x01 graphic

Spowoduje to utworzenie indeksu o nazwie nazwisko_idx opartego na kolumnie nazwisko

Usunięcie indeksu odbywa się za pomocą polecenia:

0x01 graphic

2



Wyszukiwarka

Podobne podstrony:
język SQL, Pomoce naukowe, studia, informatyka
jezyk SQL
2 Jezyk SQL
Język SQL
włoski-linki, Język włoski, kurs włoskiego(1)
Język SQL
język SQL, Pomoce naukowe, studia, informatyka
jezyk SQL
Język SQL(1)
Jezyk SQL Przyjazny podrecznik 2
Jezyk SQL Przyjazny podrecznik
Jezyk SQL Przyjazny podrecznik jsqlpp
kurs q klucz20, Język elficki

więcej podobnych podstron