PostgreSQL (www.postgresql.org)

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

Język SQL, zajęcia nr 1

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

SQL 4 Structured Query Lenguage

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

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

Projektowanie Baz Danych GiG-2-KG Ćw. 5. Podstawy języka SQL

BAZA DANYCH SIECI HOTELI

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 4. SQL praca z tabelami 1

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

2 Przygotował: 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

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

Bazy danych 7. SQL podstawy

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

Wykład 8. SQL praca z tabelami 5

Hurtownia Świętego Mikołaja projekt bazy danych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

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

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 4.

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

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

Transakcje jednocześnie ACID

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

SQL :: Data Definition Language

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

Internetowe bazy danych

przykłady problemów; realizacja dostaw części od producenta do klienta:

Składowane procedury i funkcje

Post-relacyjne bazy danych

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

PODSTAWY BAZ DANYCH 13. PL/SQL

Podstawy administracji PostgreSQL. DCL Data Control Language. Użytkownicy, role, uprawnienia, kopie zapasowe.

Wykład 05 Bazy danych

Zarządzanie kontami użytkowników w i uprawnieniami

Aspekty aktywne baz danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

15. Funkcje i procedury składowane PL/SQL

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

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Autor: Joanna Karwowska

Bazy danych 9. SQL Klucze obce Transakcje

BAZY DANYCH Cz III. Transakcje, Triggery

Wykład 5. SQL praca z tabelami 2

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Instrukcja instalacji aplikacji PlanSoft.org

Paweł Cieśla. Dokumentacja projektu

