UWAGA! Promocja dla firm - MICROSOFT OFFICE 365  na 12 miesiecy ZA DARMO! Tylko na CentrumXP.pl!
Wielka promocja Office 365 na CentrumXP.pl!
Do góry Skomentuj

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: 21 grudnia 2005 Odsłon: 82 602

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]

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.

Zobacz również

Komentarze

Nie wiem, jak u autora, ale u mnie nie działa usówanie wierszy. Problem polega w tym, że są nadane referencje do innych tabel. Taka referencja uniemożliwia kasownie dowolnych wierszy
Misiek, 25 sierpnia 2006, 21:18
U mnie także nie działa usuwanie wierszy. Mógłby ktoś napisać w jaki sposób można usuwać wiersze gdy są nadane referencje?
beginer, 4 czerwca 2007, 18:44
Ja też mam ten sam problem
Rafał, 3 sierpnia 2007, 21:24
Może najpierw usuniecie relacje między tabelami ale może sie baza posypać
Tomek, 8 września 2007, 00:13
chciałam wyszukać dwa sposobyzaznaczenia wiersza a nic się nie dowiedziałam w
ula, 2 stycznia 2008, 10:54
"Standardowo będziemy korzystać z bazy danych AdventureWorks, która została dołączona w podstawowym pakiecie.
" - ja takowy posiadam, ale wspomniana baza danych AdventureWorks nie jest zintegrowana w moim pakiecie >


Ki$i, 11 kwietnia 2009, 11:09
Jeśli nie posiadasz bazy AdventureWorks to musisz pobrac i doinstalowac -> google.pl :)

Adrian, 26 września 2009, 12:29
Przechodzę na Transact-SQL, wykasowuję niepotrzebne kolumny i co dalej? kolumny w tabli poniżej nie usuwają się. Czyli tabela dalej jest nieczytelna. Czy trzeba zapisać zmiany - zmodyfikowane zapytania? i dopiero wtedy zmiany (usunięcie zbędnych kolumn) nastąpi?
muchar81, 14 grudnia 2011, 22:46
PPM --> Execute i masz o co pytasz w zapytaniu.
RE, 19 lutego 2012, 23:24

Dodaj swój komentarz

Zasady publikacji komentarzyZasady publikacji komentarzy

Redakcja CentrumXP.pl nie odpowiada za treść komentarzy publikowanych na stronach Portalu
i zastrzega sobie prawo do usuwania wypowiedzi, które:

  • zawierają słowa wulgarne, obraźliwe, prowokujące i inne naruszające dobre obyczaje;
  • są jedynie próbami reklamowania stron internetowych (spamowanie poprzez umieszczanie linków);
  • przyczyniają się do złamania prawa bądź warunków licencyjnych oprogramowania (cracki, seriale, torrenty itp.);
  • zawierają dane osobowe, teleadresowe, adresy mailowe lub numery GG;
  • merytorycznie nie wnoszą nic do dyskusji lub nie mają związku z tematem komentowanego newsa, artykułu bądź pliku.

Autor:

Komentarz:

Dodaj komentarz