Wprowadzenie do języka T-SQL. Michał Bleja

Podobne dokumenty
Kopie zapasowe w SQL Server. Michał Bleja

Paweł Rajba

Systemy GIS Tworzenie zapytań w bazach danych

SQL Server. Odtwarzanie baz danych.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Relacyjne bazy danych. Podstawy SQL

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Widok Connections po utworzeniu połączenia. Obszar roboczy

Autor: Joanna Karwowska

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Administracja i programowanie pod Microsoft SQL Server 2000

Autor: Joanna Karwowska

Wykład 6. SQL praca z tabelami 3

Nowe technologie baz danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Wykład 8. SQL praca z tabelami 5

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

LAB 3 (część 1 Projektu)

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

3. Podzapytania, łączenie tabel i zapytań

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Bazy danych. Dr inż. Paweł Kasprowski

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Bazy danych 7. SQL podstawy

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

SQL (ang. Structured Query Language)

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

1 Instalowanie i uaktualnianie serwera SQL Server

Bazy danych. Polecenia SQL

Przestrzenne bazy danych Podstawy języka SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Wykład 5. SQL praca z tabelami 2

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Język SQL, zajęcia nr 2

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Microsoft SQL Server Podstawy T-SQL

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Autor: Joanna Karwowska

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Grupowanie i funkcje agregacji

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Ref. 7 - Język SQL - polecenia DDL i DML

Przygotowanie bazy do wykonywania kopii bezpieczeństwa

Autor: Joanna Karwowska

ACESS- zadania z wykorzystaniem poleceń SQL

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 2. SQL 1 Structured Query Lenguage

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Podyplomowe Studia Systemy informatyczne w logistyce

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Administracja i programowanie pod Microsoft SQL Server 2000

Tuning SQL Server dla serwerów WWW

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Wykład 05 Bazy danych

Programowanie obiektów

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Wykład 4. SQL praca z tabelami 1

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Zarządzanie strukturą bazy danych Oracle11g

Przykładowa baza danych BIBLIOTEKA

SQL w praktyce. Miłej i owocnej nauki!!!

Bazy danych 5. Samozłaczenie SQL podstawy

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Zadania z SQLa (MS SQL Server)

Tworzenie baz danych i tabel

Oracle PL/SQL. Paweł Rajba.

Optymalizacja poleceń SQL Metody dostępu do danych

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Bazy danych 10. SQL Widoki

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Bazy danych SQL Server 2005

Język SQL podstawy zapytań

Transkrypt:

Wprowadzenie do języka T-SQL Michał Bleja

Składnia polecenia SELECT SELECT ALL DISTINCT lista_select FROM lista_from WHERE warunki_selekcji_dla_wierszy GROUP BY wyrażenie HAVING warunki_selekcji_dla_grup ORDER BY wyrażenie ASC DSC

Przykłady poleceń SELECT W ramach wykładu użyto bazy AdventureWorks firmy Microsoft SELECT * FROM Person.Person SELECT FirstName, LastName, Title FROM Person.Person SELECT FirstName, LastName, Title FROM Person.Person WHERE LastName LIKE '_o%' AND Title IS NOT NULL _ - dowolny jeden znak, % - 0 lub więcej znaków

Złączenia (JOINS) --iloczyn kartezjański (cross join) SELECT * FROM Person.Person, HumanResources.Employee --złączenie wewnętrzne (inner join) SELECT p.firstname, p.lastname, e.jobtitle, e.hiredate FROM Person.Person p JOIN HumanResources.Employee e ON p.businessentityid=e.businessentityid --lewe złączenie (left outer join), uwzględnia rekordy z lewej tabeli nie mające odpowiedników w prawej tabeli SELECT p.firstname, p.lastname, e.jobtitle, e.hiredate FROM Person.Person p LEFT JOIN HumanResources.Employee e ON p.businessentityid=e.businessentityid