Dr Michał Tanaś(

Zarządzanie systemami informatycznymi. Zarządzanie internetową bazą danych MySQL

Systemowe aspekty baz

Tworzenie baz danych i tabel

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Instrukcja CREATE TABLE

Bazy danych 5. Samozłaczenie SQL podstawy

Baza danych inside. Biologiczne Aplikacje Baz Danych

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Uprawnienia, role, synonimy

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

Wykład 2. SQL 1 Structured Query Lenguage

Lab.8: Podstawy języka SQL.

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

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Instrukcja instalacji aplikacji Plansoft.org

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

MySQL (

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

SQL/MySQL. Rafał Kern

Projekt-bazy danych Poczta

Systemowe aspekty baz danych

Projektowanie systemów baz danych

Paweł Rajba

CREATE USER

Wykład :45 BD-1 W_3

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Bazy danych 4. SQL podstawy. P. F. Góra

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Transkrypt:

PostgreSQL (www.postgresql.org) Plan wykładu: Wprowadzenie Użytkowanie Administracja

Wprowadzenie Licencjonowanie BSD w pełni darmowy 2

Wprowadzenie (2) Serwer dostępny na różne systemy operacyjne Unix/Linux Microsoft Windows (od PostgreSQL 8.0) Maksymalny rozmiar tabeli: 32TB Uniwersalność obiektowo-relacyjna baza danych dziedziczenie własne typy danych własne funkcje Zaimplementowany bardzo duży podzbiór ANSI SQL 92/99 3

Przykładowe typy (1/2) Użytkowanie (1) Liczby całkowite: SMALLINT, INTEGER, BIGINT Liczby zmiennoprzecinkowe: REAL, DOUBLE PRECISION Liczby stałoprzecinkowe: DECIMAL(M, N) Waluta: MONEY (ustawienia lokalne) Data i czas: DATETIME, DATE, TIMESTAMP, TIME, INTERVAL Logiczny: BOOLEAN Napisy: CHAR, VARCHAR, TEXT Typ danych bitowy: BIT, VARBIT Typ danych binarnych: BYTEA 4

Użytkowanie (2) Przykładowe typy (2/2) Typ danych binarnych: Large objects (pozostałość, przed BYTEA) Typ danych geometrycznych: POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE Internet: CIDR, INET, MACADDR Tablice: [] Oraz własne typy... 5

Użytkowanie (3) Konwersja typów i kodowania napis można poprzedzić docelowym typem REAL '1.23' === CAST( '1.23' AS REAL ) to_char(timestamp now, HH12:MI:SS ) convert( PostgreSQL using iso_8859_1_to_utf_8) 6

Użytkowanie (4) Napisy: 'napis' $$inny napis$$ $tag$inny napis2$tag$ ' w napisie otoczonym ' można zapisać jako ' ' Można także poprzedzić znakiem \ 7

Przykład użycia (2/2) Użytkowanie (5) Wyrażenia regularne SIMILAR TO ('%' oznacza '.*', '_' oznacza '.') SELECT * FROM pet WHERE name LIKE '%b%' SELECT * FROM pet WHERE name SIMILAR TO %(b d)% Wyrażenia regularne POSIX REGEXP Operator Opis Przykład ~ pasuje, ważna wielkość liter thomas ~.*thomas.* ~* pasuje, nieważna wielkość liter thomas ~*.*Thomas.*!~ nie pasuje, ważna wielkość liter thomas!~.*thomas.*!~* nie pasuje, nieważna wielkość liter thomas!~*.*vadim.* 8

Operacje na czasie time 01:00 + interval 3 hours Użytkowanie (6) timestamp 2001-09-28 01:00 + interval 23 hours interval 1 hour * int 3 date_part( hour, timestamp 2001-02-16 20:38:40 ) 9

Użytkowanie (7) BOOLEAN t (domyślna wartość zwracana przez SELECT), true, y, yes, TRUE, 1 f (domyślna wartość zwracana przez SELECT), false, n, no, FALSE, 0 10

Użytkowanie (8) BIT B'0101011' bitowy napis BIT(7) B 0011 B 01 => 001101 B 0011 & B 0101 => 0001 B 0011 B 0101 => 0111 B 0011 # B 0101 => 0110 ~ B 0011 => 1100 B 0011 << 2 => 1100 B 0011 >> 1 => 0001 11

Operacje geometryczne Użytkowanie (9) translacja: box ((0,0),(1,1)) + point (2.0,0) obliczenie obszaru: area(box ((0,0),(1,1)) ) 12

Użytkowanie (10) Operacje na adresach internetowych zawieranie się: inet 192.168.1/24 >> inet 192.168.1.5 utworzenie adresu z maską ('192.168.1.5/32'): text(inet 192.168.1.5 ) 13

Użytkowanie (11) Tablice (indeksowane od 1) CREATE TABLE dochody_pracownik ( nazwisko text, zaplacone integer[], planowane text[][] ); INSERT INTO dochody_pracownik VALUES ( Bill, {10000, 10000, 10000, 10000}, {{"meeting", "lunch"}, {}} ); INSERT INTO dochody_pracownik VALUES ( Carol, {20000, 25000, 25000, 25000}, {{"rozmowa", "konsultacje"}, {"meeting"}} ); SELECT nazwisko FROM dochody_pracownik WHERE zaplacone[1] <> zaplacone[2]; UPDATE dochody_pracownik SET zaplacone[1:2] = {27000,27000} WHERE nazwisko = Carol ; 14

Użytkowanie (12) BYTEA dane wpisywać jak do pola tekstowego kody niewyświetlane należy utworzyć przez użycie '\' 15

Użytkowanie (13) Large Objects (przesył danych poprzez pliki) CREATE TABLE image ( name text, raster oid ); INSERT INTO image (name, raster) VALUES ( obrazek, lo_import( /tmp/motd )); SELECT lo_export(image.raster, /tmp/motd ) FROM image WHERE name = obrazek ; 16

Użytkowanie (14) Własne typy CREATE TYPE typename ( INPUT = input_functiontxt, OUTPUT = output_functiontxt, INTERNALLENGTH = { internallength VARIABLE } [, RECEIVE = receive_functionbin ] [, SEND = send_functionbin ] [, DEFAULT = default ] [, ALIGNMENT = alignment ] ); CREATE TYPE typename AS ( column_name data_type [,... ] ); 17

Własne operatory Użytkowanie (15) CREATE OPERATOR oper ( PROCEDURE = proc, [ LEFTARG = type_left, ] [ RIGHTARG = type_right, ] [ COMMUTATOR = oper ] ); 18

Użytkowanie (16) Generowanie unikalnego klucza (SERIAL, BIGSERIAL) CREATE TABLE tab ( kol SERIAL ); Sekwencja (odpowiednik) CREATE SEQUENCE tab_kol_seq; CREATE TABLE tab ( kol integer DEFAULT nextval( tab_kol_seq ) NOT NULL ); Funkcje do obsługi sekwencji nextval(text) zwiększa wartość sekwecji i zwraca nową wartość currval(text) zwraca ostation uzyskaną wartość sekwencji setval(text,bigint) ustawia wartość sekwencji 19

Użytkowanie (17) Ograniczenia zastrzeżone nazwy kolumn (1/2) oid (object ID) Identyfikator wiersza. Numer seryjny dodawany automatycznie. tableoid (table OID) Identyfikator tabeli zawierającej dany wiersz. Ma zastosowanie przy pobieraniu danych z tabel na różnych poziomach w hierarchi dziedziczenia. Nazwę tabeli o danym identyfikatorze można znaleźć w tabeli pg_class. ctid Fizyczne położenie krotki w tabeli. Zmienia się z każdym UPDATE lub VACUUM FULL. Nie nadaje się jako długo terminowy identyfikator. 20

Użytkowanie (18) Ograniczenia zastrzeżone nazwy kolumn (2/2) xmin (transaction ID) Identyfikator transakcji wstawiającej zadaną wersję wiersza. cmin (command ID) Numer polecenia w transakcji wstawiającej. xmax (transaction ID) Identyfikator transakcji usuwającej zadaną wersję wiersza. cmax (command ID) Numer polecenia w transakcji usuwającej (lub 0) 21

Użytkowanie (19) Dziedziczenie CREATE TABLE miasta ( nazwa text, populacja float, wysokosc int); CREATE TABLE wojewodztwa ( woj_skr char(2) ) INHERITS (miasta); Zwraca wyniki także z potomków (pochodzenie wiersza można ustalić po tableoid): SELECT nazwa, wysokosc FROM miasta WHERE wysokosc > 170; Zwraca wyniki tylko z wybranej tabeli: SELECT nazwa, wysokosc FROM ONLY miasta WHERE wysokosc > 170; 22

Użytkowanie (20) Indeksy B-tree (<, <=, =, >=, >) indeks domyślny R-tree (<<, &<, &>, >>, @, ~=, &&) CREATE INDEX nazwa ON tab USING RTREE (kol); Hash (=) CREATE INDEX nazwa ON tab USING HASH (kol); Indeksy funkcyjne (gdy używamy przy porównaniu funkcji): SELECT * FROM test1 WHERE lower(kol) = wartosc ; CREATE INDEX test1_lower_col1_idx ON test1 (lower(kol)); Indeks częściowy (gdy korzystamy z podzbioru wierszy przy porónaniu): CREATE INDEX rachunki_niezaplacone_index ON rachunki (nr) WHERE zaplacony is not true; 23

Użytkowanie (21) Własne funkcje (PL/pgSQL, PL/Tcl, PL/Perl, PL/Python) CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [,...] ] ) RETURNS rettype { LANGUAGE langname IMMUTABLE STABLE VOLATILE CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT [EXTERNAL] SECURITY INVOKER [EXTERNAL] SECURITY DEFINER AS definition AS obj_file, link_symbol }... [ WITH ( attribute [,...] ) ] CREATE FUNCTION sales_tax(real) RETURNS REAL AS DECLARE subtotal ALIAS FOR $1; BEGIN return subtotal * 0.06; END; LANGUAGE plpgsql ; 24

