Nauka SQL. Wybór materiałów do nauki baz danych i języka SQL

Książka Alana Bewleya, znawcy języka SQL, to doskonały podręcznik dla tych, którzy jeszcze nie znają, ale chcą opanować ten język. Książka nie tylko pozwoli Ci zdobyć podstawową wiedzę, ale także opowie Ci o najczęściej wykorzystywanych przez doświadczonych programistów potężnych funkcjach języka SQL. Wiele książek o SQL jest nudnych, jeśli chodzi o prezentację podstaw. Tutaj autor, w stylu żywej opowieści, omawia wyrażenia i bloki SQL, Różne rodzaje warunków, pokazuje, jak tworzyć zapytania między wieloma tabelami poprzez łączenie tabel, przygląda się zbiorom danych i sposobom interakcji między nimi w zapytaniach, demonstruje funkcje wbudowane i agregujące, pokazuje, jak i gdzie używane są podzapytania. Szczegółowo opisano różne rodzaje złączeń tabel, zastosowanie logiki warunkowej, pracę z transakcjami, indeksami i ograniczeniami. Ponieważ najlepszą metodą nauki języka SQL jest praktyka, autor tworzy szkoleniową bazę danych MySQL i udostępnia wiele rzeczywistych opcji zapytań, które obejmują cały materiał teoretyczny. Dzięki takiemu podejściu po prostu nie da się nie uczyć. Możesz używać przykładów kodu w swoich programach i dokumentacji. Książka przeznaczona jest dla programistów aplikacji bazodanowych, administratorów baz danych oraz osób tworzących raporty.

Utwór należy do gatunku Komputery: inne. Na naszej stronie możesz pobrać książkę „Nauka SQL” w formacie fb2, rtf, epub, pdf, txt lub przeczytać online. Tutaj przed przeczytaniem możesz także zapoznać się z recenzjami czytelników, którzy już zapoznali się z książką i poznać ich opinię. W sklepie internetowym naszego partnera możesz kupić i przeczytać książkę w formie papierowej.

Wybór książek, kursów wideo i zasobów internetowych do studiowania baz danych, podstaw teorii relacji i języka SQL.

Książki

Alan Bewley „Nauka SQL” (2007)

Książka ta jest doskonałym wyborem dla tych, którzy są na początku ciernistej ścieżki nauki języka SQL. Umożliwi nie tylko zakup niezbędna baza podstawowa wiedza, ale opowie także o najpopularniejszych subtelnościach i potężnych funkcjach języka, z którego korzystają doświadczeni programiści.
Wiele podręczników na temat baz danych, teorii relacji i języka SQL jest wypełnionych nudnymi koncepcjami teoretycznymi. Ta książka stanowi przyjemny wyjątek ze względu na swój lekki, żywy styl. Autor umiejętnie przedstawia czytelnikowi informacje na temat wyrażeń i bloków SQL, typów warunków, złączeń, podzapytań i wielu innych.
Aby utrwalić zdobytą wiedzę w praktyce, autor tworzy bazę szkoleniową MySQL oraz podaje wiele praktycznych przykładów zapytań obejmujących cały zaprezentowany materiał teoretyczny.

Chris Fiaily „SQL” (2013)


Książka dotyczy wersji językowej ANSI SQL-92 (SQL2). Szczegółowo opisano sposób wykorzystania języka zapytań do rozwiązywania odpowiednich klas problemów wyszukiwania i modyfikowania danych oraz pracy z obiektami struktury bazy danych. Wszystkie przykłady są szczegółowo wyjaśnione.
Szczególną uwagę w tej publikacji poświęcono różnicom dialektów SQL w implementacji najpopularniejszych systemów DBMS: MySQL, Oracle, MS SQL Server i PostgreSQL.
Książka przeznaczona jest dla każdego, kto chce samodzielnie nauczyć się języka SQL lub udoskonalić swoją wiedzę na ten temat.

Anthony Molinaro „SQL. Zbiór przepisów” (2009)


Publikacja ta przeznaczona jest dla osób, które posiadają już pewną wiedzę na temat języka SQL i chcą udoskonalić swoje umiejętności w tym zakresie. Będzie to również bardzo przydatne dla znawców baz danych, ponieważ autor podaje przykłady rozwiązywania problemów w różnych systemach DBMS: DB2, Oracle, PostgreSQL, MySQL i SQL Server.
Książka pomoże Ci nauczyć się używać SQL do rozwiązywania szerszego zakresu problemów: od operacji na bazie danych po pobieranie danych i przesyłanie ich przez sieć do aplikacji.
Dowiesz się jak aplikować funkcje okna i operatory specjalne, a także zaawansowane metody pracy z hurtowniami danych: tworzenie histogramów, sumowanie danych w bloki, wykonywanie agregacji ruchomego zakresu wartości, generowanie sum bieżących i podsum. Będziesz mógł rozszerzać wiersze do kolumn i odwrotnie, upraszczać obliczenia w wierszu i podwójnie rozkładać zestaw wyników oraz wykonywać przeglądanie ciągów, co pozwala używać języka SQL do analizowania ciągu znaków, słów lub ciągu rozdzielanego elementy. Techniki zaproponowane przez autora pozwolą Ci zoptymalizować kod Twoich aplikacji i otworzą przed Tobą nowe możliwości w języku SQL.

Alex Kriegel i wsp. „SQL. Biblia Użytkownika, wydanie 2 (2010)


Książka jest wyjątkowa pod tym względem, że każdy rozdział porównuje implementacje pewnych zapytań w dialektach trzech wiodących systemów zarządzania bazami danych. Dzięki temu jest to kompleksowy i praktyczny przewodnik po języku SQL dla programistów, od początkujących po guru, coś w rodzaju przewodnika na komputery stacjonarne.
W publikacji poruszane są tematy od podstaw, po transakcje i blokady, funkcje i bezpieczeństwo baz danych.
Na końcu przedstawiono kilka dodatkowych tematów: integracja SQL z XML, analiza biznesowa OLAP i inne.

Eric Redmond, Jim R. Wilson „Siedem baz danych w siedem tygodni”. Wprowadzenie do nowoczesnych baz danych i ideologii NoSQL” (2015)

Książka omawia większość współczesnych baz danych typu open source: Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL i Riak. Dla każdej bazy podano przykłady pracy z rzeczywistymi danymi, pokazujące główne idee i mocne strony.
Ta książka rzuci światło na mocne i słabe strony każdej z siedmiu baz danych i nauczy Cię, jak wybrać tę, która najlepiej odpowiada Twoim potrzebom.

  • Instruktaż

O czym jest ten tutorial?

Ten poradnik to coś w rodzaju „znacznika mojej pamięci” w języku SQL (DDL, DML), czyli: Są to informacje, które narosły w trakcie mojej działalności zawodowej i są stale przechowywane w mojej głowie. To jest dla mnie wystarczające minimum, który jest najczęściej używany podczas pracy z bazami danych. Jeśli istnieje potrzeba użycia bardziej kompletnych konstrukcji SQL, wówczas zazwyczaj zwracam się o pomoc do biblioteki MSDN znajdującej się w Internecie. Moim zdaniem bardzo trudno jest utrzymać wszystko w głowie i nie ma takiej szczególnej potrzeby. Ale znajomość podstawowych struktur jest bardzo przydatna, ponieważ... mają zastosowanie w niemal takiej samej formie w wielu relacyjnych bazach danych, takich jak Oracle, MySQL, Firebird. Różnice dotyczą głównie typów danych, które mogą różnić się szczegółami. Podstawowych konstrukcji SQL nie jest wiele, a dzięki ciągłej praktyce można je szybko zapamiętywać. Przykładowo, aby stworzyć obiekty (tabele, ograniczenia, indeksy itp.) wystarczy mieć pod ręką środowisko edytora tekstu (IDE) do pracy z bazą danych, a nie trzeba uczyć się narzędzi wizualnych dostosowanych do pracy z bazą danych określony typ bazy danych (MS SQL, Oracle, MySQL, Firebird, ...). Jest to również wygodne, ponieważ cały tekst jest na Twoich oczach i nie musisz przechodzić przez wiele zakładek, aby utworzyć na przykład indeks lub ograniczenie. Podczas ciągłej pracy z bazą danych tworzenie, zmienianie, a zwłaszcza ponowne tworzenie obiektu za pomocą skryptów jest wielokrotnie szybsze niż w trybie wizualnym. Również w trybie skryptowym (i odpowiednio z należytą starannością) łatwiej jest ustalić i kontrolować zasady nazewnictwa obiektów (moje subiektywne zdanie). Ponadto skrypty są wygodne w użyciu, gdy zmiany dokonane w jednej bazie danych (na przykład testowe) wymagają przeniesienia w tej samej formie do innej bazy danych (produkcyjnej).

Język SQL jest podzielony na kilka części, tutaj przyjrzę się 2 najważniejszym częściom:
  • DML – Data Manipulation Language, który zawiera następujące konstrukcje:
    • SELECT – wybór danych
    • INSERT – wstawienie nowych danych
    • AKTUALIZACJA – aktualizacja danych
    • USUŃ – usuwanie danych
    • MERGE – łączenie danych
Ponieważ Jestem praktykiem, w tym podręczniku będzie niewiele teorii jako takiej, a wszystkie konstrukcje zostaną wyjaśnione na praktycznych przykładach. Ponadto uważam, że język programowania, a zwłaszcza SQL, można opanować jedynie poprzez praktykę, doświadczając go samodzielnie i rozumiejąc, co się stanie, gdy wykonasz tę czy inną konstrukcję.

Podręcznik ten został stworzony w myśl zasady Step by Step, tj. musisz przeczytać go sekwencyjnie i najlepiej od razu postępować zgodnie z przykładami. Ale jeśli po drodze chcesz bardziej szczegółowo poznać określone polecenie, skorzystaj z określonego wyszukiwania w Internecie, na przykład w bibliotece MSDN.

Pisząc ten poradnik korzystałem z bazy danych MS SQL Server wersja 2014, a do wykonania skryptów użyłem MS SQL Server Management Studio (SSMS).

Krótko o MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) to narzędzie do MicrosoftSQL Serwer do konfigurowania, zarządzania i administrowania komponentami baz danych. To narzędzie zawiera edytor skryptów (z którego będziemy głównie korzystać) oraz program graficzny, który działa z obiektami i ustawieniami serwera. Główny Narzędzie SQL Server Management Studio to Eksplorator obiektów, który umożliwia użytkownikowi przeglądanie, pobieranie i zarządzanie obiektami serwera. Ten tekst jest częściowo zapożyczony z Wikipedii.

Aby utworzyć nowy edytor skryptów należy skorzystać z przycisku „Nowe zapytanie”:

Aby zmienić aktualną bazę danych możesz skorzystać z listy rozwijanej:

Aby wykonać określone polecenie (lub grupę poleceń), zaznacz je i wciśnij przycisk „Wykonaj” lub klawisz „F5”. Jeśli w edytorze znajduje się aktualnie tylko jedno polecenie lub chcesz wykonać wszystkie polecenia, nie musisz niczego wybierać.