Klauzula ORDER BY --sortowanie w porządku rosnącym (asc, ascending order) SELECT FirstName, LastName, Title FROM Person.Person ORDER BY LastName --sortowanie w porządku malejącym (desc, descending order) SELECT FirstName, LastName, Title FROM Person.Person WHERE Title IS NOT NULL ORDER BY LastName desc, FirstName asc

Funkcje agregujące Zwracają wiersz podsumowania dla każdej grupy wierszy Stosowane często z klauzulą GROUP BY. Bez tej klauzuli wszystkie wiersze stanowią jedną grupę i funkcja zwraca jeden wiersz podsumowania AVG zwraca wartość średnią z danego zbioru MIN, MAX zwraca odpowiednio wartość najmniejszą i największą z danego zbioru SUM - oblicza sumę elementów z danego zbioru COUNT zwraca liczbę elemntów w zbiorze

Funkcje agregujące SELECT COUNT(*) FROM Person.Person SELECT COUNT(distinct FirstName) FROM Person.Person SELECT AVG(Rate),SUM(Rate) FROM HumanResources.EmployeePayHistory SELECT MIN(HireDate), MAX(HireDate) FROM HumanResources.Employee WHERE gender = 'M'

Klauzula GROUP BY --GROUP BY pozwala podzielić wiersze zwrócone przez zapytanie na grupy, w ramach każdej grupy liczona jest wówczas funkcja agregująca SELECT DepartmentID, COUNT(*) FROM HumanResources.EmployeeDepartmentHistory WHERE EndDate IS NULL GROUP BY DepartmentID UWAGA wszystkie wyrażenia po SELECT z wyjątkiem funkcji agregujących muszą zawsze wystąpić po GROUP BY

Klauzula HAVING --HAVING pozwala dokonać operacji selekcji na grupach SELECT DepartmentID, COUNT(*) FROM HumanResources.EmployeeDepartmentHistory WHERE EndDate IS NULL GROUP BY DepartmentID HAVING COUNT(*)>100

Zapytania zagnieżdżone (nested queries) --zapytanie zagnieżdżone to instrukcja select, która zawiera w sobie inną instrukcję select (zwaną podzapytaniem) Zapytania niezależne (nieskorelowane) zapytanie wewnętrzne nie odwołuje się do zapytania zewnętrznego SELECT p.firstname, p.lastname FROM Person.Person p JOIN HumanResources.Employee e ON p.businessentityid=e.businessentityid WHERE e.birthdate = (SELECT MIN(BirthDate) FROM HumanResources.Employee)

Zapytania zagnieżdżone (nested queries) Zapytania skorelowane zapytanie wewnętrzne odwołuje się do zapytania zewnętrznego SELECT p.firstname, p.lastname FROM Person.Person p JOIN HumanResources.Employee e ON p.businessentityid=e.businessentityid WHERE e.birthdate = (SELECT MIN(BirthDate) FROM HumanResources.Employee WHERE gender=e.gender)

Podstawowe typy danych Znakowe typy danych CHAR(rozmiar), NCHAR(rozmiar) VARCHAR(rozmiar), NVARCHAR(rozmiar) Liczbowe typy danych INT, SMALLINT, FLOAT, REAL, NUMERIC(p, [s]) Typy pieniężne MONEY, SMALLMONEY Typy dla daty i czasu DATE, TIME, DATETIME

Instrukcja - CREATE TABLE CREATE TABLE Employee( Emp_id int IDENTITY(1,1) CONSTRAINT PK_Emp_id PRIMARY KEY, Code char(5) CONSTRAINT U_Code UNIQUE, FirstName varchar(25) NOT NULL, LastName varchar(30) NOT NULL, BirthDate date NOT NULL, Gender char(1) CONSTRAINT CH_Gen CHECK(gender='M' OR gender='f'), Manager_id int, CONSTRAINT FK_Mgr_id FOREIGN KEY(manager_id) REFERENCES Employee(emp_id))

