home_site

Lab02 - Język SQL, polecenia DDL i DML [ ver. BD1.2025.10.06.004 ]

Zawartość strony

Plan zajęć

Program psql

Program psql - klient połączeniowy do bazy danych PostgreSQL
psql [opcje] baza [użytkownik]
  • baza - nazwa bazy użytkownika
  • użytkownik - nazwa użytkownika
  • opcje - dodatkowe opcje programu
    • -p PORT - numer portu
    • -d BAZA - nazwa bazy danych
    • -f PLIK - pobieranie danych z pliku
    • -h HOST - nazwa zdalnego komputera
    • -l - lista dostępnych baz danych
    • -o PLIK - przekierowanie rezultatów do pliku
    • -U USER - nazwa użytkownika
Połączenie do bazy danych na zajęciach:
psql -h pascal -U user baza
psql - podstawowe metapolecenia
  • \? - informacja o metapoleceniach
  • \a - przełączanie między wydrukiem wyrównanym i nie wyrównanym
  • \cd - zmiana katalogu
  • \d - wyświetlenie informacji o obiekcie
  • \dt - wyświetlenie listy tabel
  • \echo - wyświetlenie tekstu
  • \qecho - j.w. stosowane przy przekierowywaniu
  • \f - ustawienie separatora dla niewyrównanego wydruku
  • \h - pomoc na temat poleceń SQL-a
  • \H - włączanie formatu HTML wydruków
  • \o - zapisywanie rezultatów zapytań do pliku
  • \q - wyjście z programu
  • \s - wyświetlenie (lub zapis do pliku) historii poleceń psql-a
  • \set - przypisywanie wartości zmiennym (dostęp poprzez :NAZWA)
  • \unset - kasuje ustawienie \set.
  • \t - włącza tryb wyświetlania wyłącznie danych
  • \timing - włącza wyświetlanie czasu wykonania kwerend
  • \! - wykonanie polecenia powłoki
  • \i - wczytanie kwerend z pliku
  • \copy - zapis wyników kwerendy do pliku

Tworzenie struktur w bazie - polecenia SQL DDL

  1. W ramach tego punktu zapoznamy się z poleceniami języka SQL tworzącymi lub modyfikującymi struktury w relacyjnej bazie danych, jest podzbiór poleceń DDL (Data Definition Language). W ramach tego punktu zapoznamy się z tworzeniem struktury tabeli.
    • CREATE - polecenie tworzące strukturę "tabelę" w bazie danych,
      CREATE TABLE nazwa_tabeli ( nazwa_atr1 typ_danych, nazwa_atr2 typ_danych, nazwa_atr3 typ_danych, ... ) ;   
      
    • ALTER - polecenie modyfikujące strukturę,
      ALTER TABLE nazwa_tabeli ... ;   
      
    • DROP - polecenie usuwające strukturę.
      DROP TABLE nazwa_tabeli ;   
      
  2. Tworzenie tabeli w relacyjnej bazie danych - Postgresql
    --=========================================================================
    -- Cwiczenie 01 Postgresql - język DDL - tworzenie struktur w bazie danych
    --=========================================================================
    -- *****************************************
    -- Utworzenie schematu CREATE SCHEMA
    -- *****************************************
    CREATE SCHEMA kurs;
    -- Ustawienie dostepu do schematu domyslnego
    SET SEARCH_PATH TO kurs;
    -- ******************************************
    -- Utworzenie tabeli CREATE TABLE
    -- ******************************************
    -- Utworzenie tabeli "uczestnik" w schemacie "kurs"
    -- Atrybuty tabeli:
    -- id int - identyfikator uczestnika
    -- imie varchar(30) - imie uczestnika
    -- nzawisko varchar(30) - nazwisko uczestnika
    CREATE TABLE kurs.uczestnik ( id int, imie varchar(30), nazwisko varchar(30) ) ;
    -- Modyfikacja tabeli uczestnik - ustawienie klucza glownego na atrybucie id
    ALTER TABLE kurs.uczestnik ADD primary key (id);
    -- Modyfikacja tabeli uczestnik - dodanie atrybutu rok
    ALTER TABLE kurs.uczestnik ADD rok char(4);
    -- Usuniecie tabeli "uczestnik"
    DROP TABLE kurs.uczestnik;
    