Po uruchomieniu skryptów, zwłaszcza tworzących obiekty (tabele, kolumny, indeksy), aby zobaczyć zmiany, użyj opcji odświeżania z menu kontekstowe wybierając odpowiednią grupę (na przykład Tabele), samą tabelę lub znajdującą się w niej grupę Kolumny.

Właściwie to wszystko, co musimy wiedzieć, aby uzupełnić podane tutaj przykłady. Pozostałych funkcji narzędzia SSMS można łatwo nauczyć się samodzielnie.

Trochę teorii

Relacyjna baza danych (RDB, w dalszej części po prostu DB) to zbiór połączonych ze sobą tabel. Z grubsza mówiąc, baza danych to plik, w którym dane są przechowywane w ustrukturyzowanej formie.

DBMS – System Zarządzania Bazą Danych, tj. jest to zestaw narzędzi do pracy z określonym typem bazy danych (MS SQL, Oracle, MySQL, Firebird, ...).

Notatka
Ponieważ w życiu, w mowie potocznej najczęściej mówimy: „Oracle DB”, lub nawet po prostu „Oracle”, co właściwie oznacza „Oracle DBMS”, wówczas w kontekście tego podręcznika czasami pojawi się termin DB. Myślę, że z kontekstu będzie jasne, o czym dokładnie mówimy.

Tabela to zbiór kolumn. Kolumny można również nazwać polami lub kolumnami; wszystkie te słowa będą używane jako synonimy wyrażające to samo.

Tabela jest głównym obiektem RDB; wszystkie dane RDB są przechowywane wiersz po wierszu w kolumnach tabeli. Linie i rekordy są również synonimami.

Dla każdej tabeli i jej kolumn określone są nazwy, za pomocą których można uzyskać do nich późniejszy dostęp.
Nazwa obiektu (nazwa tabeli, nazwa kolumny, nazwa indeksu itp.) w MS SQL może mieć maksymalnie 128 znaków.

Na przykład– w bazie ORACLE nazwy obiektów mogą mieć maksymalnie 30 znaków. Dlatego dla konkretnej bazy danych należy opracować własne zasady nazewnictwa obiektów, aby zmieścić się w limicie znaków.

SQL to język, który umożliwia wysyłanie zapytań do bazy danych za pomocą systemu DBMS. W konkretnym systemie DBMS język SQL może mieć specyficzną implementację (własny dialekt).

DDL i DML są podzbiorem języka SQL:

  • Do tworzenia i modyfikowania struktury bazy danych służy język DDL, tj. do tworzenia/modyfikowania/usuwania tabel i relacji.
  • Język DML pozwala na manipulację danymi tabelarycznymi, tj. z jej linijkami. Umożliwia selekcję danych z tabel, dodawanie nowych danych do tabel, a także aktualizację i usuwanie istniejących danych.

W SQL można używać dwóch typów komentarzy (jedno- i wielowierszowych):

Komentarz w jednej linijce
I

/* komentarz wielowierszowy */

Właściwie to wystarczy, jeśli chodzi o teorię.

DDL – język definicji danych

Rozważmy dla przykładu tabelę z danymi o pracownikach, w formie znanej osobie niebędącej programistą:

W tym przypadku kolumny tabeli mają następujące nazwy: Numer personalny, Imię i nazwisko, Data urodzenia, E-mail, Stanowisko, Dział.

Każdą z tych kolumn można scharakteryzować ze względu na rodzaj zawartych w niej danych:

  • Numer personelu – liczba całkowita
  • Pełna nazwa – string
  • Data urodzenia - data
  • E-mail – ciąg
  • Pozycja - ciąg
  • Dział - linia
Typ kolumny to cecha wskazująca, jaki typ danych może przechowywać dana kolumna.

Na początek wystarczy zapamiętać tylko następujące podstawowe typy danych używane w MS SQL:

Oznaczający Notacja w MS SQL Opis
Ciąg o zmiennej długości varchar(N)
I
nvarchar(N)
Za pomocą liczby N możemy określić maksymalną możliwą długość ciągu dla odpowiedniej kolumny. Przykładowo, jeśli chcemy powiedzieć, że wartość kolumny „Nazwa” może zawierać maksymalnie 30 znaków, to musimy ustawić jej typ na nvarchar(30).
Różnica między varchar i nvarchar polega na tym, że varchar umożliwia przechowywanie ciągów znaków formacie ASCII, gdzie jeden znak zajmuje 1 bajt, a nvarchar przechowuje ciągi Unicode, gdzie każdy znak zajmuje 2 bajty.
Typu varchar należy używać tylko wtedy, gdy masz 100% pewności, że pole nie będzie musiało przechowywać znaków Unicode. Na przykład varchar może służyć do przechowywania adresów e-mail, ponieważ... zwykle zawierają tylko znaki ASCII.
Ciąg o stałej długości znak(N)
I
nchar(N)
Typ ten różni się od łańcucha o zmiennej długości tym, że jeśli długość ciągu jest mniejsza niż N znaków, to jest on zawsze dopełniany z prawej strony do długości N ze spacjami i w tej formie przechowywany w bazie danych, tj. w bazie danych zajmuje dokładnie N znaków (gdzie jeden znak zajmuje 1 bajt dla znaku i 2 bajty dla nchar). W mojej praktyce typ ten jest bardzo rzadko używany, a jeśli już, to głównie w formacie char(1), tj. gdy pole jest zdefiniowane przez pojedynczy znak.
Liczba całkowita wew Ten typ pozwala nam używać w kolumnie wyłącznie liczb całkowitych, zarówno dodatnich, jak i ujemnych. Dla odniesienia (teraz nie jest to dla nas tak istotne) - zakres liczb, który na to pozwala typ int-2 147 483 648 do 2 147 483 647. Zwykle jest to typ podstawowy używany do określania identyfikatorów.
Liczba rzeczywista lub rzeczywista platforma W uproszczeniu są to liczby, które mogą zawierać kropkę dziesiętną (przecinek).
data data Jeśli kolumna ma przechowywać tylko Datę, która składa się z trzech elementów: Dzień, Miesiąc i Rok. Na przykład 15.02.2014 (15 lutego 2014). Tego typu można użyć w kolumnie „Data przyjęcia”, „Data urodzenia” itp., tj. w przypadkach, gdy ważne jest dla nas zapisanie tylko daty, lub gdy składnik czasu nie jest dla nas ważny i można go odrzucić lub gdy nie jest znany.
Czas czas Tego typu można użyć, jeśli kolumna ma przechowywać tylko dane czasowe, tj. Godziny, minuty, sekundy i milisekundy. Na przykład 17:38:31,3231603
Na przykład codziennie „Godzina odlotu”.
Data i godzina datagodzina Ten typ umożliwia jednoczesne zapisanie zarówno daty, jak i godziny. Na przykład 15.02.2014 17:38:31.323
Może to być na przykład data i godzina wydarzenia.
Flaga fragment Ten typ jest wygodny w użyciu do przechowywania wartości w postaci „Tak”/„Nie”, gdzie „Tak” będzie przechowywane jako 1, a „Nie” będzie przechowywane jako 0.

Nie można także podać wartości pola, jeśli nie jest to zabronione, w tym celu stosuje się słowo kluczowe NULL.

Aby uruchomić przykłady, utwórzmy testową bazę danych o nazwie Test.

Prostą bazę danych (bez określania dodatkowych parametrów) można utworzyć uruchamiając następującą komendę:

UTWÓRZ BAZĘ DANYCH Test
Możesz usunąć bazę danych za pomocą polecenia (przy tym poleceniu należy zachować szczególną ostrożność):

Upuść test bazy danych
Aby przejść do naszej bazy danych możesz uruchomić komendę:

UŻYJ testu
Alternatywnie wybierz Testuj bazę danych z listy rozwijanej w obszarze menu SSMS. W pracy często korzystam z tej metody przełączania się pomiędzy bazami danych.

Teraz w naszej bazie danych możemy utworzyć tabelę wykorzystując dotychczasowe opisy, używając spacji i znaków cyrylicy:

UTWÓRZ TABELĘ [Pracownicy]([Numer personelu] int, [Nazwa] nvarchar(30), [Data urodzenia] data, nvarchar(30), [Stanowisko] nvarchar(30), [Dział] nvarchar(30))
W tym wypadku będziemy musieli ująć nazwiska w nawiasy kwadratowe […].

Ale w bazie danych, dla większej wygody, lepiej jest podawać wszystkie nazwy obiektów po łacinie i nie używać spacji w nazwach. W tym przypadku w MS SQL zwykle każde słowo zaczyna się od Wielka litera na przykład dla pola „Numer personelu” możemy ustawić nazwę PersonnelNumber. W nazwie możesz także używać cyfr, na przykład PhoneNumber1.

Na notatce
W niektórych systemach DBMS bardziej preferowany może być następujący format nazewnictwa „NUMER_TELEFONA”; na przykład ten format jest często używany w bazie danych ORACLE. Oczywiście przy określaniu nazwy pola pożądane jest, aby nie pokrywała się ona ze słowami kluczowymi używanymi w systemie DBMS.

Z tego powodu możesz zapomnieć o składni with nawiasy kwadratowe i usuń tabelę [Pracownicy]:

DROP TABLE [Pracownicy]
Przykładowo tabelę z pracownikami można nazwać „Pracownicy”, a jej pola można nadać następujące nazwy:

  • ID – numer personalny (identyfikator pracownika)
  • Imię - pełne imię i nazwisko
  • Urodziny – data urodzenia
  • E-mail – e-mail
  • Pozycja - pozycja
  • Dział - Dział
Bardzo często do określenia pola identyfikatora używane jest słowo ID.

Stwórzmy teraz naszą tabelę:

UTWÓRZ TABELĘ Pracownicy (ID int, imię i nazwisko nvarchar(30), data urodzin, adres e-mail nvarchar(30), stanowisko nvarchar(30), dział nvarchar(30))
Aby określić wymagane kolumny, możesz użyć opcji NOT NULL.

W przypadku istniejącej tabeli pola można przedefiniować za pomocą następujących poleceń:

Aktualizuj pole ID ALTER TABLE Pracownicy ALTER KOLUMNA ID int NIE NULL -- zaktualizuj pole nazwy ALTER TABLE Pracownicy ALTER KOLUMNA Nazwa nvarchar(30) NIE NULL

Na notatce
Ogólna koncepcja języka SQL pozostaje taka sama dla większości systemów DBMS (przynajmniej tak mogę ocenić na podstawie systemów DBMS, z którymi pracowałem). Różnice pomiędzy DDL w różnych SZBD polegają głównie na typach danych (mogą się tu różnić nie tylko ich nazwy, ale także szczegóły ich implementacji), a także sama specyfika implementacji języka SQL może się nieznacznie różnić (tj. istota poleceń jest taka sama, ale mogą występować niewielkie różnice w dialekcie, niestety, ale nie ma jednego standardu). Po opanowaniu podstaw języka SQL możesz łatwo przełączać się z jednego systemu DBMS na inny, ponieważ... W takim przypadku wystarczy zrozumieć szczegóły realizacji poleceń w nowym SZBD, tj. w większości przypadków wystarczy po prostu narysować analogię.

Tworzenie tabeli CREATE TABLE Employees(ID int, -- w ORACLE typ int jest odpowiednikiem (opakowaniem) dla liczby (38) Nazwa nvarchar2(30), -- nvarchar2 w ORACLE jest odpowiednikiem nvarchar w MS SQL Data urodzin, e-mail nvarchar2(30) , Stanowisko nvarchar2(30), Dział nvarchar2(30)); -- aktualizacja pól ID i Nazwa (tutaj zamiast ALTER COLUMN użyto MODIFY(...) ALTER TABLE Pracownicy MODIFY(ID int NOT NULL,Nazwa nvarchar2(30) NOT NULL); -- dodanie PK (w tym przypadku konstrukcja wygląda tak samo jak w MS SQL, zostanie to pokazane poniżej) ALTER TABLE Pracownicy ADD CONSTRAINT PK_Employees PRIMARY KEY(ID);
W przypadku ORACLE istnieją różnice w implementacji typu varchar2, jego kodowanie zależy od ustawień bazy danych, a tekst można zapisać np. w kodowaniu UTF-8. Dodatkowo długość pola w ORACLE można określić zarówno w bajtach, jak i znakach, w tym celu stosuje się dodatkowe opcje BYTE i CHAR, które podaje się po długości pola, na przykład:

NAZWA varchar2(30 BYTE) -- pojemność pola będzie wynosić 30 bajtów NAZWA varchar2(30 CHAR) -- pojemność pola będzie wynosić 30 znaków
Która opcja będzie domyślnie używana BYTE czy CHAR, w przypadku prostego wskazania w typu Oracle varchar2(30), zależy od ustawień bazy danych, czasami można go również określić w Ustawienia IDE. Generalnie czasami można się łatwo pogubić, dlatego w przypadku ORACLE, jeśli używany jest typ varchar2 (i czasami jest to tutaj uzasadnione, np. przy użyciu kodowania UTF-8), wolę jawnie pisać CHAR (ponieważ zwykle wygodniej jest obliczyć długość ciągu w znakach).

Ale w tym przypadku, jeśli w tabeli znajdują się już jakieś dane, to do pomyślnego wykonania poleceń konieczne jest wypełnienie pól ID i Nazwa we wszystkich wierszach tabeli. Pokażmy to na przykładzie: wstaw do tabeli dane w polach Identyfikator, Stanowisko i Dział; można to zrobić za pomocą poniższego skryptu:

WSTAW Pracownicy(ID,Stanowisko,Dział) WARTOŚCI (1000,N"Dyrektor",N"Administracja"), (1001,N"Programista",N"IT"), (1002,N"Księgowy",N"Księgowość" ), (1003,N"starszy programista",N"IT")
W takim przypadku polecenie INSERT również wygeneruje błąd, ponieważ Podczas wstawiania nie określiliśmy wartości wymaganego pola Nazwa.
Gdybyśmy mieli już te dane w oryginalnej tabeli, polecenie „ALTER TABLE Pracownicy ALTER COLUMN ID int NOT NULL” zostałoby wykonane pomyślnie, a polecenie „ALTER TABLE Pracownicy ALTER COLUMN Nazwa int NOT NULL” spowodowałoby wygenerowanie komunikatu o błędzie, że pole Nazwa zawiera wartości NULL (nieokreślone).

Dodajmy wartości do pola Nazwa i uzupełnijmy dane jeszcze raz:


Możesz także użyć opcji NOT NULL bezpośrednio podczas tworzenia nowy stół, tj. w kontekście polecenia CREATE TABLE.

Najpierw usuń tabelę za pomocą polecenia:

Pracownicy DROP TABLE
Utwórzmy teraz tabelę z wymaganymi kolumnami ID i Nazwa:

UTWÓRZ TABELĘ Pracownicy (identyfikator int NIE NULL, nazwa nvarchar (30) NIE NULL, data urodzin, adres e-mail nvarchar (30), stanowisko nvarchar (30), dział nvarchar (30))
Możesz także napisać NULL po nazwie kolumny, co będzie oznaczać, że dozwolone będą w niej wartości NULL (nieokreślone), ale nie jest to konieczne, ponieważ tę cechę jest domyślnie sugerowane.

Jeśli natomiast chcesz, aby istniejąca kolumna była opcjonalna, użyj następującej składni polecenia:

ALTER TABLE Pracownicy ALTER KOLUMNA Nazwa nvarchar(30) NULL
Lub po prostu:

ZMIEŃ TABELĘ Pracownicy ZMIEŃ KOLUMNĘ Nazwa nvarchar(30)
Za pomocą tego polecenia możemy także zmienić typ pola na inny zgodny typ, lub zmienić jego długość. Na przykład rozwińmy pole Nazwa do 50 znaków:

ZMIEŃ TABELĘ Pracownicy ZMIEŃ KOLUMNĘ Nazwa nvarchar(50)

Główny klucz

Podczas tworzenia tabeli pożądane jest, aby miała ona unikalną kolumnę lub zestaw kolumn, który jest unikalny dla każdego z jej wierszy - rekord można jednoznacznie zidentyfikować po tej unikalnej wartości. Ta wartość nazywana jest kluczem podstawowym tabeli. Dla naszej tabeli Pracownicy taką unikalną wartością może być kolumna ID (w której znajduje się „Numer personelu pracownika” – choć w naszym przypadku wartość ta jest unikalna dla każdego pracownika i nie może się powtarzać).

Możesz utworzyć klucz podstawowy do istniejącej tabeli za pomocą polecenia:

ALTER TABEL Pracownicy ADD CONSTRAINT PK_Employees KLUCZ PODSTAWOWY (ID)
Gdzie „PK_Employees” to nazwa ograniczenia odpowiedzialnego za klucz podstawowy. Zazwyczaj nazwa klucza podstawowego zawiera przedrostek „PK_”, po którym następuje nazwa tabeli.

Jeżeli klucz podstawowy składa się z kilku pól, wówczas pola te należy podać w nawiasach, oddzielając je przecinkami:

ALTER TABLE nazwa_tabeli ADD CONSTRAINT nazwa_tabeli PODSTAWOWE ograniczenia KLUCZ(pole1,pole2,…)
Warto zaznaczyć, że w MS SQL wszystkie pola, które wchodzą w skład klucza podstawowego muszą mieć cechę NOT NULL.

Klucz podstawowy można również określić bezpośrednio podczas tworzenia tabeli, tj. w kontekście polecenia CREATE TABLE. Usuńmy tabelę:

Pracownicy DROP TABLE
A następnie utworzymy go, używając następującej składni:

UTWÓRZ TABELĘ Pracownicy (ID int NIE NULL, Nazwa nvarchar (30) NIE NULL, Data urodzin, Adres e-mail nvarchar (30), Stanowisko nvarchar (30), Dział nvarchar (30), CONSTRAINT PK_Employees KLUCZ PODSTAWOWY (ID) - opisz PK po wszystkie pola jako ograniczenie)
Po utworzeniu wypełnij tabelę danymi:

WSTAW Pracownicy(ID, Stanowisko, Dział, Nazwisko) WARTOŚCI (1000,N „Dyrektor”, N „Administracja”, N „Iwanow I.I.”), (1001, N „Programista”, N „IT”, N” Petrov P.P. ), (1002,N„Księgowy”,N„Księgowość”,N„Sidorov S.S.”), (1003,N„Starszy programista”,N„IT”,N„Andreev A.A.”)
Jeśli klucz podstawowy w tabeli składa się tylko z wartości jednej kolumny, możesz zastosować następującą składnię:

UTWÓRZ TABELĘ Pracownicy(ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY, -- określ jako cechę pola Nazwa nvarchar(30) NOT NULL, Data urodzin, Adres e-mail nvarchar(30), Stanowisko nvarchar(30), Dział nvarchar(30) )
W rzeczywistości nie musisz podawać nazwy ograniczenia, w takim przypadku zostanie mu przypisana nazwa systemowa (np. „PK__Employee__3214EC278DA42077”):

UTWÓRZ TABELĘ Pracownicy (ID int NIE NULL, nazwa nvarchar (30) NIE NULL, data urodzin, adres e-mail nvarchar (30), stanowisko nvarchar (30), dział nvarchar (30), KLUCZ PODSTAWOWY (ID))
Lub:

UTWÓRZ TABELĘ Pracownicy (identyfikator int NIE NULL KLUCZ PODSTAWOWY, nazwa nvarchar (30) NIE NULL, data urodzin, adres e-mail nvarchar (30), stanowisko nvarchar (30), dział nvarchar (30))
Zalecałbym jednak, aby w przypadku tabel stałych zawsze jawnie ustawiać nazwę ograniczenia, ponieważ Mając wyraźnie podaną i zrozumiałą nazwę, łatwiej będzie później nią manipulować, np. możesz ją usunąć:

ALTER TABLE Pracownicy DROP CONSTRAINT PK_Employees
Ale tak krótka składnia, bez podawania nazw ograniczeń, jest wygodna w użyciu podczas tworzenia tymczasowych tabel bazy danych (nazwa tabeli tymczasowej zaczyna się od # lub ##), które po użyciu zostaną usunięte.

Podsumujmy

Do tej pory przyjrzeliśmy się następującym poleceniom:
  • UTWÓRZ TABELĘ nazwa_tabeli (lista pól i ich typów, ograniczenia) – służy do utworzenia nowej tabeli w bieżącej bazie danych;
  • UPUŚĆ STOLIK nazwa_tabeli – służy do usunięcia tabeli z bieżącej bazy danych;
  • ZMIEŃ TABELĘ Nazwa tabeli ZMIEŃ KOLUMNĘ nazwa_kolumny... – służy do aktualizacji typu kolumny lub zmiany jej ustawień (np. ustawienia cechy NULL lub NOT NULL);
  • ZMIEŃ TABELĘ Nazwa tabeli DODAJ OGRANICZENIE nazwa_ograniczenia GŁÓWNY KLUCZ(pole1, pole2,...) – dodanie klucza podstawowego do istniejącej tabeli;
  • ZMIEŃ TABELĘ Nazwa tabeli OGRANICZENIE UPUSZCZENIA constraint_name – usuwa ograniczenie z tabeli.

Trochę o tabelach tymczasowych

Wyciąg z MSDN. W MS SQL Server istnieją dwa typy tabel tymczasowych: lokalne (#) i globalne (##). Lokalne tabele tymczasowe są widoczne tylko dla ich twórców do momentu zakończenia sesji połączenia z instancją SQL Server w momencie ich pierwszego utworzenia. Lokalne tabele tymczasowe są automatycznie usuwane po rozłączeniu się użytkownika z instancją SQL Server. Globalne tabele tymczasowe są widoczne dla wszystkich użytkowników podczas sesji połączeń po utworzeniu tych tabel i są usuwane, gdy wszyscy użytkownicy odwołujący się do tych tabel rozłączą się z instancją SQL Server.

W systemie tworzone są tabele tymczasowe baza danych tempdb, tj. Tworząc je nie zapychamy głównej bazy danych, w przeciwnym razie tabele tymczasowe są całkowicie identyczne ze zwykłymi tabelami, można je również usunąć za pomocą polecenia DROP TABLE. Częściej używane są lokalne (#) tabele tymczasowe.

Aby utworzyć tabelę tymczasową, możesz użyć polecenia CREATE TABLE:

UTWÓRZ TABELĘ #Temp(ID int, nazwa nvarchar(30))
Ponieważ tabela tymczasowa w MS SQL jest podobna do zwykłej tabeli, można ją również usunąć za pomocą polecenia DROP TABLE:

UST. TABELI #Temp

Możesz także utworzyć tabelę tymczasową (jak zwykłą tabelę) i od razu wypełnić ją danymi zwróconymi przez zapytanie, korzystając ze składni SELECT… INTO:

WYBIERZ ID, Nazwisko W #Temp OD Pracowników

Na notatce
Implementacja tabel tymczasowych może różnić się w różnych systemach DBMS. Na przykład w ORACLE i Firebird DBMS strukturę tabel tymczasowych należy wcześniej określić za pomocą polecenia CREATE GLOBAL TEMPORARY TABLE, wskazując specyfikę przechowywania w niej danych, następnie użytkownik widzi ją wśród tabel głównych i pracuje z nią jak przy zwykłym stole.

Normalizacja bazy danych – podział na podtabele (katalogi) i identyfikacja powiązań

Nasza obecna tabela Pracownicy ma tę wadę, że w polach Stanowisko i Dział użytkownik może wpisać dowolny tekst, który przede wszystkim jest obarczony błędami, gdyż dla jednego pracownika może po prostu wskazać „IT” jako dział, a dla drugiego pracownika jako dział na przykład wpisz „dział IT”, trzeci ma „IT”. W rezultacie nie będzie jasne, co użytkownik miał na myśli, tj. Czy ci pracownicy są pracownikami tego samego działu, czy też użytkownik opisał siebie i są to 3 różne działy? Co więcej, w tym przypadku nie będziemy w stanie poprawnie pogrupować danych dla jakiegoś raportu, w którym konieczne może być pokazanie liczby pracowników w poszczególnych działach.

Drugą wadą jest objętość przechowywania tej informacji i jej powielanie, tj. Dla każdego pracownika wskazana jest pełna nazwa działu, co wymaga miejsca w bazie danych na przechowanie każdego znaku z nazwy działu.

Trzecią wadą jest trudność aktualizacji tych pól w przypadku zmiany nazwy stanowiska, np. w przypadku konieczności zmiany nazwy stanowiska „Programista” na „Młodszy Programista”. W takim przypadku będziemy musieli dokonać zmian w każdym wierszu tabeli, którego Pozycja jest równa „Programista”.

Aby uniknąć tych niedociągnięć, stosuje się tzw. normalizację bazy danych – podział jej na podtabele i tabele referencyjne. Nie trzeba zagłębiać się w gąszcz teorii i badać, czym są formy normalne, wystarczy zrozumieć istotę normalizacji.

Stwórzmy 2 tabele katalogów „Stanowiska” i „Działy”, nazwijmy odpowiednio pierwszą Pozycję, a drugą Działy:

UTWÓRZ TABELĘ Pozycje(ID int IDENTITY(1,1) NIE NULL OGRANICZENIE PK_Pozycje KLUCZ PODSTAWOWY, nazwa nvarchar(30) NIE NULL) UTWÓRZ TABELĘ Działy(ID int IDENTITY(1,1) NIE NULL OGRANICZENIE PK_Departments KLUCZ PODSTAWOWY, nazwa nvarchar(30) ) NIE JEST ZEREM)
Zwróćmy uwagę, że zastosowaliśmy tutaj nową opcję IDENTITY, która mówi, że dane w kolumnie ID będą numerowane automatycznie, zaczynając od 1, w przyrostach co 1, tj. Podczas dodawania nowych rekordów będą im kolejno przypisywane wartości 1, 2, 3 itd. Takie pola nazywane są zwykle autoinkrementacją. Tabela może mieć tylko jedno pole zdefiniowane za pomocą właściwości IDENTITY i zazwyczaj, choć niekoniecznie, pole to jest kluczem podstawowym tej tabeli.

Na notatce
W różnych systemach DBMS implementację pól z licznikiem można wykonać inaczej. W MySQL np. takie pole definiowane jest za pomocą opcji AUTO_INCREMENT. W ORACLE i Firebird tę funkcjonalność można było wcześniej emulować za pomocą SEQUENCE. Ale o ile wiem, ORACLE dodało teraz opcję GENEROWANA JAKO TOŻSAMOŚĆ.

Wypełnijmy te tabele automatycznie, w oparciu o aktualne dane zapisane w polach Stanowisko i Dział tabeli Pracownicy:

Wypełniamy pole Nazwa tabeli Stanowiska unikalnymi wartościami z pola Stanowisko tabeli Pracownicy WSTAW Stanowiska(Nazwa) WYBIERZ RÓŻNE Stanowisko OD Pracowników WHERE Stanowisko NIE JEST NULL -- odrzuć rekordy, dla których stanowisko nie jest określone
Zróbmy to samo dla tabeli Działy:

WSTAW Działy (nazwa) WYBIERZ WYRÓŻNIJ Dział OD Pracowników GDZIE Dział NIE MA NULL
Jeśli teraz otworzymy tabele Stanowiska i Działy, naszym oczom ukaże się ponumerowany zestaw wartości pola ID:

WYBIERZ * Z pozycji

WYBIERZ * Z Działów

Tabele te będą teraz pełnić rolę podręczników do wyszczególniania stanowisk i działów. Zajmiemy się teraz identyfikatorami stanowisk i działów. Na początek utwórzmy w tabeli Pracownicy nowe pola do przechowywania danych identyfikacyjnych:

Dodaj pole na identyfikator stanowiska ALTER TABLE Pracownicy ADD PositionID int -- dodaj pole na identyfikator działu ALTER TABLE Pracownicy ADD DepartmentID int
Typ pól referencyjnych musi być taki sam jak w katalogach, w tym przypadku jest to int.

Możesz także dodać kilka pól do tabeli jednocześnie za pomocą jednego polecenia, wymieniając pola oddzielone przecinkami:

ALTER TABLE Pracownicy ADD PositionID int, DepartmentID int
Napiszmy teraz linki (ograniczenia referencyjne - FOREIGN KEY) dla tych pól, aby użytkownik nie miał możliwości zapisania w tych polach wartości, które nie znajdują się wśród wartości ID znalezionych w katalogach.

ZMIEŃ TABELĘ Pracownicy DODAJ OGRANICZENIE FK_Employees_PositionID KLUCZ OBCY (ID pozycji) ODNIESIENIA Pozycje (ID)
I zrobimy to samo dla drugiego pola:

ZMIEŃ TABELĘ Pracownicy ADD CONSTRAINT FK_Employees_DepartmentID KLUCZ OBCY (ID działu) ODNIESIENIA Działy (ID)
Teraz użytkownik będzie mógł wprowadzić w tych polach tylko wartości identyfikacyjne z odpowiedniego katalogu. W związku z tym, aby skorzystać z nowego działu lub stanowiska, będzie musiał najpierw dodać nowy wpis do odpowiedniego katalogu. Ponieważ Stanowiska i działy są teraz przechowywane w katalogach w jednym egzemplarzu, więc aby zmienić nazwę, wystarczy zmienić ją tylko w katalogu.

Nazwa ograniczenia referencyjnego jest zwykle nazwą złożoną, składającą się z przedrostka „FK_”, po którym następuje nazwa tabeli, po której następuje podkreślenie, po którym następuje nazwa pola odwołującego się do identyfikatora tabeli referencyjnej.

Identyfikator (ID) jest zwykle wartością wewnętrzną, która jest używana tylko dla relacji i to, jaka wartość jest tam przechowywana, jest w większości przypadków całkowicie obojętne, więc nie ma potrzeby próbować pozbyć się dziur w ciągu liczb, które powstają podczas pracy z tabelą np. po usunięciu rekordów z katalogu.

ALTER TABLE tabela ADD CONSTRAINT nazwa_ograniczenia KLUCZ OBCY(pole1,pole2,…) REFERENCJE tabela_odniesień(pole1,pole2,…)
W tym przypadku w tabeli „reference_table” klucz podstawowy jest reprezentowany przez kombinację kilku pól (pole1, pole2,...).

Właściwie to teraz zaktualizujmy pola PositionID i DepartmentID wartościami ID z katalogów. Wykorzystajmy w tym celu polecenie DML UPDATE:

UPDATE e SET PositionID=(WYBIERZ ID Z Stanowiska WHERE Imię=e.Pozycja), DepartmentID=(WYBIERZ ID Z Działów WHERE Nazwa=e.Dział) Z Pracownicy e
Zobaczmy, co się stanie po uruchomieniu żądania:

WYBIERZ * OD Pracowników

To wszystko, pola PositionID i DepartmentID zostają wypełnione identyfikatorami odpowiadającymi stanowiskom i działom, pola Stanowisko i Dział nie są już potrzebne w tabeli Pracownicy, możesz te pola usunąć:

ZMIEŃ TABELĘ Pracownicy USUŃ KOLUMNĘ Stanowisko,Dział
Teraz nasza tabela wygląda następująco:

WYBIERZ * OD Pracowników

ID Nazwa Urodziny E-mail ID pozycji ID działu
1000 Iwanow I.I. ZERO ZERO 2 1
1001 Pietrow P.P. ZERO ZERO 3 3
1002 Sidorow S.S. ZERO ZERO 1 2
1003 Andreev A.A. ZERO ZERO 4 3

Te. W końcu pozbyliśmy się przechowywania zbędnych informacji. Teraz na podstawie numerów stanowisk i działów możemy jednoznacznie określić ich nazwy, korzystając z wartości z tabel referencyjnych:

SELECT e.ID,e.Name,p.Name StanowiskoName,d.NazwaNazwa działu OD Pracownicy e LEWY DOŁĄCZ Działy d ON d.ID=e.ID działu LEFT JOIN Stanowiska p ON p.ID=e.PositionID

W inspektorze obiektów możemy zobaczyć wszystkie obiekty utworzone dla danej tabeli. Stąd możesz wykonywać różne manipulacje tymi obiektami - na przykład zmieniać nazwę lub usuwać obiekty.

Warto również zaznaczyć, że tabela może odnosić się do siebie, tj. możesz utworzyć łącze rekurencyjne. Przykładowo do naszej tabeli z pracownikami dodamy kolejne pole ManagerID, które będzie wskazywało pracownika, któremu ten pracownik podlega. Stwórzmy pole:

ALTER TABLE Pracownicy ADD ManagerID int
Pole to dopuszcza wartość NULL, pole będzie puste jeśli np. nad pracownikiem nie będzie przełożonych.

Utwórzmy teraz KLUCZ OBCY dla tabeli Pracownicy:

ZMIEŃ TABELĘ Pracownicy DODAJ OGRANICZENIE FK_Employees_ManagerID KLUCZ OBCY (ManagerID) REFERENCJE Pracownicy (ID)
Stwórzmy teraz diagram i zobaczmy jak wyglądają na nim relacje pomiędzy naszymi tabelami:

W rezultacie powinniśmy zobaczyć następujący obraz (tabela Pracownicy jest połączona z tabelami Stanowiska i Działy, a także odnosi się do siebie):

Na koniec warto powiedzieć, że klucze referencyjne mogą zawierać dodatkowe opcje ON DELETE CASCADE i ON UPDATE CASCADE, które wskazują, jak zachować się podczas usuwania lub aktualizacji rekordu, do którego odwołuje się tabela referencyjna. Jeżeli te opcje nie zostaną określone, to nie będziemy mogli zmienić identyfikatora w tabeli katalogu dla rekordu, do którego odwołuje się inna tabela, a także nie będziemy mogli usunąć takiego rekordu z katalogu, dopóki nie usuniemy wszystkich wierszy odwołujących się do tego rekordu lub Zaktualizujmy odniesienia w tych wierszach do innej wartości.

Na przykład odtwórzmy tabelę, określając opcję ON DELETE CASCADE dla FK_Employees_DepartmentID:

DROP TABLE Pracownicy CREATE TABLE Pracownicy (ID int NIE NULL, nazwa nvarchar(30), data urodzin, adres e-mail nvarchar(30), PositionID int, DepartmentID int, ManagerID int, CONSTRAINT PK_Employees PRIMARY KEY (ID), CONSTRAINT FK_Employees_DepartmentID KLUCZ ZAGRANICZNY (ID działu ) REFERENCJE Działy(ID) ON DELETE CASCADE, CONSTRAINT FK_Employees_PositionID KLUCZ OBCY(PositionID) REFERENCJE Stanowiska(ID), CONSTRAINT FK_Employees_ManagerID KLUCZ ZAGRANICZNY (ManagerID) REFERENCJE Pracownicy(ID)) WSTAW Pracownicy (ID,Imię,Urodziny,PositionID,De ID części, ID menedżera )WARTOŚCI (1000,N"Iwanow I.I.","19550219",2,1,NULL), (1001,N"Pietrow P.P.",19831203",3,3,1003), (1002 ,N"Sidorov S.S." „19760607”, 1,2,1000), (1003,N „Andreev A.A.”, „19820417”, 4,3,1000)
Usuńmy dział o identyfikatorze 3 z tabeli Działy:

USUŃ Działy GDZIE ID=3
Przyjrzyjmy się danym w tabeli Pracownicy:

WYBIERZ * OD Pracowników

ID Nazwa Urodziny E-mail ID pozycji ID działu ID menedżera
1000 Iwanow I.I. 1955-02-19 ZERO 2 1 ZERO
1002 Sidorow S.S. 1976-06-07 ZERO 1 2 1000

Jak widać, dane dla działu 3 z tabeli Pracownicy również zostały usunięte.

Opcja ON UPDATE CASCADE zachowuje się podobnie, jednak jest skuteczna przy aktualizacji wartości ID w katalogu. Przykładowo, jeśli zmienimy ID stanowiska w katalogu stanowisk, to w tym przypadku DepartmentID w tabeli Pracownicy zostanie zaktualizowany do nowej wartości ID, którą ustawiliśmy w katalogu. Ale w tym przypadku po prostu nie będzie można tego wykazać, ponieważ kolumna ID w tabeli Działy posiada opcję IDENTITY, co nie pozwoli nam na wykonanie następującego zapytania (zmień ID działu 3 na 30):

AKTUALIZUJ Działy USTAW ID=30 GDZIE ID=3
Najważniejsze jest zrozumienie istoty tych 2 opcji ON DELETE CASCADE i ON UPDATE CASCADE. Korzystam z tych opcji bardzo rzadko i zalecam dokładne przemyślenie przed określeniem ich w ograniczeniu referencyjnym, ponieważ jeśli przypadkowo usuniesz wpis z tabeli katalogów, może to prowadzić do dużych problemów i wywołać reakcję łańcuchową.

Przywróćmy dział 3:

Zezwalamy na dodanie/zmianę wartości IDENTITY SET IDENTITY_INSERT Działy ON INSERT Działy(ID,Nazwa) VALUES(3,N"IT") -- zabraniamy dodawania/zmiany wartości IDENTITY SET IDENTITY_INSERT Działy WYŁĄCZONE
Całkowicie wyczyśćmy tabelę Pracownicy za pomocą polecenia TRUNCATE TABLE:

SKRÓĆ TABELI Pracownicy
I znowu przeładujemy do niego dane za pomocą poprzedniego polecenia INSERT:

WSTAW pracowników (ID, imię i nazwisko, urodziny, ID stanowiska, ID działu, ID menedżera) WARTOŚCI (1000, N „Ivanov I.I.”, „19550219”, 2,1, NULL), (1001, N „Petrov P.P.” „19831203”, 3 ,3,1003), (1002,N"Sidorov S.S.",19760607",1,2,1000), (1003,N"Andreev A.A.",19820417" ,4,3,1000)

Podsumujmy

W tej chwili do naszej wiedzy dodano kilka kolejnych poleceń DDL:
  • Dodanie do pola właściwości IDENTITY – pozwala na uczynienie tego pola polem automatycznie wypełnianym (polem licznika) dla tabeli;
  • ZMIEŃ TABELĘ Nazwa tabeli DODAĆ list_of_fields_with_characteristics – umożliwia dodanie nowych pól do tabeli;
  • ZMIEŃ TABELĘ Nazwa tabeli OPUŚĆ KOLUMNĘ list_fields – umożliwia usuwanie pól z tabeli;
  • ZMIEŃ TABELĘ Nazwa tabeli DODAJ OGRANICZENIE nazwa_ograniczenia KLUCZ OBCY(pola) BIBLIOGRAFIA table_reference (pola) – umożliwia zdefiniowanie relacji pomiędzy tabelą a tabelą referencyjną.

Inne ograniczenia – UNIKALNE, DOMYŚLNE, SPRAWDZ

Stosując ograniczenie UNIQUE, można powiedzieć, że wartość każdego wiersza w danym polu lub zestawie pól musi być unikalna. W przypadku tabeli Pracownicy możemy nałożyć takie ograniczenie na pole Email. Po prostu wstępnie wypełnij e-mail wartościami, jeśli nie są jeszcze zdefiniowane:

AKTUALIZUJ USTAW E-mail pracowników =" [e-mail chroniony]" GDZIE ID=1000 AKTUALIZUJ Pracownicy USTAW E-mail=" [e-mail chroniony]" GDZIE ID=1001 AKTUALIZUJ Pracownicy USTAW E-mail=" [e-mail chroniony]" GDZIE ID=1002 AKTUALIZUJ Pracownicy USTAW E-mail=" [e-mail chroniony]„GDZIE ID=1003
Teraz możesz nałożyć ograniczenie unikalności na to pole:

ALTER TABLE Pracownicy DODAJ OGRANICZENIE UQ_Employees_Email UNIQUE (E-mail)
Teraz użytkownik nie będzie mógł wprowadzić tego samego adresu e-mail dla kilku pracowników.

Ograniczenie unikalne nazywa się zwykle w następujący sposób - najpierw pojawia się przedrostek „UQ_”, następnie nazwa tabeli, a po podkreśleniu nazwa pola, na którym zastosowano to ograniczenie.

Odpowiednio, jeśli kombinacja pól musi być unikalna w kontekście wierszy tabeli, wówczas wyszczególniamy je oddzielone przecinkami:

ALTER TABLE nazwa_tabeli ADD CONSTRAINT nazwa_ograniczenia UNIQUE(pole1,pole2,…)
Dodając do pola ograniczenie DEFAULT możemy ustawić domyślną wartość, która będzie podstawiana jeśli podczas wstawiania nowe wejście to pole nie będzie widoczne na liście pól komendy INSERT. To ograniczenie można ustawić bezpośrednio podczas tworzenia tabeli.

Dodajmy nowe pole Data zatrudnienia do tabeli Pracownicy i nazwijmy je HireDate i powiedzmy, że domyślną wartością tego pola będzie bieżąca data:

ALTER TABLE Pracownicy DODAJ datę zatrudnienia NIE NULL DOMYŚLNY SYSDATETIME()
Lub jeśli kolumna HireDate już istnieje, można zastosować następującą składnię:

ALTER TABLE Pracownicy DODAJĄ DOMYŚLNĄ SYSDATETIME() DLA HireDate
Tutaj nie podałem nazwy ograniczenia, ponieważ... w przypadku DEFAULT moim zdaniem nie jest to aż tak krytyczne. Ale jeśli zrobisz to w dobry sposób, myślę, że nie musisz być leniwy i powinieneś ustawić normalną nazwę. Odbywa się to w następujący sposób:

ALTER TABLE Pracownicy DODAJ OGRANICZENIE DF_Employees_HireDate DEFAULT SYSDATETIME() DLA HireDate
Ponieważ wcześniej ta kolumna nie istniała, po jej dodaniu do każdego rekordu, w polu HireDate zostanie wstawiona bieżąca wartość daty.

Podczas dodawania nowego wpisu automatycznie zostanie wstawiona również bieżąca data, oczywiście o ile wyraźnie jej nie ustawimy, tj. Nie będziemy tego wskazywać na liście kolumn. Pokażmy to na przykładzie bez podawania pola HireDate na liście dodanych wartości:

WSTAW pracowników (ID, imię i nazwisko, adres e-mail) WARTOŚCI (1004, N „Siergiejew S.S.”,” [e-mail chroniony]")
Zobaczmy co się stało:

WYBIERZ * OD Pracowników

ID Nazwa Urodziny E-mail ID pozycji ID działu ID menedżera Data wynajmu
1000 Iwanow I.I. 1955-02-19 [e-mail chroniony] 2 1 ZERO 2015-04-08
1001 Pietrow P.P. 1983-12-03 [e-mail chroniony] 3 4 1003 2015-04-08
1002 Sidorow S.S. 1976-06-07 [e-mail chroniony] 1 2 1000 2015-04-08
1003 Andreev A.A. 1982-04-17 [e-mail chroniony] 4 3 1000 2015-04-08
1004 Siergiejew S.S. ZERO [e-mail chroniony] ZERO ZERO ZERO 2015-04-08

Ograniczenie sprawdzania CHECK stosuje się, gdy konieczne jest sprawdzenie wartości wstawionych do pola. Przykładowo nałóżmy to ograniczenie na pole numeru personalnego, które dla nas jest identyfikatorem pracownika (ID). Z pomocą to ograniczenie Załóżmy, że liczby personelu muszą mieć wartość od 1000 do 1999:

ALTER TABLE Pracownicy DODAJ OGRANICZENIE CK_Employees_ID CHECK (ID MIĘDZY 1000 A 1999)
Ograniczenie nazywa się zwykle w ten sam sposób, najpierw z przedrostkiem „CK_”, następnie nazwą tabeli i nazwą pola, na które to ograniczenie jest nałożone.

Spróbujmy wstawić nieprawidłowy rekord, aby sprawdzić, czy ograniczenie działa (powinniśmy otrzymać odpowiedni błąd):

WSTAW pracowników (ID, adres e-mail) WARTOŚCI (2000,” [e-mail chroniony]")
Zmieńmy teraz wstawioną wartość na 1500 i upewnijmy się, że rekord jest wstawiony:

WSTAW pracowników (ID, adres e-mail) WARTOŚCI (1500,” [e-mail chroniony]")
Można także tworzyć ograniczenia UNIQUE i CHECK bez podawania nazwy:

ZMIEŃ TABELĘ Pracownicy DODAJ UNIKALNY (e-mail) ZMIEŃ TABELĘ Pracownicy DODAJ KONTROLĘ (ID OD 1000 DO 1999)
Ale to nie jest bardzo dobra praktyka i lepiej jest jawnie określić nazwę ograniczenia, ponieważ Aby rozgryźć to później, co będzie trudniejsze, będziesz musiał otworzyć obiekt i sprawdzić, za co jest odpowiedzialny.

Mając dobrą nazwę, wiele informacji na temat ograniczenia można dowiedzieć się bezpośrednio z jego nazwy.

W związku z tym wszystkie te ograniczenia można utworzyć natychmiast podczas tworzenia tabeli, jeśli jeszcze ona nie istnieje. Usuńmy tabelę:

Pracownicy DROP TABLE
I odtworzymy go ze wszystkimi utworzonymi ograniczeniami za pomocą jednego polecenia CREATE TABLE:

UTWÓRZ TABELĘ Pracownicy (ID int NIE NULL, nazwa nvarchar(30), data urodzin, adres e-mail nvarchar(30), ID pozycji int, ID działu int, data zatrudnienia NIE NULL DEFAULT SYSDATETIME(), -- dla DEFAULT zrobię wyjątek CONSTRAINT PK_Employees KLUCZ PODSTAWOWY (ID), CONSTRAINT FK_Employees_DepartmentID KLUCZ OBCY(ID działu) REFERENCJE Działy(ID), CONSTRAINT FK_Employees_PositionID KLUCZ OBCY(ID pozycji) REFERENCJE Stanowiska(ID), CONSTRAINT UQ_Employees_Email UNIQUE (E-mail), CONSTRAINT CK_Employ ees_ID CHECK (ID MIĘDZY 1000 A 1999) )

WSTAW pracowników (ID, imię i nazwisko, urodziny, adres e-mail, identyfikator stanowiska, identyfikator działu) WARTOŚCI (1000, N „Iwanow I.I.”, „19550219”,” [e-mail chroniony]",2,1), (1001,N"Pietrow P.P.","19831203"," [e-mail chroniony]",3,3), (1002,N"Sidorov S.S.",19760607"," [e-mail chroniony]",1,2), (1003,N"Andreev A.A.","19820417"," [e-mail chroniony]",4,3)

Trochę o indeksach tworzonych podczas tworzenia ograniczeń PRIMARY KEY i UNIQUE

Jak widać na powyższym zrzucie ekranu, podczas tworzenia ograniczeń PRIMARY KEY i UNIQUE automatycznie tworzone były indeksy o tych samych nazwach (PK_Employees i UQ_Employees_Email). Domyślnie indeks klucza podstawowego jest tworzony jako CLUSTERED, a dla wszystkich pozostałych indeksów jako NIECLUSTRED. Warto powiedzieć, że koncepcja indeksu klastrowego nie jest dostępna we wszystkich SZBD. Tabela może mieć tylko jeden indeks CLUSTERED. CLUSTERED – oznacza, że ​​rekordy tabeli będą posortowane według tego indeksu, można też powiedzieć, że indeks ten ma bezpośredni dostęp do wszystkich danych w tabeli. Jest to, że tak powiem, główny indeks tabeli. Ujmując to jeszcze bardziej z grubsza, jest to indeks dołączony do tabeli. Indeks klastrowy to bardzo potężne narzędzie, które może pomóc w optymalizacji zapytań, ale na razie pamiętajmy o tym. Jeśli chcemy powiedzieć, że indeks klastrowy ma być używany nie na kluczu podstawowym, ale na innym indeksie, to podczas tworzenia klucza podstawowego musimy określić opcję NIEKLASTRAWNĄ:

ALTER TABLE nazwa_tabeli ADD CONSTRAINT nazwa_ograniczenia KLUCZ PODSTAWOWY NIEKLASTRANY(pole1,pole2,…)
Na przykład niech indeks ograniczenia PK_Employees będzie nieklastrowany, a indeks ograniczenia UQ_Employees_Email będzie klastrowany. Przede wszystkim usuńmy te ograniczenia:

ALTER TABLE Pracownicy DROP CONSTRAINT PK_Employees ALTER TABLE Pracownicy DROP CONSTRAINT UQ_Employees_Email
Teraz utwórzmy je za pomocą opcji CLUSTERED i NonClustered:

ALTER TABLE Pracownicy ADD CONSTRAINT PK_Employees KLUCZ PODSTAWOWY NIEKLASTRANY (ID) ALTER TABLE Pracownicy ADD CONSTRAINT UQ_Employees_Email UNIQUE CLUSTERED (E-mail)
Teraz, wybierając z tabeli Pracownicy, zobaczymy, że rekordy są posortowane według indeksu klastrowego UQ_Employees_Email:

WYBIERZ * OD Pracowników

ID Nazwa Urodziny E-mail ID pozycji ID działu Data wynajmu
1003 Andreev A.A. 1982-04-17 [e-mail chroniony] 4 3 2015-04-08
1000 Iwanow I.I. 1955-02-19 [e-mail chroniony] 2 1 2015-04-08
1001 Pietrow P.P. 1983-12-03 [e-mail chroniony] 3 3 2015-04-08
1002 Sidorow S.S. 1976-06-07 [e-mail chroniony] 1 2 2015-04-08

Poprzednio, gdy indeksem klastrowym był indeks PK_Employees, rekordy były domyślnie sortowane według pola ID.

Ale w tym przypadku jest to tylko przykład pokazujący istotę indeksu klastrowego, ponieważ Najprawdopodobniej zapytania będą kierowane do tabeli Pracownicy przy użyciu pola ID, a w niektórych przypadkach być może ona sama będzie pełnić funkcję katalogu.

W przypadku katalogów zwykle zaleca się zbudowanie indeksu klastrowego na kluczu podstawowym, ponieważ w żądaniach często odwołujemy się do identyfikatora katalogu, aby uzyskać np. nazwę (Stanowisko, Dział). Przypomnijmy tutaj to, co napisałem powyżej, że indeks klastrowy ma bezpośredni dostęp do wierszy tabeli, a co za tym idzie, możemy uzyskać wartość dowolnej kolumny bez dodatkowego narzutu.

Korzystne jest zastosowanie indeksu skupień do zmiennych, które są najczęściej próbkowane.

Czasami tabele są tworzone z kluczem opartym na polu zastępczym; w tym przypadku przydatne może być zapisanie opcji indeksu CLUSTERED dla bardziej odpowiedniego indeksu i określenie opcji NIEKLASTRANEJ podczas tworzenia zastępczego klucza podstawowego.

Podsumujmy

Na tym etapie zapoznaliśmy się ze wszystkimi rodzajami ograniczeń, w ich istocie w prostej formie, które są tworzone za pomocą polecenia takiego jak „ALTER TABLE nazwa_tabeli ADD CONSTRAINT nazwa_ograniczenia…”:
  • GŁÓWNY KLUCZ- główny klucz;
  • KLUCZ OBCY– zestawianie połączeń i monitorowanie integralności referencyjnej danych;
  • UNIKALNY– pozwala stworzyć niepowtarzalność;
  • SPRAWDZAĆ– pozwala zapewnić poprawność wprowadzanych danych;
  • DOMYŚLNY– umożliwia ustawienie wartości domyślnej;
  • Warto również zauważyć, że wszystkie ograniczenia można usunąć za pomocą polecenia „ ZMIEŃ TABELĘ Nazwa tabeli OGRANICZENIE UPUSZCZENIA nazwa_ograniczenia”.
Częściowo poruszyliśmy także temat indeksów i zbadaliśmy koncepcję klastra ( KLASTROWANE) i nieklastrowane ( NIEKLASTEROWANY) indeks.

Tworzenie samodzielnych indeksów

Przez niezależny rozumiemy tutaj indeksy, które nie są tworzone w ramach ograniczenia KLUCZ PODSTAWOWY lub UNIKAL.

Indeksy na polu lub polach można utworzyć za pomocą następującego polecenia:

UTWÓRZ INDEKS IDX_Employees_Name NA Pracownicy(Nazwa)
Również tutaj możesz określić opcje CLUSTERED, NONCLUSTERED, UNIQUE, a także możesz określić kierunek sortowania każdego pojedynczego pola ASC (domyślnie) lub DESC:

UTWÓRZ UNIKALNY INDEKS NIEKLASTRYWNY UQ_Employees_EmailDesc ON Pracownicy (E-mail DESC)
Podczas tworzenia indeksu nieklastrowanego opcję NIEKLASTRA można pominąć, ponieważ jest to domyślnie implikowane i pokazane tutaj po prostu w celu wskazania pozycji opcji CLUSTERED lub NONCLASTERED w poleceniu.

Możesz usunąć indeks za pomocą następującego polecenia:

DROP INDEKS IDX_Employees_Name NA Pracownicy
W kontekście polecenia CREATE TABLE można tworzyć proste indeksy, a także ograniczenia.

Na przykład ponownie usuńmy tabelę:

Pracownicy DROP TABLE
I odtworzymy go ze wszystkimi utworzonymi ograniczeniami i indeksami za pomocą jednego polecenia CREATE TABLE:

UTWÓRZ TABELĘ Pracownicy (ID int NIE NULL, nazwa nvarchar(30), data urodzin, adres e-mail nvarchar(30), ID pozycji int, DepartmentID int, data zatrudnienia NIE NULL CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME(), ManagerID int, CONSTRAINT PK_Employees KLUCZ PODSTAWOWY (ID ), CONSTRAINT FK_Employees_DepartmentID KLUCZ OBCY(ID działu) REFERENCES Działy(ID), CONSTRAINT FK_Employees_PositionID KLUCZ OBCY(ID pozycji) REFERENCES Stanowiska(ID), CONSTRAINT FK_Employees_ManagerID KLUCZ OBCY (ManagerID) REFERENCJE Pracownicy(ID), CONSTRAINT UQ_Emp loyees_Email UNIQUE(E-mail), OGRANICZENIE CK_Employees_ID CHECK (ID MIĘDZY 1000 A 1999), INDEKS IDX_Employees_Name (Nazwa))
Na koniec wstawmy naszych pracowników do tabeli:

WSTAW pracowników (ID, imię i nazwisko, urodziny, adres e-mail, identyfikator stanowiska, identyfikator działu, identyfikator menedżera) WARTOŚCI (1000, N „Iwanow I.I.”, „19550219”,” [e-mail chroniony]",2,1,NULL), (1001,N"Pietrow P.P.","19831203"," [e-mail chroniony]",3,3,1003), (1002,N"Sidorov S.S.",19760607"," [e-mail chroniony]",1,2,1000), (1003,N"Andreev A.A.","19820417"," [e-mail chroniony]",4,3,1000)
Dodatkowo warto zaznaczyć, że wartości w indeksie nieklastrowym można uwzględnić określając je w polu INCLUDE. Te. w tym przypadku indeks INCLUDE będzie nieco przypominał indeks klastrowy, tyle że teraz indeks nie jest dołączony do tabeli, ale do indeksu dołączone są niezbędne wartości. W związku z tym takie indeksy mogą znacznie poprawić wydajność zapytań selekcyjnych (SELECT); jeśli wszystkie wymienione pola znajdują się w indeksie, dostęp do tabeli może w ogóle nie być potrzebny. Ale to w naturalny sposób zwiększa rozmiar indeksu, ponieważ wartości wymienionych pól są powielane w indeksie.

Wyciąg z MSDN. Ogólna składnia poleceń do tworzenia indeksów

UTWÓRZ [UNIKALNE] [KLASTEROWE | NIEKLASTRA ] INDEKS nazwa_indeksu WŁ (kolumna [ ASC | DESC ] [ ,...n ]) [ INCLUDE (nazwa_kolumny [ ,...n ]) ]

Podsumujmy

Indeksy mogą zwiększyć prędkość wyszukiwania danych (SELECT), ale indeksy zmniejszają prędkość modyfikacji danych w tabeli, ponieważ Po każdej modyfikacji system będzie musiał odbudować wszystkie indeksy dla konkretnej tabeli.

W każdym przypadku wskazane jest znalezienie optymalnego rozwiązania, złotego środka, aby zarówno wydajność próbkowania, jak i modyfikacji danych była na właściwym poziomie. Strategia tworzenia indeksów i liczba indeksów może zależeć od wielu czynników, np. częstotliwości zmian danych w tabeli.

Wniosek dotyczący DDL

Jak widać, DDL nie jest tak skomplikowany, jak mogłoby się wydawać na pierwszy rzut oka. Tutaj udało mi się pokazać prawie wszystkie jego główne struktury przy użyciu zaledwie trzech tabel.

Najważniejsze jest zrozumienie istoty, a reszta jest kwestią praktyki.

Powodzenia w opanowaniu tego wspaniałego języka zwanego SQL.

Martin Graber „SQL dla zwykłych śmiertelników” Laurie, 2014, 382 strony (11,2 MB pdf)

Książkę można określić jako poradnik dla początkujących. Structured Query Language - SQL, język programowania służący do tworzenia i zarządzania relacyjnymi bazami danych (stosowany, logiczny model konstruowania zbioru baz danych). Książka przeznaczona jest dla najprostszego (najniższego) poziomu szkolenia z zakresu IT, czyli wiedzy wystarczającej do pokrycia szkolnego programu nauczania. Nie oznacza to jednak, że materiał podręcznika stanowi jedynie wprowadzenie do tego języka programowania – nie, SQL jest opisany dość dogłębnie (wypowiedź autora).

Każdy rozdział dodaje nowe dane opisujące powiązane ze sobą pojęcia i definicje. Cały kolejny materiał opiera się na poprzednim, omówionym wcześniej, z omówieniem zagadnień praktycznych na końcu rozdziału w celu lepszego przyswojenia zdobytej wiedzy. Odpowiedzi znajdziesz w Załączniku A.

Wprowadzenie do języka SQL przedstawiono w pierwszych siedmiu rozdziałach, które należy przeczytać, jeśli korzystasz z przewodnika takiego jak SQL dla początkujących. Kolejne siedem rozdziałów (od 8 do 14) obejmuje więcej złożone przykłady: zapytania łączone, zapytania do kilku tabel jednocześnie. Inne cechy SQL: tworzenie i edycja tabel, wprowadzanie i ustawianie wartości, otwieranie i zamykanie dostępu do utworzonych tabel - zostały opisane w rozdziałach od 15 do 23. Na koniec o strukturze baz danych i możliwości wykorzystania SQL w programach napisanych w innych językach . Dodatki zawierają wskazówki dotyczące poleceń SQL i odpowiedzi na zadania. Książka jest idealna dla początkujących do nauki języka SQL.
ISBN: 978-5-85582-301-1

Rozdział 1. Wprowadzenie do relacyjnych baz danych 1
Co to jest relacyjna baza danych? 3
Przykład bazy danych 5
Wyniki 7

Rozdział 2. Wprowadzenie do SQL 9
Jak działa SQL? 10
Różne typy danych 12
Wyniki 15

Rozdział 3. Używanie języka SQL do pobierania danych z tabel 17
Tworzenie wniosku 18
Definiowanie próbki - WHERE klauzula 24
Wyniki 26

Rozdział 4. Używanie operatorów relacyjnych i boolowskich do tworzenia bardziej złożonych predykatów 29
Operatory relacyjne 30
Operatory logiczne 32
Wyniki 37

Rozdział 5. Używanie operatorów specjalnych w „warunkach” 39
Operator w 40
Operator MIĘDZY 41
Operator JAK 44
JEST NULL operator 47
Wyniki 49

Rozdział 6. Podsumowanie danych za pomocą funkcji agregującej 51
Co to są funkcje agregujące? 52
Wyniki 61

Rozdział 7. Formatowanie wyników zapytania 63
Ciągi i wyrażenia 64
Zamawianie pól wyjściowych 67
Wyniki 71

Rozdział 8. Używanie wielu tabel w jednym zapytaniu 75
Łączenie tabel 76
Wyniki 81

Rozdział 9 Operacja łączenia, której operandy są reprezentowane przez pojedynczą tabelę 83
Jak połączyć dwie kopie tej samej tabeli 84
Wyniki 90

Rozdział 10. Zagnieżdżanie zapytań 93
W jaki sposób wykonywane są podzapytania? 94
Wyniki 105

Rozdział 11. Powiązane podzapytania 107
Jak tworzyć powiązane podzapytania 108
Wyniki 115

Rozdział 12. Korzystanie z operatora EXISTS 117
Jak działa instrukcja EXISTS? 118
Używanie EXISTS z powiązanymi podzapytaniami 119
Wyniki 124

Rozdział 13. Korzystanie z operatorów ANY, ALL i SOME 127
Operator specjalny DOWOLNY lub NIEKTÓRY 128
Operator specjalny ALL 135
Działanie DOWOLNEGO. WSZYSTKIE i ISTNIEJĄ w przypadku utraty danych lub
z nieznanymi danymi 139
Wyniki 143

Rozdział 14. Korzystanie z klauzuli UNION 145
Łączenie wielu żądań w jedno 146
Używanie UNION z ORDER BY 151
Wyniki 157

Rozdział 15. Wprowadzanie, usuwanie i zmiana wartości zerowych 159
Polecenia aktualizacji DML 160
Wprowadzanie wartości 160
Z wyłączeniem wierszy z tabeli 162
Zmiana wartości pól 163
Wyniki 165

Rozdział 16. Używanie podzapytań z poleceniami aktualizacji 167
Używanie podzapytań w INSERT 168
Używanie podzapytań z DELETE 170
Używanie podzapytań z UPDATE 174
Wyniki 177

Rozdział 17. Tworzenie tabel 178
UTWÓRZ TABELI 179 polecenie
Indeksy 181
Zmiana tabeli, która została już utworzona 182
Wyjątek Tabela 183
Wyniki 185

Rozdział 18. Ograniczenia dotyczące zestawu prawidłowych wartości danych 186
Ograniczenia w tabelach 195
Wyniki 197

Rozdział 19. Wsparcie integralności danych 198
Klucze obce i nadrzędne 199
Ograniczenia klucza obcego 204
Co się stanie po uruchomieniu polecenia aktualizacji 209
Wyniki 211

Rozdział 20. Wprowadzenie do widoków 212
Co to są widoki? 212
UTWÓRZ WIDOK 221, polecenie
Wyniki 223

Rozdział 21. Zmiana wartości za pomocą widoków 224
Aktualizowanie widoków 228
Wybieranie wartości umieszczonych w widokach 232
Wyniki 235

Rozdział 22. Definiowanie praw dostępu do danych 236
Użytkownicy 237
Przeniesienie uprawnień 241
Odebranie przywilejów 245
Inne rodzaje przywilejów 247
Wyniki 249

Rozdział 23. Globalne aspekty SQL 250
Zmiana nazw tabel 252
W jaki sposób baza danych jest hostowana dla użytkownika? 253
Kiedy zmiana staje się trwała? 255
Jak SQL współpracuje z wieloma użytkownikami jednocześnie Wyniki 259

Rozdział 24. Jak zachować porządek w bazie danych SQL 261
Katalog systemowy 262

W prosty i przystępny sposób omówiono teoretyczne podstawy systemu DBMS SQL Server 2012. Pokazano instalację, konfigurację i obsługę MS SQL Server 2012. Opisano język manipulacji danymi Transact-SQL. Obejmuje tworzenie bazy danych, modyfikowanie tabel i ich zawartości, zapytań, indeksów, widoków, wyzwalaczy, procedur składowanych i funkcji zdefiniowanych przez użytkownika.
Pokazano realizację zabezpieczeń wykorzystujących uwierzytelnianie, szyfrowanie i autoryzację. Zwrócono uwagę na automatyzację zadań administracyjnych DBMS. Uważane za stworzenie kopie zapasowe danych i wykonaj przywracanie systemu. Opisuje usługi Microsoft Analysis Services, Microsoft Reporting Services i inne narzędzia analizy biznesowej. Technologia pracy z Dokumenty XML, zarządzanie danymi przestrzennymi, wyszukiwanie pełnotekstowe i wiele więcej. Dla początkujących programistów.

We współczesnym świecie informacja ma najwyższą wartość, ale równie ważna jest umiejętność zarządzania tą informacją. Ta książka dotyczy języka zapytań SQL i zarządzania bazami danych. Materiał prezentowany jest od opisu podstawowych zapytań po złożone manipulacje z wykorzystaniem złączeń, podzapytań i transakcji. Jeśli próbujesz zrozumieć organizację i zarządzanie bazami danych, ta książka będzie doskonałym praktycznym przewodnikiem i zapewni Ci wszystkie niezbędne narzędzia. Funkcja to wydanie to wyjątkowy sposób prezentacji materiałów, który odróżnia serię Head First firmy O'Reilly od wielu nudnych książek o programowaniu.

Z tej książki dowiesz się, jak pracować z poleceniami i instrukcjami SQL, tworzyć i konfigurować relacyjne bazy danych, ładować i modyfikować obiekty bazy danych, uruchamiać zaawansowane zapytania, poprawiać wydajność i budować bezpieczeństwo. Dowiesz się, jak używać instrukcji DDL i interfejsów API, integrować skrypty XML i Java, używać obiektów SQL, tworzyć serwery WWW, pracować z dostępem zdalnym i przeprowadzać transakcje rozproszone.
W tej książce znajdziesz informacje na temat pracy z bazami danych w pamięci, bazami danych przesyłanymi strumieniowo i osadzonymi, bazami danych dla urządzeń mobilnych i przenośnych i wiele więcej.

SQL dla zwykłych śmiertelników to kompletne wprowadzenie do ustrukturyzowanego języka zapytań, napisane specjalnie dla początkujących.

Jeśli nie masz doświadczenia w zarządzaniu bazami danych, ta książka nauczy Cię, jak łatwo i płynnie pracować z SQL, używając prostych zapytań i złożonych operacji. Aby opanować SQL:

— Zrozumienie koncepcji związanych z zarządzaniem bazami danych poprzez krótkie i proste wprowadzenie do relacyjnych baz danych.
— Postępuj zgodnie z tymi instrukcjami, aby używać podstawowych poleceń SQL do wyszukiwania informacji w tabelach danych i manipulowania nimi. Naucz się selekcjonować, podsumowywać i umiejętnie zarządzać danymi.
— Efektywnie pracuj ze złożonymi tabelami danych, stosując zaawansowane techniki zapytań do więcej niż jednej tabeli na raz, konstruując złożone zapytania i podzapytania.
— Twórz nowe tabele danych dla aplikacji biznesowych do handlu. Poznaj ważne zasady efektywnego projektowania baz danych oraz techniki zapewniające integralność i bezpieczeństwo danych.
— Naucz się używać języka SQL w językach programowania, korzystając ze specjalnego rozdziału dla programistów.

SQL jest starszy niż większość z nas, więc nie mogę twierdzić, że przekazuję w tej książce jakieś niezwykłe rzeczy. To, co czyni ten tytuł wyjątkowym, to jego smukły rozmiar. Jeśli szukasz naprawdę kompaktowego, praktycznego przewodnika po języku SQL, ta książka jest dla Ciebie. Dla początkujących starałem się zamknąć ocean w wiadrze, aby w jak najkrótszym czasie wyposażyć ich w wiedzę SQL. Język SQL jest zbyt obszerny i ujawnienie każdego aspektu tego ogromnego języka jest bardzo żmudnym zadaniem. Pomijając najmniej wykorzystywane funkcje, niniejsza książka skupia się na bardziej operacyjnych obszarach języka. Ma on pomóc Ci szybko i samodzielnie nauczyć się języka SQL. Opiera się na podejściu samouczka, w którym znajdują się setki praktycznych ćwiczeń, wzbogaconych ilustracjami, aby nauczyć Cię języka SQL w krótkim czasie. Bez żadnej przesady, książka przedstawi SQL w rekordowym czasie. Książka szczegółowo opisuje bezpłatną platformę nr 1 na świecie DBMS udostępniającą SQL: Oracle Database Express Edition. Wybrałem Oracle XE, ponieważ jego tworzenie, wdrażanie i dystrybucja jest bezpłatne; szybkie pobieranie; i proste w administrowaniu.

Rozpoczęcie pracy z Oracle PL/SQL umożliwia rozpoczęcie korzystania z wbudowanego języka, który musi znać każdy programista Oracle i administrator baz danych. Baza danych Oracle Database zawiera mnóstwo wbudowanych funkcji aplikacji, z których można korzystać bezpłatnie, a język PL/SQL to przepustka do poznania tych funkcji i korzystania z nich na podstawie własnego kodu. Dzięki niemu można scentralizować logikę biznesową w bazie danych, odciążyć logikę aplikacji i zautomatyzować zadania związane z administracją bazami danych i aplikacjami.

Autor Don Bales udostępnia w książce Beginning Oracle PL/SQL szybki i pełen przykładów tutorial. Ucz się na podstawie rozległego doświadczenia Dona, aby odkryć najczęściej używane aspekty PL/SQL, bez marnowania czasu na niejasne i przestarzałe funkcje.

Książka „SQL. Biblia Użytkownika jest wyjątkowa pod tym względem, że każdy rozdział porównuje implementacje standardu języka zapytań SQL w trzech wiodących systemach zarządzania bazami danych. Rezultatem jest kompleksowy i praktyczny przewodnik dla użytkowników baz danych, od początkujących po profesjonalistów. Ta książka o SQL w wygodny sposób łączy teorię z praktyką, zawiera opis nowych technologii i pozwoli zrozumieć liczne niuanse standardu języka zapytań SQL i jego implementacji. Może służyć jako podręcznik - rodzaj pomocy na komputerze stacjonarnym.
— Naucz się podstaw języka zapytań SQL i relacyjnych baz danych
— Opanuj pracę z tabelami, widokami, sekwencjami i innymi obiektami bazy danych
— Naucz się korzystać z transakcji i blokad w środowisku wielu użytkowników
— Poznaj funkcje oferowane przez standard SQL i trzech wiodących dostawców baz danych
— Dowiedz się, jak uzyskać dostęp do metadanych i wdrożyć mechanizmy kontroli bezpieczeństwa baz danych
- Poznaj dodatkowe tematy: integracja SQL z XML, analiza biznesowa OLAP i nie tylko

Jeśli posiadasz podstawowe umiejętności HTML, to z pomocą książki Robina Nixona, doświadczonego programisty i autora wielu bestsellerowych książek na temat webmasteringu, z łatwością nauczysz się tworzyć dynamiczne strony charakteryzujące się wysoki poziom interakcja z użytkownikami.
Odkryj połączenie PHP i MySQL, dowiedz się, jak ułatwiają one tworzenie nowoczesnych stron internetowych i dowiedz się, jak dodać do tych technologii możliwości JavaScriptu, umożliwiając tworzenie zaawansowanych technologicznie aplikacji.
W tym przewodniku omówiono każdą technologię z osobna, pokazano, jak połączyć PHP, MySQL i JavaScript w spójną całość oraz przedstawiono najnowsze koncepcje programowania WWW. Za pomocą szczegółowych przykładów i pytań testowych podanych w każdym rozdziale będziesz w stanie utrwalić przestudiowany materiał w praktyce.

Ten przewodnik pomoże Ci:
— opanować podstawy PHP i programowania obiektowego;
— dokładnie przestudiuj MySQL, zaczynając od struktury bazy danych, a kończąc na kompilacji złożone zapytania;
- tworzyć strony internetowe przy użyciu PHP i MySQL w celu łączenia formularzy i innych komponentów Elementy HTML;
— naucz się JavaScriptu, zaczynając od funkcji i obsługi zdarzeń, a kończąc na dostępie do model obiektowy dokumenty (DOM);
- korzystać z bibliotek i pakietów oprogramowania, w tym systemu Smarty, repozytorium programów PEAR oraz Yahoo! Interfejs użytkownika;
— wykonuj połączenia Ajax i zamień swoją witrynę internetową w wysoce dynamiczne środowisko informacyjne;
— przesyłać pliki i obrazy do serwisu i pracować z nimi, sprawdzać dane wprowadzone przez użytkownika;
— zadbaj o bezpieczeństwo swoich aplikacji.

Zapytania nie działają wystarczająco szybko? Zastanawiasz się nad funkcjami baz danych w pamięci w 2014 roku? Masz dość telefonów od sfrustrowanych użytkowników? Książka Granta Fritcheya SQL Server Query Performance Tuning jest odpowiedzią na problemy z wydajnością zapytań SQL Server. Książka została poprawiona, aby omówić najnowsze funkcje i techniki optymalizacji wydajności, w szczególności nowo dodane funkcje baz danych w pamięci, znane wcześniej pod nazwą kodową Project Hekaton. W tej książce znajdziesz narzędzia potrzebujesz aby podchodzić do zapytań z myślą o wydajności.

Dostrajanie wydajności zapytań SQL Server prowadzi Cię przez zrozumienie przyczyn słabej wydajności, sposobów ich identyfikowania i naprawiania. Dowiesz się, jak aktywnie ustalać wartości bazowe wydajności, korzystając z narzędzi takich jak Monitor wydajności i Zdarzenia rozszerzone. Nauczysz się rozpoznawać wąskie gardła i usuwać je, zanim zadzwoni telefon. Nauczysz się także kilku szybkich rozwiązań, ale nacisk zostanie położony na projektowanie pod kątem wydajności i prawidłowe jej wykonanie oraz zapobieganie problemom, zanim one wystąpią. Zachwyć swoich użytkowników. Wycisz ten dzwoniący telefon. Już dziś wprowadź w życie zasady i wnioski płynące z optymalizacji wydajności zapytań SQL Server.

Obejmuje funkcje pamięci z Project Hekaton
Pomaga ustalić wartości bazowe wydajności i monitorować je
Poradniki dotyczące rozwiązywania problemów i eliminowania wąskich gardeł, które frustrują użytkowników
Czego się dowiesz
— Ustal wartości bazowe wydajności i monitoruj je
— Rozpoznawaj i eliminuj wąskie gardła prowadzące do niskiej wydajności
— W razie potrzeby wdrażaj szybkie poprawki, wdrażając rozwiązania długoterminowe
— Wdrażaj najlepsze praktyki w T-SQL, aby zminimalizować ryzyko wydajności
— Projektuj z myślą o wymaganej wydajności poprzez staranne projektowanie zapytań i indeksów
— Skorzystaj z najnowszych funkcji optymalizacji wydajności w SQL Server 2014
— Zapoznaj się z nowymi funkcjami bazy danych w pamięci, wcześniej nazywanej kodowo Projektem Hekaton

Książka SQL w 10 minut oferuje proste i praktyczne rozwiązania dla tych, którzy chcą szybko uzyskać rezultaty. Po przerobieniu wszystkich 22 lekcji, z których każda zajmie nie więcej niż 10 minut, nauczysz się wszystkiego, czego potrzebujesz, aby ćwiczyć używanie języka SQL. Przykłady podane w książce są odpowiednie dla IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB i Apache OpenOffice Base. Przykłady wizualne pomogą Ci zrozumieć strukturę instrukcji SQL. Wskazówki będą sugerować skróty do rozwiązań. Ostrzeżenia pomogą Ci uniknąć typowych błędów. Dalsze wyjaśnienia zostaną zawarte w uwagach.