Bazą danych nazywamy zbiór danych w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych.Tabelą w bazie danych nazywamy zbiór rekordów opisujących obiekty np. pracownicy zawierających informacje o tych obiektach w sposób ujednolicony.Rekord pojedynczy wiersz w tabeli.Polem nazywamy najmniejszą część rekordu, która przechowuje jedną daną.Relacyjną bazą danych nazywamy bazę danych w postaci tabel połączonych relacjami.Klucz podstawowy (ang. primary key) zwany też kluczem głównym to jedno lub więcej pól, których wartość jednoznacznie identyfikuje każdy rekord w tabeli. Taka cecha klucza nazywana jest unikatowością.Klucz obcy to atrybut lub zbiór atrybutów, wskazujący na klucz główny w innej relacji (tabeli). Klucz obcy to nic innego jak związek, relacja między dwoma tabelami.
Typ danej (ang. data type) - rodzaj danej, czyli forma zapisu informacji:
BOOLEAN – wartości logiczne (prawda/fałsz)DATE – datyDECIMAL – ogólny format liczbowyDOUBLE, FLOAT, REAL – liczby zmiennoprzecinke (o różnej precyzji)INTEGER, SMALLINT – liczby całkowiteVARCHAR – łańcuchy znaków o zmiennej długości
W czasie naszych zajęć będziemy korzystać z MSSMS.
Lekkie alternatywy (raczej do pracy w domu):
W domu silnik bazy danych:
Wpisz w Menu Start - SQL Server i uruchom Management studio.
Na pierwszych zajęciach połączymy się z bazą lokalną na własnym komputerze, czyli po wyświetleniu okna klikamy "Connect". Jeżeli nazwa bazy nie jest zdefiniowana to wpisujemy localhost. Zobaczymy bardzo wiele okien,
Wybieramy nową bazę danych:
Aby dodać zapytanie wybieramy New query:
Skopiuj ze strony Prof. Wisły skrypt z kodem tworzący bazę danych.
A następnie z trzeciego paska podręcznego wybieramy Execute.
Każde kolejne zapytania SQL będziemy tworzyć jako New Query i uruchamiać poprzez Execute.
Każde zapytanie SQL będzie zwracało jako rezultat tabelę – wirtualną (Virtual Table, VT). Każde zapytanie musi zawierać klauzulę SELECT.
Przykłady
select 2/2
select 'witaj świecie'
select 2+2
select 'Hello World !' as Kolumna1
select 'pierwsza' as Kol1, 'druga' as Kol2, 'trzecia'
Jeżeli chcemy wszystkie pobrać dane z tabeli musimy uzyć operatora '*' oraz słowa kluczowego FROM:
select * from Oddzialy
select * from Stanowiska
select * from Pracownicy
Symbol '*' zastępuje nazwy wszystkich kolumn z tabeli (lub tabel) do których odwołujemy się w klauzuli FROM.
Jeśli chcemy otrzymać zbiór elementów z tabeli źródłowej, opisany tylko poprzez kilka atrybutów (kolumn) – wymieniamy je w SELECT w postaci listy.
select nazwisko, stanowisko from Pracownicy
W SELECT możemy umieścić :
Nazwy kolumn wprost z nazw tabeli lub jako aliasy stosując słowo kluczowe AS, ale nie jest ono obowiązkowe. Jeśli nowa nazwa zawiera spacje, musi być ona ujęta w [] (nawiasy) lub „” (cudzysłów).
select nazwa as miasta from Oddzialy
select (nazwa) miasta from Oddzialy
Wyrażenia arytmetyczne, tekstowe
select Placa_min*2 as Podwojna_placa from Stanowiska
select Nazwisko + ' ' + Stanowisko as Nazwistanowisko from Pracownicy
Zbiór wynikowy, może zawierać wiele elementów, również duplikaty wierszy. Jeśli chcesz otrzymać unikalny zbiór bez duplikatów – możesz to zrobić za pomocą DISTINCT.
select DISTINCT Stanowisko from Pracownicy
Wartość null. Wykonując jakiekolwiek działania na wartościach nie znanych, należy spodziewać się również, że i wynik będzie tak samo dokładny jak i wartości na których operujemy czyli UNKNOWN. Sprawdż do jakiego rezultatu doprowadzą, wszelkiego rodzaju działania z wartością nieokreśloną :
Select 100000 + NULL as wynik1,
(5000+300) * 2 - null as wynik2,
'Ala ma ' + 'kota' + null + '!' as wynik3
ISNULL ( wartość , wartość_zastępcza ) jedna z dwóch najczęściej stosowanych i użytecznych do pracy z NULLami. Podstawia wartość wskazaną w drugim argumencie, jeśli wykryje w danej kolumnie NULL.
Select ISNULL(Placa_dod,0) as PlacaDod from Pracownicy
ORDER BY - Ostatnim krokiem logicznego przetwarzania zapytań jest operacja sortowania, którą możemy określić w ORDER BY. Zazwyczaj sortujemy zbiór wynikowy według określonych atrybutów (kolumn) elementów, znajdujących się w klauzuli SELECT. Uwaga w tym wypadku możemy także korzystać z nazw aliasów. Możemy sortować po dowolnych atrybutach tabel (zbiorów) do których odwołujemy się w klauzuli FROM zapytania, pod warunkiem, że nie używamy DISTINCTa. Możemy sortować rosnąco lub malejąco, służą do tego słowa kluczone ASC i DESC.
SELECT nazwa as miasta from Oddzialy
ORDER BY miasta
select DISTINCT Stanowisko from Pracownicy
ORDER BY stanowisko
SELECT stanowisko, nazwisko from Pracownicy
ORDER BY stanowisko, nazwisko ASC
SELECT stanowisko, nazwisko from Pracownicy
ORDER BY stanowisko, nazwisko DESC
W sekcji where możemy dokonywać selekcji (filtracji wierszy).
SELECT * from Pracownicy
where stanowisko = 'Dyrektor'
SELECT * from Pracownicy
where stanowisko = 'DYREKTOR'
Jeśli chcesz określić kilka warunków, trzeba połączyć je za pomocą operatorów logicznych AND – jeśli wszystkie, lub OR, jeśli przynajmniej jeden z nich ma być spełniony.
SELECT * from Pracownicy
where stanowisko = 'DYREKTOR' OR stanowisko = 'MONTER'
SELECT * from Pracownicy
where stanowisko = 'PRAKTYKANT' OR stanowisko = 'MONTER' and Placa_pod > 1450
SELECT * from Pracownicy
where (stanowisko = 'PRAKTYKANT' OR stanowisko = 'MONTER') and Placa_pod > 1450
Jeżeli nie określimy nawiasowania, to wszystkie wymagania które połączone są operatorem AND zostaną potraktowane razem (obligatoryjnie). Pozostałe, zostaną rozpatrzone osobno.
SELECT * from Pracownicy
where placa_pod > placa_dod + 2000
Filtrowanie na stringach dokonujemy za pomocą wzorców (maski) określanych jako LIKE.
Symbol „%” – zastępuje dowolną liczbę znaków.
SELECT * from Pracownicy
where nazwisko LIKE 'M%'
SELECT * from Pracownicy
where nazwisko LIKE '%M%'
symbol „_” – zstępuje jeden dowolny znak
SELECT * from Pracownicy
where nazwisko LIKE '_A%'
Określenie zakresu znaków na wskazanej pozycji w nawiasach klamrowych []. Zakres może być ciągły [a-z] lub stanowić listę możliwych znaków [adg]. Może też określać, wykluczenie konkretnych znaków – stosujemy wtedy symbol ^.
SELECT * from Pracownicy
where nazwisko LIKE '[MB]A%'
SELECT * from Pracownicy
where nazwisko LIKE '[A-L]A%'
Przeszukiwania wartości liczbowych czy dat, wykonywane jest często w ramach zakresów. Służy do tego słowo BETWEEN :
SELECT *
FROM Pracownicy
WHERE placa_pod BETWEEN 1200 AND 9000
and zatrudniony BETWEEN '1990-01-01' AND '2010-06-30'
Kolejnym sposobem filtrowania wartości jest odniesienie do listy wartości za pomocą operatorów IN, ANY, ALL.
select *
from Pracownicy
where szef in (100, 110)
CAST oraz CONVERT służą one do konwersji typów danych na inne (np. liczby na ciąg znaków). Składnia:
CAST (wartość_konwertowana AS typ_danych)
select nazwisko + ' Jest z nami od : ' + CAST (Zatrudniony as varchar(100)) as Info
from Pracownicy
.
CONVERT (typ_danych, wartość_konwertowana, opcjonalnie_styl)
Potrafi wszystko to co CAST, dodatkowo możemy określić styl typu danych.
Wykorzystano materiały z
http://www.staff.amu.edu.pl/~psi/informatyka/kluczew/I2_Database.htm
http://www.sqlpedia.pl/relacyjne-bazy-danych-pojecia-podstawowe/