Ograniczenia integralnościowe PRIMARY KEY wartości wstawiane do kolumny muszą być unikalne, niedozowolone są wartości NULL Emp_id int IDENTITY(1,1) CONSTRAINT PK_Emp_id PRIMARY KEY FOREIGN KEY wartości wstawiane do kolumny muszą być zgodne z wartościami kolumny klucza głównego, do którego klucz obcy się odnosi CONSTRAINT FK_Mgr_id FOREIGN KEY(manager_id) REFERENCES Employee(emp_id) UNIQUE - wartości wstawiane do kolumny muszą być unikalne Code char(5) CONSTRAINT U_Code UNIQUE CHECK wartości wstawiane do kolumny muszą spełniać określone warunki Gender char(1) CONSTRAINT CH_Gen CHECK(gender='M' OR gender='f') NOT NULL wartości NULL są niedozwolone

ALTER TABLE modyfikacja tabel CREATE TABLE Phone( phone_id int IDENTITY(1,1) NOT NULL, number varchar(20) NOT NULL) --Dodanie kolumny ALTER TABLE Phone ADD type varchar(2) --Modyfikacja kolumny ALTER TABLE Phone ALTER COLUMN type char(1) NOT NULL --Dodanie ograniczenia ALTER TABLE Phone ADD CONSTRAINT PK_APhone_id PRIMARY KEY(phone_id)

Tworzenie baz danych w SQL Server Michał Bleja

Definicja bazy danych Baza danych zbiór plików przechowywanych na dysku. SQL Server wymaga co najmniej dwóch plików: Pliku danych (ang. primary data file, *.mdf) przechowuje informacje startowe dla bazy, dane i obiekty użytkownika, wskazuje pozostałe pliki danych (ang. secondonary data files, *.ndf) Pliku logu (ang. log file, *.ldf) rejestruje wszystkie zmiany na bazie danych - może rosnąć do nieskończoności

Strony i ekstenty Strona ma rozmiar 8kB i jest podstawową jednostką alokacji (SQL Server odczytuje i zapisuje całe strony) Pliki danych zawierają strony ponumerowane od 0 do n Ekstent składa się z 8 ciągłych stron (ma więc rozmiar 64kB) Eksteny są stosowane w celu ułatwienia zarządzania stronami Ekstent może składować dane jego obiektu Każda strona ekstentu może również składować dane innego obiektu

Plik logu Plik logu jest zapisywany w porządku chronologicznym (w sposób kolisty). Każdy wpis w logu ma swój unikalny numer LSN (ang. log sequence number). Numery nadawane są w porządku rosnącym. MinLSN numer najstarszej aktywnej transakcji aktywna część logu LSN 123 LSN 124 LSN 125 LSN 126 LSN 127 LSN 128 LSN 129 LSN 130 LSN 140 nieaktywna część logu Załóżmy że LSN127 to MinLSN

Pliki danych (zawiera dane składowane w bazie) Zalety stosowania kilku plików danych: Pliki można przechowywać na klilku dyskach celem przyspieszenia operacji I/O Można utworzyć macierz RAID i zlecić macierzy optymalizację I/O Łatwiej zarządzać kopiami zapasowymi

Grupy plików Grupa plików logiczna struktura, która obejmuje zestaw plików W bazie zawsze istnieje grupa PRIMARY (zawiera główny plik bazy danych, wszystkie strony systemowych obiektów) Można tworzyć dodatkowe grupy plików. Zalety stosowania grup plików: Pozwalają umieszczać obiekty i dane w odpowiednich plikach Ułatwiają wykonywanie kopii zapasowych i operacje odtwarzania

Tworzenie plików danych Należy wyspecyfikować rozmiar i nazwę pliku Można wskazać, że SQL Server będzie automatycznie powiększał plik o określoną wartość Plik zostaje przypisany do odpowiedniej grupy plików

Tworzenie bazy danych bez podania plików Plik danych ma rozmiar pliku danych bazy model Plik logu ma rozmiar równy max{512kb, 25%*size(plik danych)} CREATE DATABASE demo1db; --Sprawdź nazwy i rozmiary plików SELECT name, size*1.0/128 FROM sys.master_files WHERE name = N'demo1DB'; GO

Tworzenie bazy danych CREATE DATABASE demo2db ON (NAME = demo2db, FILENAME = 'D:\demo2DB\data\demo2DB.mdf', SIZE = 3072KB, FILEGROWTH = 1024KB ) LOG ON (NAME = demo2db_log, FILENAME = 'D:\demo2DB\log\demo2DB_log.ldf', SIZE = 1024KB, FILEGROWTH = 10%)

Tworzenie bazy danych z dwoma grupami plików CREATE DATABASE demo3db ON PRIMARY (NAME = demo3db1, FILENAME = 'D:\demo3DB\data\demo3DB1.mdf', SIZE = 10240KB, FILEGROWTH = 0), FILEGROUP FG2 (NAME = demo3db2, FILENAME = N'D:\demo3DB\data\demo3DB2.ndf', SIZE = 10240KB, FILEGROWTH = 1024KB ) LOG ON (NAME = demo3db_log, FILENAME = 'D:\demo3DB\log\demo3DB_log.ldf', SIZE = 5120KB, FILEGROWTH = 10%)

Dodawanie plików i grup plików ALTER DATABASE demo3db ADD FILEGROUP FG3 ALTER DATABASE demo3db ADD FILE (NAME = demodb3, FILENAME = 'D:\demo3DB\data\demo3DB3.ndf', SIZE = 5120KB, FILEGROWTH = 1024KB ) TO FILEGROUP FG3 --FG2 będzie domyślną grupą plików ALTER DATABASE demo3db MODIFY FILEGROUP FG2 DEFAULT

Opcje bazy danych model odzyskiwania ALTER DATABASE demo3db SET RECOVERY FULL Model odzyskiwania (ang. recovery model) FULL Wszystkie zmiany są rejestrowane w logu (wmaga kopii zapasowych logu, można odtworzyć bazę do punktu w czasie, w szczególności do momentu awarii) SIMPLE Wszystkie zmiany są rejestrowane w logu (CHECKPOINT usuwa nieaktywną część logu, brak możliwości wykonania kopii logu, zmiany od ostatniej pełnej kopii nie są chronione)

Opcje bazy danych model odzyskiwania BULK-LOGGED ogranicza rejestrowanie operacji masowych Nie można odtworzyć bazy do punktu w czasie, w którym nastąpiło ograniczone rejestrowanie, wymagane są kopie logu.

Opcje bazy danych PAGE_VERIFY CHECKSUM przed zapisem strony na dysk liczona jest jej suma kontrolna i zapisywana w nagłówku. Po odczytaniu strony SQL Server ponownie oblicza sumę i porównuje z wartością zapisaną w nagłówku. Błąd 824 jest generowany do logu SQL Server i Windows Event Log jeśli sumy się nie zgadzają AUTO_CLOSE implikuje zamknięcie bazy i zwolnienie jej zasobów po zakończeniu wszystkich połączeń AUTO_SHRINK implikuje automatyczne zmniejszanie plików, w których ilość wolnej przestrzeni przekracza 25%

Opcje bazy danych AUTO_CREATE_STATISTICS statystyki na kolumnach występujących w predykatach będą generowane automatycznie dla optymalizatora AUTO_UPDATE_STATISTICS przestarzałe statystyki dla optymalizatora będą uaktualniane automatycznie AUTO_UPDATE_STATISTICS_ASYNC określa czy statystyki są uaktualniane synchronicznie lub asynchronicznie (optymalizator nie czeka na aktualne statystyki przed kompilacją zapytania)