Wstawianie, modyfikowanie i usuwanie danych z bazy - polececia SQL DML

  1. W ramach tego punktu zapoznamy się z poleceniami języka SQL przetwarzającymi dane składowane w bazie danych, podzbiór poleceń DML (Data Manipulation Language):
    • INSERT - wprowadzanie danych do utworzonych tabel,
      INSERT INTO nazwa_tabeli ( atr1, atr2, atr3, ... ) VALUES ( val1, val2, val3, ... ) ; 
      INSERT INTO nazwa_tabeli VALUES ( val1, val2, val3, ... ); 
      
    • UPDATE - poprawa danych zawartych w tabelach,
      UPDATE nazwa_tabeli SET  atr1 = val1, atr2 = val2, ...  WHERE atr = val ; 
      
    • DELETE - usuwanie danych z tabel,
      DELETE FROM nazwa_tabeli WHERE atr = val ; 
      
    • SELECT - przeglądanie danych w tabelach.
      SELECT * FROM nazwa_tabeli ;
      SELECT atr1, atr2, ... FROM nazwa_tabeli WHERE warunek_wyboru ; 
      
  2. Wprowadzanie, poprawianie, usuwanie i przeglądanie danych w tabeli kurs.uczestnik w bazie danych Postgresql.
    --==========================================================================================
    -- Cwiczenie 02 Postgresql - jezyk DML - wprowadzanie, poprawianie, usuwanie i przegladanie
    --                           danych w tabeli "uczestnik"
    --==========================================================================================
    -- *************************************************************
    -- Tworzymy tabelę kurs.uczestnik
    -- *************************************************************
    CREATE TABLE kurs.uczestnik ( id int, imie varchar(30), nazwisko varchar(30) ) ;
    ALTER TABLE kurs.uczestnik ADD primary key (id);
    -- *************************************************************
    -- Wprowadzanie danych do tabeli "uczestnik"
    -- Polecenie INSERT INTO table ( atrybuty ) VALUES ( wartosci )
    -- *************************************************************
    INSERT INTO kurs.uczestnik ( id, imie, nazwisko ) VALUES ( 1, 'Adam', 'Abacki' );
    -- Wprowadamy dane zgodnie z kolejnoscia atrybutow w poleceniu CREATE 
    -- (wprowadzamy wszystkie atrybuty )
    INSERT INTO kurs.uczestnik VALUES ( 2, 'Bogdan', 'Babacki' );
    -- Wprowadzamy jenym poleceniem INSERT kilka rekordow do tabeli
    INSERT INTO kurs.uczestnik values 
      ( 3, 'Marek', 'Cabacki' ),
      ( 4, 'Edward', 'Dadacki' ),
      ( 5, 'Zygmunt', 'Ebacki' );
    -- Wprowadzamy dane niekompletne ( brak wszystkich atrybutow )
    INSERT INTO kurs.uczestnik ( id, nazwisko ) VALUES ( 6, 'Sosnowski') ;
    -- Wprowadzamy atrybuty w innej kolejnosci niz w poleceniu CREATE TABLE
    INSERT INTO kurs.uczestnik ( imie, nazwisko, id ) VALUES ( 'Anna', 'Mamacka', 7);  
    -- ***************************************************************
    -- Wyswietlenie zawartosci tabeli
    -- Polecenie SELECT [atrybuty] FROM tabela [ WHERE warunek ]
    -- ***************************************************************
    -- Wyswietlenie zawartosci tabeli
    -- SELECT * FROM tabela
    -- Wybor atrybutow do wyswietlnenia (projekcja)
    -- SELECT atrybuty FROM tabela
    -- Wybor okreslonych rekordow (selekcja)
    -- SELECT atrybuty FROM tabela WHERE warunek wyboru
    -- ***************************************************************
    -- Wyswietlenie wszystkich atrybutow i wszystkich rekordow w tabeli
    SELECT * FROM kurs.uczestnik;
    -- Wyswietlenie wybranych atrybutow z tabeli
    SELECT imie, nazwisko FROM kurs.uczestnik;
    -- Wysietlenie wybranych rekordow 
    SELECT imie, nazwisko FROM kurs.uczestnik WHERE id=5;
    -- ***************************************************************
    -- Modyfikacja zawartosci tabeli 
    -- UPDATE tabela SET atrybut=nowa wartosc [ WHERE warunek ] 
    -- ****************************************************************
    -- Dodajemy do tabeli dodatkowy atrybut rok
    ALTER TABLE kurs.uczestnik ADD rok char(4);
    SELECT * FROM kurs.uczestnik;
    -- Poprawa atrybutu we wszystkich rekordach
    UPDATE kurs.uczestnik SET rok='2001';
    SELECT * FROM kurs.uczestnik;
    -- Poprawa atrybutu w wybranym wierszu
    UPDATE kurs.uczestnik SET rok='2003' WHERE id=4;
    SELECT * FROM kurs.uczestnik;
    -- ****************************************************************
    -- Usuniecie rekordow z tabeli 
    -- DELETE FROM tabela [ WHERE warunek ] 
    -- ****************************************************************
    -- Usuniecie wybranego rekordu
    DELETE FROM kurs.uczestnik WHERE id=3;
    SELECT * FROM kurs.uczestnik;
    -- Usuniecie wszystkich rekordow z tabeli
    DELETE FROM kurs.uczestnik;
    SELECT * FROM kurs.uczestnik;
    DROP TABLE kurs.uczestnik;
    