Użytkowanie (22) Transakcje BEGIN [ WORK TRANSACTION ] / START TRANSACTION COMMIT / ROLLBACK [ WORK TRANSACTION ] Punkty kontrolne możliwość wycofania się do określonego miejsca wewnątrz transakcji SAVEPOINT identifier ROLLBACK TO SAVEPOINT identifier Dwufazowy commit (dane sesji pamiętane na dysku) BEGIN PREPARE TRANSACTION 'tr1'... COMMIT/ROLLBACK PREPARED 'tr1' 25

Użytkowanie (23) Transakcje Blokowanie tabel LOCK [ TABLE ] name [,...] [ IN lockmode MODE ]... lockmode = ACCESS SHARE ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXCLUSIVE Tabela zwolniona po zakończeniu transakcji 26

Poziomy izolacji Użytkowanie (24) SET TRANSACTION [ ISOLATION LEVEL { READ COMMITTED SERIALIZABLE } ] [ READ WRITE READ ONLY ] READ COMMITTED domyślny, czyta zatwierdzone SERIALIZABLE pełna szeregowalność 27

Przykład użycia (1/2) Użytkowanie (25) Utworzenia klastera bazodanowego (powstanie wzorzec bazy: template1) i uruchomienie serwera initdb -D /usr/local/pgsql/data postmaster -D /usr/local/pgsql/data 28