Opcje bazy danych - Collation COLLATION określa sekwencję porządkową dla bazy danych. Zachodzi hierarchia dziedziczenia collation: instancja-bazatabela-kolumna. Przykład collection: Polish_CS_AS CS case sensitive (a A) CI case insensitive (a = A) AS accent sensitive AI accent insensitive

Systemowe bazy danych master przechowuje informacje systemowe niezbędne do pracy instancji SQL Server (np. informacje o innych bazach, lokalizacje ich plików, konta logowania, serwery dołączone) resource ukryta baza tylko do odczytu, która zawiera obiekty systemowe (ukazują się one w każdej w bazie w schemie sys) model szablon dla bazy danych tworzonych w instancji msdb używana przez SQL Server Agent (składuje zadania, alerty, ich harmonogramy), przechowuje historię kopii zapasowych i odtwarzań tempdb przestrzeń do składowania tymczasowych i pośrednich wyników, tabel i zmiennych tymczasowych

Przenoszenie bazy danych użytkownika Rozważmy poniższą bazę: CREATE DATABASE demodb ON PRIMARY ( NAME = demodb1, FILENAME = 'd:\data\demodb1.mdf', SIZE = 6144KB, FILEGROWTH = 1024KB ), FILEGROUP FG1 ( NAME = demodb2, FILENAME = 'd:\data\demodb2.ndf', SIZE = 6144KB, FILEGROWTH = 1024KB ) LOG ON ( NAME = demodb_log, FILENAME = 'd:\data\demodb_log.ldf', SIZE = 1024KB, FILEGROWTH = 10%) Przenieśmy ją w tryb OFFLINE ALTER DATABASE demodb SET OFFLINE WITH ROLLBACK IMMEDIATE

Przenoszenie bazy danych użytkownika Przenieść pliki bazy danych do nowej lokalizacji Po przensiesieniu dla każdego pliku bazy danych należy wykonać poniższe polecenie: ALTER DATABASE nazwa_bazy MODIFY FILE ( NAME = nazwa_logiczna, FILENAME = 'nowa_ścieżka_do_pliku') Przenieść bazę w tryb ONLINE Sprawdzić czy lokalizacje plików zostały zmienione SELECT name, physical_name, state_desc FROM sys.master_files WHERE database_id = DB_ID('nazwa_bazy')

Przenoszenie systemowych baz danych (nie dotyczy master i resource) planowana relokacja Zlokalizować pliki bazy SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('nazwa_bazy') Dla każdego pliku bazy danych należy wykonać poniższe polecenie: ALTER DATABASE nazwa_bazy MODIFY FILE ( NAME = nazwa_logiczna, FILENAME = 'nowa_ścieżka_do_pliku') Wykonać shutdown instancji Przenieść pliki do nowych lokalizacji Uruchomić instancję Sprawdzić czy lokalizacje plików zostały zmienione

Przenoszenie systemowych baz danych (nie dotyczy master i resource) Zatrzymać instancje - NET STOP MSSQLSERVER NET START MSSQLSERVER /f /T3608 Uruchomić sqlcmd i zlokalizować pliki bazy SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('nazwa_bazy') Dla każdego pliku bazy danych należy wykonać poniższe polecenie: ALTER DATABASE nazwa_bazy MODIFY FILE ( NAME = nazwa_logiczna, FILENAME = 'nowa_ścieżka_do_pliku') Wykonać shutdown instancji Przenieść pliki do nowych lokalizacji Uruchomić instancję Sprawdzić czy lokalizacje plików zostały zmienione

Przenoszenie bazy danych master Uruchomić SQL Server Configuration Manager Zmienić ścieżki do plików bazy master (Properties- Advanced-Startup parameters lub Properties-Startup parameters) Zatrzymać instancję SQL Server Przenieść pliki do nowych lokalizacji Uruchomić instancję Sprawdzić czy lokalizacje plików zostały zmienione Systemowej bazy danych resource nie można przenosić. Jej pliki są składowane w...\microsoft SQL Server\...\MSSQL\Binn\