Wyszukiwanie danych w bazie - polecenie SELECT

  1. W ramach tego punktu zapoznamy się z poleceniem SELECT umożliwiającym przeglądanie danych zawartych w tabelach relacyjnej bazy danych.
    SELECT atr1, atr2, atr3, ... 
    FROM nazwa_tabeli1, nazwa_tabeli2, ...
    WHERE warunki_wyboru
    ORDER BY atrybuty_sortujace ;
    
  2. Przeglądanie danych w tabeli kurs.uczestnik w bazie danych Postgresql.
    --==============================================================================
    -- Cwiczenie 03 Postgresql - jezyk DQL - wyszukiwanie danych w tabeli
    --==============================================================================
    -- *****************************************************************************
    -- Przygotowanie danych do cwiczenia 3 
    CREATE TABLE kurs.uczestnik 
        ( id int, imie varchar(30), nazwisko varchar(30), rok char(4) ) ;
    ALTER TABLE kurs.uczestnik ADD primary key (id);
    INSERT INTO kurs.uczestnik ( id, imie, nazwisko, rok ) VALUES 
      ( 1, 'Adam', 'Abacki', '2001' ),
      ( 2, 'Bogdan', 'Babacki', '2001' ),
      ( 3, 'Marek', 'Cabacki', '2002' ),
      ( 4, 'Edward', 'Dadacki', '2002' ),
      ( 5, 'Zygmunt', 'Ebacki', '2002' ),
      ( 6, 'Anna', 'Mamacka', '2001' );
    INSERT INTO kurs.uczestnik ( id, nazwisko, rok ) VALUES ( 7, 'Sosnowski', '2001') ;
    SELECT * FROM kurs.uczestnik;
    -- **********************************************************************************
    -- Aliasy atrybutow
    SELECT id AS numer, imie AS im, nazwisko AS na FROM kurs.uczestnik;
    -- Sortowanie rekordow po nazwisku
    SELECT id, nazwisko, imie FROM kurs.uczestnik ORDER BY nazwisko;
    -- Wybor rekordow, predykat IN
    SELECT id, nazwisko, imie FROM kurs.uczestnik WHERE id IN ( 2,3,4,5);
    -- Wybor rekordow, predykat BETWEEN
    SELECT id, nazwisko, imie FROM kurs.uczestnik WHERE id BETWEEN 2 AND 4;
    -- Wybor rekordow wyszukujac fraze w tekscie wedlug wzorca
    SELECT id, nazwisko, imie FROM kurs.uczestnik WHERE nazwisko LIKE 'A%' ;
    -- Wyszukiwanie rekordow z wartoscia pusta - NULL
    SELECT id, nazwisko, imie FROM kurs.uczestnik WHERE imie IS NULL;
    -- Wyszukiwanie rekordow nie posiadajach watosci pustej NOT NULL
    SELECT id, nazwisko, imie FROM kurs.uczestnik WHERE imie IS NOT NULL;
    -- Wyszukiwanie wartosci unikalnych DISTINCT
    SELECT DISTINCT(rok) FROM kurs.uczestnik;