Przykład użycia (2/2) Utworzenie bazy danych Użytkowanie (26) CREATE DATABASE menagerie; -- sklonowanie template1 CREATE DATABASE dbname OWNER username; CREATE DATABASE dbname TEMPLATE template0; Odświeżenie indeksów szczególnie gdy były usuwane dane REINDEX Odświeżenie statystyk, zwolnienie miejsca po usuniętych krotkach VACUUM Informacje o planie wykonania EXPLAIN SELECT * FROM tab1 29

Użytkownicy i uprawnienia Administracja ACL (Access Control Lists) informacja jest przechowywana w tabelach systemowych (pg_*) pg_user pg_group pg_roles... 30

Administracja (2) Użytkownicy i uprawnienia (2) Użytkownicy (autoryzacja) nazwa roli (użytkownika/grupy) adres, z którego się łączy (może być podana maska) 31

Administracja (3) Użytkownicy i uprawnienia (3) Dostęp do zasobów - poziomy hierarchii Database level GRANT... ON DATABASE db Table level GRANT... ON TABLE table Routine level GRANT... ON FUNCTION fun... 32

Administracja (4) Rodzaje uprawnień ALL PRIVILEGES -------------- SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER -------------- CREATE TEMPORARY -------------- EXECUTE -------------- USAGE 33

Użytkownicy CREATE USER name; Atrybuty: Administracja (5) superuser nie obejmują go żadne ograniczenia CREATE USER name CREATEUSER database creation może tworzyć nową bazę CREATE USER name CREATEDB password ustawienie hasła dla połączenia CREATE USER name PASSWORD string DROP USER name; ALTER USER name WITH PASSWORD pass ; 34

Administracja (6) Grupy CREATE GROUP name ALTER GROUP name ADD USER uname1,... ALTER GROUP name DROP USER uname1,... 35

Role (użytkownicy i grupy) Administracja (7) CREATE ROLE name; (synonim CREATE GROUP) CREATE ROLE uname1 LOGIN; (synonim CREATE USER) GRANT name TO uname1,... DROP ROLE name SET ROLE name (przełączanie się między rolami) Hierarchia dziedziczenie uprawnień (domyślnie) CREATE ROLE name INHERIT Hierarchia bez dziedziczenia uprawnień CREATE ROLE name NOINHERIT 36

Użytkownicy i uprawnienia Administracja (8) Plik: pg_hba.conf informacja o prawach dostępu do serwera # local DATABASE USER METHOD [OPTION] # host DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] # hostssl DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] # METHOD = "trust", "reject", "md5", "crypt", "password", # "krb4", "krb5", "ident", or "pam". # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD local all all trust host all all 127.0.0.1 255.255.255.255 trust 37

Administracja (9) Program do zrzucenia bazy do pliku SQL pg_dump dbname > outfile pg_dumpall > outfile psql dbname < infile 38

Administracja (10) Kanały komunikacyjne TCP/IP 5432 Potoki zawiera SSL, od klienta wymagana konfiguracja tunelu dla portu 5432 39