04. Pierwszy kontakt. Czyli czym jest baza danych i jak z niej korzystać.

04. Pierwszy kontakt. Czyli czym jest baza danych i jak z niej korzystać.

Autor: Grzegorz Chuchra

Opublikowano: 12/21/2005, 12:00 AM

Liczba odsłon: 108312

Zakładam, że każdemu udało się już poprawnie zainstalować i uruchomić aplikacje. Startujemy więc z miejsca, gdzie ostatnio zakończyliśmy.
Wszyscy mamy uruchomione Microsoft SQL Server Management Studio, poniższy screenshoot pokazuje jak wygląda to u mnie.

Pierwszą operacją, jaką wykonamy, będzie wylistowanie informacji o zgromadzonych kontaktach w tabeli Contacts. Operację wykonamy na dwa sposoby. W okienku Object Explorer po rozwinięciu katalogu Databases pokazuje się lista baz danych dostępnych na naszym serwerze. Standardowo będziemy korzystać z bazy danych AdventureWorks, która została dołączona w podstawowym pakiecie. Kolejnym krokiem jest rozwinięcie folderu Tables. Z listy tabel wybieramy Person.Contact i klikamy na nią prawym guzikiem myszy Z menu podręcznego wybieramy „Open Table”. W ten oto sposób wyświetliliśmy wszystkie dane kontaktowe. Teraz przeprowadzimy tą operację za pomocą języka Transact-SQL. Ponieważ sama aplikacja wspomaga tworzenie zapytań, nie będziemy musieli zbytnio się napracować. Podobnie jak w poprzednim przypadku klikamy prawym guzikiem myszy na tabelę Person.Contact - z tą różnicą, że tym razem wybieramy opcję Script Table as, a następnie SELECT To i New Query Editor Window. Otwiera się nowa zakładka z wygenerowanym zapytaniem bazodanowym wyświetlającym wszystkie dane z tabeli Contact. Teraz wystarczy tylko wcisnąć przycisk Execute (lub wcisnąć F5) znajdujący się nad nazwą zakładki.

Różnica między tym trybem wyświetlania, a poprzednią opcją jest następująca. W pierwszej opcji mieliśmy możliwość edycji danych, usuwania wierszy itp. W drugim zaś przypadku możemy jedynie przeglądać dane, bo wiersze są wylistowane w trybie read-only. Jednak programowe wyświetlanie wierszy jest bardziej elastyczną formą, co zaraz postaram się udowodnić. Jak pewnie zauważyliście, ilość informacji, która się pojawiła jest przytłaczająco duża. A nam potrzeba zaledwie kilku podstawowych danych, takich jak imię, nazwisko, data urodzenia oraz może jeszcze adres. Przechodzimy więc do modyfikacji naszego zapytania. Usuwamy z niego większość pól tak, aby zostało w takiej formie jak jest poniżej.

SELECT [FirstName]
,[LastName]
,[EmailAddress]
,[Phone]
FROM [AdventureWorks].[Person].[Contact]

Dane, które teraz zostały wyświetlone są znacznie czytelniejsze i pozwalają nam na lepszą interpretacje wyników zapytania. Dodając dodatkową klauzulę, możemy posortować kontakty według nazwiska bądź imienia.

SELECT [FirstName]
      ,[LastName]
      ,[EmailAddress]
      ,[Phone]
FROM [AdventureWorks].[Person].[Contact]
ORDER BY [LastName]

@STRONA@

Teraz, kiedy już umiemy wyświetlać dane, przejdziemy do ich edycji, czyli zmiany wartości w poszczególnych komórkach, a także usuwania całych wierszy. Jak zwykle zrobimy to na dwa sposoby (pierwszy – klikając, drugi - korzystając z języka zapytań). Postaram się, aby stało się to już tradycją, że wszystkie operacje będę przedstawiał na dwa sposoby. Tak, aby każdy mógł wyrobić w sobie swój własny sposób korzystania SQL Server 2005 w najwygodniejszy dla niego sposób.
Przypuśćmy więc, że preferujemy polskie imiona, a że tak się składa, iż jesteśmy administratorami serwera baz danych i wolno nam zrobić bardzo dużo z danymi, zmieniamy imię pani Catherine na Katarzyna. Aby tego dokonać przystępujemy do analogicznej procedury jak przed chwilą. Klikamy prawym klawiszem myszy na tabelę [Person].[Contact] i wybieramy opcję Open Table, odszukujemy w wynikach pozycję z Ms. Catherine Abel (drugi wiersz na liście) naciskamy na komórkę z imieniem Catherine i po prostu wpisujemy Katarzyna. Po lewej stronie powinna pojawić się ikona z ołówkiem, co oznacza, że wiersz został w jakiś sposób zmodyfikowany. W momencie gdy naciśniesz na jakąkolwiek inną komórkę w innym wierszu ikon z ołówkiem znika a zmiany zostają zapisane. Kasowanie odbywa się w bardzo podobny sposób. W miejscu gdzie przed momentem pojawił się ołówek naciskamy prawym klawiszem myszy. Cały wiersz powinien ulec zaznaczeniu, a na menu podręcznym powinna pojawić się opcja Delete. Po jej wybraniu pozostaje już tylko zaakceptować wprowadzenie zmiany i wiersz zostaje na stałe usunięty z naszego repozytorium danych. Jeśli już umiemy zmieniać dane z poziomu aplikacji, czas przejść do nieco trudniejszego sposobu - języka zapytań. Chcąc zmienić imię pani Katarzyny z powrotem na Catherine musielibyśmy napisać zapytanie wyglądające następująco:

UPDATE [AdventureWorks].[Person].[Contact]
SET [FirstName] = 'Catherine'
WHERE [FirstName] = 'Katarzyna'

Na pierwszy rzut oka może wyglądać to nieco skomplikowanie, ale jeśli choć chwilkę skupisz się na powyższym wyrażeniu, intuicyjnie stwierdzisz, że jest ono w pełni logiczne i zrozumiałe, a stworzenie kolejnych zapytań nie sprawi Ci już żadnej trudności. Podobnie jest z drugą operacją, jaką robiliśmy na zbiorze danych. Jeśli tym razem chcielibyśmy usunąć kontakt z osobą o imieniu Catherine wystarczyłoby wpisać następującego selecta (za selecta uważamy każdą z operacji typu Data Manipulation Language)

DELETE FROM [AdventureWorks].[Person].[Contact]
WHERE [FirstName] = 'Catherine'

Jeśli przez chwilę zastanowiłeś się nad powyższym kawałkiem kodu, zapewne masz nieodparte wrażenie, iż nie jest ono do końca poprawne. Jeśli uruchomilibyśmy ten skrypt, z repozytorium zostałyby usunięte wszelkie kontakty, które jako własność FirstName mają Catherine. Czyli po prostu pozbylibyśmy się wszystkich kontaktów z paniami które mają na pierwsze imię Katarzyna. A tego z pewnością nie chcielibyśmy. Aby uzyskać wynik zgodny z naszymi oczekiwaniami, powinniśmy dodać jeszcze jeden warunek, który ograniczy zbiór zmian. W tym celu nieco modyfikujemy klauzulę WHERE

DELETE FROM [AdventureWorks].[Person].[Contact]
WHERE [FirstName] = 'Catherine' AND [LastName] = 'Abel'

Tak zmieniony skrypt spowoduje usunięcie jednego rekordu ze zbioru kontaktów. Możemy teraz sprawdzić, jak wielką pomyłkę zrobilibyśmy, gdybyśmy uruchomili najpierw pierwsze zapytanie. I tak liczba usuniętych wierszy w pierwszym przypadku wyniosłaby:

SELECT COUNT(*) 'Ilosc wierszy'
FROM [AdventureWorks].[Person].[Contact]
WHERE [FirstName] = 'Catherine' AND [LastName] = 'Abel'

zaś w drugim:

SELECT COUNT(*) 'Ilosc wierszy'
FROM [AdventureWorks].[Person].[Contact]
WHERE [FirstName] = 'Catherine'

Łatwo więc jest zauważyć, iż zapytania są bardzo wrażliwe i należy poświęcić dużo uwagi, aby je poprawnie zapisać. Szczególną uwagę powinniśmy poświęcić skryptom edytującym bądź usuwającym dane. W tym konkretnym przypadku chwila nieuwagi mogła doprowadzić do utraty 21 wierszy.

Podsumowanie

Jeśli po przeczytaniu tego artykułu czujesz, że nie wszystko dokładnie zrozumiałeś, że są jeszcze aspekty, które chciałbyś lepiej poznać, nie powinieneś się martwić. Kurs ten miał za zadanie przybliżyć nam samą aplikacje, pokazać czym jest SQL Server 2005 i aplikacja dostępowa Microsoft SQL Server Management Studio. Chciałem, by te osoby, które po raz pierwszy zetknęły się z Transact-SQL mogły się oswoić, a przy tym troszeczkę pocieszyć, iż znaczną cześć operacji można wykonać bez potrzeby pisania skomplikowanych skryptów. Zaś te osoby, które czują troszeczkę niedosytu po powyższym artykule chciałbym uprzedzić, że kolejne publikacje będą już bardziej konkretne i udokumentowane znacznie większą ilością przykładów i teorii.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia