Wprowadzenie do SQL Język SQL w programie Access. Kwerenda wybierająca w języku SQL. Typy danych w języku SQL. Wprowadzenie do SQL Użycie kwerend i SQL Funkcjonowanie współczesnych systemów relacyjnych baz danych oparte jest głównie na języku SQL (Structured Query Language, strukturalny język zapytań). SQL jest językiem czwartej generacji, który został w ciągu wielu lat opracowany przez grupę badawcza IBM. Stał się międzynarodowym standardem dla języków baz danych i występuje obecnie w produktach większości liczących się firm, zajmujących się sprzedażą oprogramowania dla baz danych. Ponieważ SQL jest językiem standaryzowanym, dostęp do danych jest możliwy przez wiele różnych platform sprzętowych, w tym komputery osobiste, mikrokomputery i duże komputery. Inna korzyść związana z SQL polega na tym, że takie oprogramowanie jak arkusze kalkulacyjne czy procesory tekstów może importować dane z baz danych opartych na SQL. Polecenia SQL maja postać zbliżoną do zdań w języku angielskim i są stosowane w celu uzyskania dostępu do danych i sterowania operacjami w bazie danych. Użytkownik mający małe doświadczenie w przetwarzaniu danych lub niemający go wcale, może szybko nauczyć się podstawowych konstrukcji SQL, a ekspert od przetwarzania danych może znaleźć w tym języku pełny zestaw potrzebnych mu narzędzi. Zatem jest to język, którego używają zarówno zwykli użytkownicy, jak i fachowcy od przetwarzania danych. • SQL DML (ang. Data Manipulation Language – „język manipulacji danymi”), Strona Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można zaliczyć do jednego z czterech głównych podzbiorów: 1 SQL jest językiem strukturalnym, zdefiniowanym za pomocą reguł składniowych. Występują w nim trzy rodzaje poleceń. Pierwszy to polecenia języka definiowania danych, które umożliwiają tworzenie obiektów bazy danych, takie jak tabela i perspektywy. Drugi rodzaj to polecenia języka operowania danymi, które są używane do wydobywania informacji z bazy danych, usuwania informacji z bazy danych i dodawania ich do niej. Trzeci rodzaj to polecenia języka administrowania danymi, które służą do przyznawania i odwoływania uprawnienia dostępu do bazy danych. Użytkownik może korzystać z poleceń SQL w sposób interakcyjny bądź za pomocą takiego interfejsu jak zapytanie przez przykład ( QBE ). • • • SQL DDL (ang. Data Definition Language – „język definicji danych”), SQL DCL (ang. Data Control Language – „język kontroli nad danymi”). SQL DQL (ang. Data Query Language – „język definiowania zapytań”). Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musi kończyć się znakiem średnika (;). Dodatkowo, niektóre programy do łączenia się z silnikiem bazy danych (np. psql w przypadku PostgreSQL) używają swoich własnych instrukcji, spoza standardu SQL, które służą np. do połączenia się z bazą, wyświetlenia dokumentacji itp. DML DML (Data Manipulation Language) służy do wykonywania operacji na danych – do ich umieszczania w bazie, kasowania, przeglądania oraz dokonywania zmian. Najważniejsze polecenia z tego zbioru to: • • • INSERT – umieszczenie danych w bazie, UPDATE – zmiana danych, DELETE – usunięcie danych z bazy. Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu ('). DDL Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane – czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to: • • • CREATE (np. CREATE TABLE, CREATE DATABASE, ...) – utworzenie struktury (bazy, tabeli, indeksu itp.), DROP (np. DROP TABLE, DROP DATABASE, ...) – usunięcie struktury, ALTER (np. ALTER TABLE ADD COLUMN ...) – zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli). DCL • • GRANT - służące do nadawania uprawnień do pojedynczych obiektów lub globalnie konkretnemu użytkownikowi (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION – przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją pozwalającą mu nadawać prawa do tej tabeli). REVOKE – służące do odbierania wskazanych uprawnień konkretnemu użytkownikowi (np. REVOKE ALL PRIVILEGES ON EMPLOYEE FROM PIOTR - odebranie użytkownikowi wszystkich praw do tabeli EMPLOYEE). DENY. Strona • 2 DCL (Data Control Language) ma zastosowanie do nadawania uprawnień do obiektów bazodanowych. Najważniejsze polecenia w tej grupie to: DQL DQL (Data Query Language) to język formułowania zapytań do bazy danych. W zakres tego języka wchodzi jedno polecenie - SELECT. Często SELECT traktuje się jako część języka DML, ale to podejście nie wydaje się właściwe, ponieważ DML z definicji służy do manipulowania danymi - ich tworzenia, usuwania i uaktualniania. Na pograniczu obu języków znajduje się polecenie SELECT INTO, które dodatkowo modyfikuje (przepisuje, tworzy) dane. Język zapytań SQL.1 Dzięki kwerendom (zapytaniom) w Access możemy uzyskać określone informacje z bazy danych. Język SQL jest najpopularniejszym językiem zapytań w różnych systemach baz danych. Możemy za pomocą komend SQL tworzyć kwerendy i wydawać polecenia w bazach danych. Zasady pisania poleceń. • • • • • • • • • • 1 http://www.naukainformatyki.pl/index.php?option=com_content&view=category&id=44:access&Itemid=75&l ayout=default 3 • nazwy poleceń piszemy dużymi literami (np. SELECT). Można pisać też małymi gdy odwołujemy się do pól jednej tabeli używamy nazwy tego pola (Nazwisko). Gdy odwołujemy się do pól kilku tabel dodajemy też nazwę tabeli z kropką (Liceum.Nazwisko). jeśli nazwy pól są wielowyrazowe, to przy odwołaniach ujmujemy je w nawiasy kwadratowe ([Data zadania], Zadania.[Data zadania] lub [Tabela zadań].[Data zadania] ) przy odwołaniach do kilku pól oddzielamy je od siebie przecinkiem (nazwisko, Imie, DataUrodzenia zapytania można pisać w jednym wierszu lub w wielu wierszach podczas wpisywania kryteriów liczby wpisujemy normalnie (2 lub 3,14) teksty w cudzysłowach („Krosno”) daty pomiędzy znakiem # (#2004-09-01#) operatory arytmetyczne +, -, *, / operatory porównań =, <, <=, <>, >, >= operatory logiczne AND, OR, NOT argumenty poleceń można podawać w sposób opcjonalny w nawiasach kwadratowych – przed wykonaniem polecenia pojawia się pytanie np. [Podaj parametr] można stosować funkcje agregujące AVG() – średnia arytmetyczna, COUNT() – liczba rekordów, SUM() – suma wartości zawartych w polu, MAX() i MIN() – największa i najmniejsza wartość w polu instrukcja warunkowa w postaci IIF (warunek, JeśliPrawda, JeśliFałsz) na końcu polecenia SQL wpisujemy średnik Strona • • Niektóre polecenia z języka SQL Wyszukiwanie danych przy użyciu instrukcji SELECT Polecenie SELECT umożliwa wyświetlenie wierszy i kolumn z jednej lub kilku tabel. W połączeniu z funkcjami może wykonywać operacje na danych tj.: obliczenia, formatowanie wyników i tworzenie podsumowania. Składnia: SELECT kolumna1,kolumna2 FROM tabela; Przykład: SELECT * FROM departments; SELECT first_name, last_name FROM employees; Po poleceniu SELECT podajemy kolumny które chcemy wyświetlić. W przypadku * wybierane są wszystkie kolumny z tabeli. Po klauzuli FROM wpisujemy nazwę tabeli z jakiej wypisać chcemy dane. Słowo kluczowe DISTINCT Słowo kluczowe DISTINCT służy do wyświetlenia wartości bez ich powtórzeń. Stosowane jest w przypadku gdy interesuje nas jakie wartości występują w kolumnie a nie ich częstość występowania. Składnia: SELECT [DISTINCT] kolumna1, kolumna2 FROM tabela; Przykład: SELECT department_id FROM employees; Przykład wypisze numery departamentów przypisane do pracowników, wyświetlając powtarzające się numery działów. Aby wypisać pojedyncze numery departamentów skorzystamy z nowo poznanego słowa DISTINCT. SELECT DISTINCT department_id FROM employees; Użycie słowa DISTINCT spowoduje usunięcie zdublowanych numerów. Aliasy kolumn W przypadku wybrania kolumny o mało intuicyjnej lub trudnej nazwie możemy wypisać alias dla kolumny z użyciem słowa AS. Składnia: SELECT kolumna1, kolumna2 [AS alias] FROM tabela; Przykład: SELECT department_name AS departament FROM departments; SELECT department_name AS "Nazwa Departamentu" FROM departments; Strona Wynik zapytań możemy filtorwać poprzez spełnienie określonych warunków umieszczonych za klauzulą WHERE. Warunki mogą być połączone za pomocą opertorów. Składnia: SELECT kolumna1, kolumna2 FROM tabela [WHERE warunek1]; Przykład: SELECT last_name, salary FROM employees WHERE salary > 10000; SELECT last_name, salary FROM employees WHERE salary > 10000 AND 4 Filtrowanie wierszy department_id = 80; SELECT last_name, salary FROM employees WHERE salary > 10000 AND department_id = 80 order by salary desc; W przykładzie pierwszym wypisano nazwiska i płace praconików zarabiających powyżej 10 tys. W drugim przykładzie przy użyciu słowa AND dodano kolejny wymagany warunek – wybierano pracowników pracujących w dziale numer 80. Trzeci przykład dodatkowo sortuje wypisane wyniki od największej pensji do najmniejszej. Sortowanie Wyniki zapytań sortować stosujemy przez klauzule ORDER BY umieszoną zawsze na końcu zapytania. Chcąc odwrócić wynik sortowania stosujemy dodatkowe słowo DESC. Składnia: SELECT kolumna1, kolumna2 FROM tabla1 ORDER BY kolumna1 [DESC|ASC]; Przykład: SELECT last_name, salary FROM employees ORDER BY salary DESC; SELECT last_name, salary FROM employees ORDER BY last_name, salary; Przykład pierwszy wypisze pracowników i ich pensje posortowane od największej do najmniejszej. Wynik zapytania drugiego wyświetli nazwiska pracowników i ich pensje posortowane wg nazwisk i pensji. Oznacza to że podczas sortowania wg nazwisk trafią się pracownicy o takim samym nazwisku zostaną ułożeni dodatkowo wg wysokości pensji. Posługiwanie się funkcjami numerycznymi –wybrane funkcje Funkcja ROUND Funkcja zaokrągla wartość x do y miejsc po przecinku. Domyślna wartość y to 0. Składnia: SELECT ROUND (x,[,y]) FROM tabela1; Przykład: SELECT ROUND(3.1415,2) FROM DUAL; Zaokrągla liczbę 3.1415 do dwóch miejsc po przecinku. Wynik to 3.14 Funkcja SQRT Strona Podnosi wartość x do potęgi y. Składnia: SELECT POWER (x,y) FROM tabela1; Przykład: SELECT POWER(2,4) FROM DUAL; Podniesienie wartości 2 do potęgi czwartej. Wynik to 16 5 Funkcja POWER Pierwiastek kwadratowy z wartości x. Składnia: SELECT SQRT(x) FROM tabela1; Przykład: SELECT SQRT(16) FROM DUAL; Funkcja ABS Wartość bezwzględna wartości x. Składnia: SELECT ABS(x) FROM tabela1; Przykład: SELECT ABS(-12) FROM DUAL; Zapytanie zwróci wartość bezwzględną argumentu, czyli 12. Funkcja MOD Reszta z dzielenia x przez y. Jeśli wartość y jest równa 0 funkcja zwróci x. Składnia: SELECT MOD(x,y) FROM tabela1; Przykład: SELECT MOD(5,3) FROM DUAL; Zapytanie zwróci reszte z dzielenia 5 przez 3 – w wyniku otrzymamy wartość 2. Omówienie zasad związanych z grupowaniem danych Strona 6 Grupowanie polega na podzieleniu zbioru wierszy na grupy, które mają pewną wspólną cechę. Grupowania wykonujemy w celu użycia funkcji agregujących nie w stosunku do całego zbioru wierszy, ale do poszczególnych grup wierszy. Do zgrupowania używamy nową klauzulę GROUP BY wraz z wyborem kolumny lub wyrażenia, według którego mają być pogrupowane wiersze. Na liście klauzuli SELECT mogą się znaleźć tylko kolumny i wyrażenia, według których zapytanie jest grupowane, oraz wywołania funkcji agregujących. Składnia SELECT kolumna1, kolumna2 FROM tabela1 GROUP BY(kolumna1); Przedstawienie funkcji agregujących MAX- Funkcja służąca do wybrania maksymalnej wartości z grupy wybranych wierszy. MIN- Funkcja służąca do wybrania minimalnej wartości z grupy wybranych wierszy. AVG- Funkcja służąca do wybrania średniej wartości z grupy wybranych wierszy. SUM- Funkcja służąca do wybrania sumy wartości z grupy wybranych wierszy. COUNT- Funkcja zliczająca liczbę wybranych wierszy z kolumny podanej w argumencie. Np. Składnia: SELECT y, MAX(x) FROM tabela1 GROUP BY y; Przykład: SELECT manager_id, MAX(salary) FROM employees group by manager_id; Sortowanie i filtrowanie pogrupowanych danych w zestawie wyników Przed dokonaniem grupowania można zastosować filtrowanie z użyciem klauzuli WHERE,która wybierze tylko część wierszy z tabeli. Klauzula WHERE wykonuje się przed grupowaniem, więc nie można w tej klauzuli sprecyzować warunku zawierającego funkcje grupowe. Aby taki warunek zawrzeć w zapytaniu należy zastosować dodatkową klauzulę HAVING wraz z odpowiednim warunkiem. Jest ona odpowiednikiem klauzuli WHERE, tylko, że wykonuje się ona po procesie grupowania. Składnia SELECT kolumna1, kolumna2 FROM tabela1 GROUP BY(kolumna1) HAVING warunek1; Przykład: SELECT manager_id, MAX(salary) FROM employees GROUP BY manager_id HAVING MAX(salary)> 10000; Przykładowe kwerendy będą oparte o tabelę STUDENCI. Proste kwerendy wybierające SELECT * FROM Studenci; Strona Z tabeli Studenci wybieramy pola nazwisko i Imie 7 SELECT Nazwisko, Imie FROM Studenci; Z tabeli Studenci wybieramy wszystkie pola SELECT * FROM Studenci ORDER BY Nazwisko; Z tabeli Studenci wybieramy wszystkie pola i sortujemy według pola Nazwisko SELECT * FROM Studenci ORDER BY Nazwisko DESC; Sortujemy według pola Nazwisko według odwrotnej kolejności SELECT DISTINCT Imie FROM Studenci; Usuwanie duplikatów. Tabela z imionami. Każde imię zostanie wypisane tylko jeden raz Zastosowanie kryteriów wybierania SELECT * FROM Studenci WHERE Miasto=”Krosno”; wyświetlamy wszystkie pola tabeli ale rekordy dla których miasto jest równe Krosno SELECT * FROM Studenci WHERE Miasto<>”Krosno” AND Imie=”Anna”; wyświetlamy wszystkie pola tabeli, a rekordy osób które nie mieszkają w Krośnie i mają na imię Anna SELECT * FROM Studenci WHERE Ocena BETWEEN 3,5 AND 4,5; rekordy osób dla ocen z przedziału 3,5 i 4,5 SELECT * FROM Studenci WHERE Miasto LIKE “K*”; rekordy dla osób mieszkających w mieście zaczynającym się na literę K * - zastępuje dowolną liczbę znaków ? – zastępuje pojedynczy znak UWAGA! LIKE można zastąpić konstrukcją: Miasto >=”Ka” And Miasto <=”Kz” SELECT * FROM Studenci WHERE Miasto IN (”Krosno”, ”Kielce”, „Płock”); osoby mieszkające w jednym z trzech wybranych miast Tworzymy nowe pole Strona Wyświetlamy dodatkową kolumnę o nazwie podatek, która wylicza 22% z pola dochód 8 SELECT Nazwisko, Imie, [Dochod]*0,22 AS Podatek FROM Studenci; Instrukcja warunkowa SELECT NAZWISKO, IMIE, IIF([olimpiada]="T","olimpijczyk";””) AS płeć FROM studenci; Jeśli jest olimpijczykiem, to w nowym polu pojawia się napis OLIMPIJCZYK Wybieranie danych z kilku tabel SELECT Kontakty.Nazwisko, Kontakty.Imie, Zadania.Data FROM Kontakty, Zadania WHERE Kontakty.IDOsoby=Zadania.IDOsoby; Połączenie dwóch tabel za pomocą klucza IDOsoby Funkcje agregujące SELECT Count(*) AS [Nie zdali] FROM Studenci WHERE Zdal=”nie”; Oblicza liczbę studentów, którzy nie zdali egzaminu. Wynik w nowym polu o nazwie Nie zdali SELECT Min(dochod) AS [mini], Max(dochod) as [maks] FROM Studenci WHERE zdal="nie"; Tworzy dwa pola w których zapisana jest informacja o minimalnych i maksymalnych dochodach studentów, którzy nie zdali Grupowanie rekordów SELECT Miasto, Count(Miasto) AS [Liczba osób] FROM Studenci GROUP BY Miasto; tabela zawiera dwa pola Miasto i Liczba osób, w której podana jest informacja o liczbie osób mieszkających w danej miejscowości Modyfikowanie danych UPDATE Studenci SET Zdal=”tak” WHERE Imie=”Anna”; Jeśli osoba w tabeli Studenci ma na imię Anna pole Zdal będzie równa TAK – wszystkie Anie zdały egzamin Strona Przed wykonaniem polecenia pojawia się pytanie o imię, które można wpisać z klawiatury 9 UPDATE Studenci SET Zdal=”tak” WHERE Imie=[Podaj imię osoby]; DELETE FROM Studenci WHERE Imie=”Anna”; Usunięte zostaną wszystkie rekordy w których pole imię jest równe Anna Tworzenie nowej tabeli SELECT Nazwisko, Imie, Miasto INTO Persona FROM Studenci WHERE Zdal="nie"; tworzymy nową tabelę o nazwie PERSON i wklejamy do niej pola NAZWISKO, IMIE i MIASTO dla studentów, którzy nie zdali egzaminu warunkowe SELECT NAZWISKO, IMIE, IIF([olimpiada]="T","olimpijczyk") AS OLIMP FROM studenci; w nowym polu PŁEĆ pojawia się napis ”olimpijczyk” jeśli osoba startowała w olimpiadach SELECT NAZWISKO, IMIE, IIF([plec]="K","kobieta","mężczyzna") AS PŁEĆ FROM studenci; w nowym polu płeć pojawia się napis kobieta lub mężczyzna w zależności od zawartości pola PLEC SELECT NAZWISKO, IMIE, IIF(left([szkola],1)="L","liceum","reszta") AS SZKÓŁKA FROM studenci; w nowym polu pojawia się napis liceum albo reszta w zależności od tego dokąd uczęszczał student SELECT NAZWISKO, IMIE, IIF([zam]="W",[punkty]+2,[punkty]) AS PUNKTACJA FROM studenci WHERE [szkola]="LO"; jeśli osoba mieszka na wsi to w nowym polu powiększamy punkty o 2, jeśli jest z miasta to zostawiamy punkty. wyświetlamy osoby które kończyły ogólniak SELECT NAZWISKO, IMIE, IIF(left([szkola],1)="L","liceum", IIF(left([szkola],1)="T","technikum", "zawodowa")) AS SZKÓŁKA FROM studenci; wyświetla w nowym polu napis liceum, technikum, zawodowa w zależności od ukończonej szkoły Strona SELECT Count(*) AS [Nie zdali] FROM Studenci WHERE Zdal="nie"; 10 agregujące liczba studentów, którzy nie zdali SELECT Min(dochod) AS [mini], Max(dochod) as [maks] FROM Studenci WHERE zdal="nie"; w polach minimalne i maksymalne dochody SELECT count(*) AS [ILE_KOBIET] FROM studenci WHERE [plec]="K"; w nowym polu wyświetl liczbę kobiet w tabeli SELECT count(*) AS [ILE_IMION] FROM studenci WHERE [imie]=[Podaj imię kobiety]; wyświetl zapytanie o imię osoby i wyświetl liczbę osób o tym imieniu SELECT sum([punkty]) AS [suma punktów] FROM studenci WHERE [imie]=[Podaj imię kobiety]; wyświetl sumę punktów, które zdobyły kobiety o podanym w zapytaniu imieniu SELECT avg([dochod]) AS [dochody] FROM studenci WHERE YEAR([urodzony])=1974; Wyświetl średnią z dochodów dla osób urodzonych w roku 1974 SELECT count(*) AS [imiona] FROM studenci WHERE len([imie])=5; Wyświetl ilość imion dokładnie z pięcioma literami Info przydatne do kwerend Operatory-wykorzystywane do tworzenia warunków i wyrażeń pól obliczeniowych Konkretne przykłady z zastosowaniem poniższych operatorów i funkcji znajdują się na kolejnych slajdach.(duże i małe litery nie są rozróżnialne przez program Access, w tym opracowaniu dla lepszej czytelności zapisu, nazwy funkcji i operatorów pisane są z litery dużej) Najczęściej używane operatory: • Arytmetyczne * mnożenie, / dzielenie , ^ potęgowanie , np. 4^2=16 (jako 42) , + dodawanie, Porównania = równe, <> różne, > większe, >= większe bądź równe , < mniejsze, <= mniejsze bądź równe, Strona • 11 - odejmowanie , Mod - reszta z dzielenia np. 9 Mod 2 = 1 Between ... and ... ( pomiędzy jednym a drugim) , np. Between 1 And 5 określa zbiór liczb [1; 2; 3; 4; 5] Is Null - porównujący zawartość pola z wartością Null (sprawdza czy pole jest puste ) • Logiczne And -koniunkcja (i), Or-alternatywa (lub) , Not- negacja (nie) • Operatory pracujące na łańcuchach tekstowych Like – tworzenie wzorca., & konkatenacja czyli łączenie łańcuchów. Funkcje wbudowane dostępne z menu kontekstowego (uaktywnianego prawym opcją Buduj, lub do wpisania ręcznego • przyciskiem ) Daty i czasu Date() - wynikiem jest bieżąca data, Year(Date()) wynikiem jest bieżący rok , lub Year(2003-01-01) wynik 2003 • • **Arytmetyczne Abs(liczba) - wynikiem jest wartość absolutna ( bezwzględna ) liczby **Tekstowe Len(słowa)=5 Left(komputer;2)= ‘ko” • itp.. zwraca długość słowa wyrażoną ilością znaków tego słowa zwraca podaną ilość znaków tekstu od lewej strony Logiczne iif (warunek ; wyrażenie jeśli prawdziwy warunek; wyrażenie jeśli fałszywy warunek) Funkcji tej używamy jęśli mamy do wyboru dwa różne działania, w zależności od prawdziwości warunku • **Agregujące Min(..), Max(..), Średnia(..), Suma(..), Pierwszy(..), Ostatni(..), Policz(..) np. Min([Cena]) wybierająca najniższą wartość z pola Cena Funkcje agregujące stosowane są między innymi w zapytaniach podsumowujących, Policz([Telefon])– zliczająca ilość wierszy w tabeli źródłowej z wpisanym telefonem Kwerendy obliczeniowe Różne_podatki : iif ([Czy lektura]=prawda ; [Cena ]*0,07 ; [Cena]*0,22) Oblicza podatek 7% z ceny dla lektur, a 22% dla książek które nie są lekturami Strona wiek : Year(Date()) - Year([Data urodzenia]) - oblicza wiek osoby, gdzie [Data urodzenia] jest nazwą pola z tabeli czytelnicy 12 Przykłady: Imię i naz : [Imie]&” ”&[Nazwisko] Tworzy nowe pole z imieniem i nazwiskiem oddzielonymi spacją Typy danych SQL Typy danych języka Structured Query Language (SQL) w aparacie bazy danych programu Microsoft Access obejmują 13 podstawowych typów danych definiowanych przez aparat bazy danych Microsoft Access oraz kilka prawidłowych synonimów tych typów. Rozmiar BINARY 1 bajt na znak BIT 1 bajt TINYINT 1 bajt MONEY 8 bajtów DATETIME (zobacz DOUBLE) 8 bajtów UNIQUEIDENTIFIER 128 bitów REAL 4 bajtów FLOAT 8 bajtów SMALLINT 2 bajtów INTEGER 4 bajtów DECIMAL 17 bajtów TEXT 2 bajty na Opis W polu tego typu może być przechowywany dowolny rodzaj danych. Nie jest dokonywana żadna translacja danych (np. na tekst). Sposób prezentacji danych zależy od sposobu ich umieszczenia w polu. Wartości Tak i Nie oraz pola zawierające tylko jedną z dwóch wartości. Liczba całkowita z przedziału od 0 do 255. Liczba całkowita z przedziału od – 922 337 203 685 477,5808 do 922 337 203 685 477,5807. Wartość daty lub godziny z przedziału lat od 100 do 9999. Unikatowy numer identyfikacyjny wykorzystywany przy zdalnym wywoływaniu procedur. Wartość zmiennoprzecinkowa o pojedynczej precyzji mieszcząca się w przedziale od – 3,402823E38 do – 1,401298E-45 dla wartości ujemnych, od 1,401298E-45 do 3,402823E38 dla wartości dodatnich, oraz 0. Wartość zmiennoprzecinkowa o podwójnej precyzji należąca do zakresu od – 1,79769313486232E308 do – 4,94065645841247E-324 dla wartości ujemnych, od 4,94065645841247E-324 do 1,79769313486232E308 dla wartości dodatnich, oraz 0. Liczba całkowita krótka z przedziału od –32 768 do 32 767. Liczba całkowita długa z przedziału od –2 147 483 648 do 2 147 483 647. Dokładny numeryczny typ danych, który obsługuje wartości od 1028 – 1 do – 1028 – 1. Można określić zarówno dokładność (1 – 28), jak i skalę (0 – ustalona precyzja). Domyślna precyzja i skala wynoszą odpowiednio 18 i 0. Od zera do maksymalnie 2,14 gigabajta. Strona Typ danych 13 W tabeli poniżej zestawiono podstawowe typy danych. CHARACTER Opis Od zera do maksymalnie 2,14 gigabajta. Stosowany do obiektów OLE. Od zera do 255 znaków. 14 IMAGE Rozmiar znak (zobacz Uwaga) Zależnie od wymagań 2 bajty na znak (zobacz Uwaga) Strona Typ danych