Praca z serwerem SQL

Dostępny

SQL to dla nas wszystko

Jak zapewne już się domyślasz, wszystkie polecenia do serwera SQL można wydawać za pomocą zapytań SQL. Wszystko.

Zespoły te są oficjalnie podzielone na 4 grupy:

  • instrukcje definicji danych (język definicji danych, DDL ):

    • CREATE tworzy obiekt bazy danych (samą bazę danych, tabelę, widok, użytkownika itd.)
    • ALTER zmienia obiekt
    • DROP usuwa obiekt
  • operatory manipulacji danymi (Data Manipulation Language, DML ):

    • SELECT wybiera dane, które spełniają podane warunki
    • INSERT dodaje nowe dane
    • UPDATE zmienia istniejące dane
    • DELETE usuwa dane
  • operatory definicji dostępu do danych (Data Control Language, DCL ):

    • GRANT przyznaje użytkownikowi (grupie) uprawnienia do wykonywania określonych operacji na obiekcie
    • REVOKE cofa wcześniej wydane uprawnienia
    • DENY ustanawia zakaz, który ma pierwszeństwo przed zezwoleniem
  • Oświadczenia w języku kontroli transakcji ( TCL ) :

    • COMMIT stosuje transakcję
    • ROLLBACK wycofuje wszystkie zmiany dokonane w kontekście bieżącej transakcji
    • SAVEPOINT dzieli transakcję na mniejsze części

A na pierwszych dwóch poziomach badaliśmy tylko odmiany instrukcji SELECT. Wyobraź sobie, ile ciekawych rzeczy czeka nas w przyszłości.

Ale przygotowujemy się tutaj przede wszystkim o programistach Java, więc przestudiujemy te scenariusze, z którymi na pewno spotkasz się w pracy.

Administrator systemu w projekcie najprawdopodobniej stworzy wszystkie bazy danych, ale na pewno będziesz musiał wielokrotnie dokonywać selekcji z danych.

Co więcej, czasami Twój kod nie zapisze wszystkich danych do bazy danych lub zapisze je w niewłaściwy sposób, więc często będziesz musiał wspiąć się do niego z długopisami i zobaczyć, co faktycznie jest tam zapisane.

Wróćmy jeszcze raz do spraw, które poruszyliśmy na poprzednich wykładach.

Tworzenie schematu w bazie danych

Aby utworzyć nowy schemat w DBMS, należy uruchomić polecenie:

CREATE SCHEMA Name;

To najłatwiejsza opcja. Ponadto podczas tworzenia nowego schematu można określić format kodowania danych i inne parametry.

Jeśli chcesz usunąć schemat, ale nie jesteś pewien, czy istnieje, musisz uruchomić polecenie:

DROP SCHEMA IF EXIST Name;

Często zobaczysz te polecenia w plikach z kopiami zapasowymi różnych baz danych, dlatego przynoszę je tutaj.

Wybór aktualnego schematu

Jeśli masz wiele schematów w DBMS, łatwo może się zdarzyć, że różne schematy mają te same tabele. Aby uniknąć nieporozumień, możesz zrobić dwie rzeczy:

  • Zawsze umieszczaj nazwę schematu przed nazwą tabeli
  • Określ schemat domyślny

Napiszmy zapytanie, które wybierze dane z tabeli użytkownika , która znajduje się w schemacie testowym . Będzie to wyglądać mniej więcej tak:

SELECT * FROM test.user;

Jest to po prostu niezbędne, jeśli chcesz dołączyć (JOIN) kilka tabel z różnych schematów w jednym zapytaniu.

Nawiasem mówiąc, w języku Java często robimy coś podobnego: jeśli w kodzie musimy użyć klas o tej samej nazwie z różnych pakietów, dodajemy nazwę pakietu przed nazwą klasy.

Drugim sposobem jest określenie schematu domyślnego . Jeśli zapytanie określa nazwę tabeli, ale nie zawiera schematu, używany jest schemat domyślny. Aby to zrobić, użyj instrukcji USE :

USE name - schemes;

Przepiszmy poprzednie zapytanie, używając instrukcji USE:

USE test;
SELECT * FROM user;

Tworzenie widoku

Oprócz tabel z rzeczywistymi danymi SQL umożliwia przechowywanie czegoś w rodzaju wirtualnych tabel, w których dane są pobierane z rzeczywistych tabel. Takie wirtualne tabele nazywane są VIEW.

Taka tabela nie może przechowywać prawdziwych danych i za każdym razem, gdy uzyskuje się do niej dostęp, pobiera dane z prawdziwych tabel. Zawartość takiego WIDOKA jest określana za pomocą zapytania SQL.

Możesz utworzyć WIDOK z dowolnego zapytania SELECT za pomocą polecenia takiego jak:

CREATE VIEW Name AS
SELECT-request;
Napiszmy zapytanie, które utworzy wirtualną tabelę public_employee na podstawie tabeli pracowników, w której zostaną ukryte informacje o wynagrodzeniu pracownika:
CREATE VIEW public_employee AS
SELECT id, name FROM employee

W powyższym przykładzie nasza tabela (WIDOK) public_employee będzie zawierała tylko identyfikatory pracowników i ich nazwiska, ale nie informacje o ich wynagrodzeniu. Możesz korzystać z takich widoków w tym samym miejscu, co prawdziwe stoły.

Dlaczego potrzebne są widoki? Mają szereg zalet:

Elastyczna kontrola dostępu do informacji . Możesz dać niektórym użytkownikom dostęp tylko do VIEW, ale nie do tabel. A w widoku usuwaj z tabel tylko informacje publiczne. Ponadto, jeśli w przyszłości do tabel zostaną dodane nowe kolumny z ważnymi informacjami, nie trafi to przypadkowo do Widoku.

Denormalizacja danych . Dla wygody przechowywania dane są często dzielone na setki i tysiące tabel, ale praca z takimi danymi dla zwykłego człowieka nie jest zbyt wygodna - trzeba pisać zbyt skomplikowane zapytania. Dzięki View możesz tworzyć wirtualne tabele, które wyświetlają dane z dziesiątek różnych tabel w jednej tabeli.

Polimorfizm i enkapsulacja . Możesz zmieniać struktury swojej bazy danych. Jednocześnie użytkownicy programu pracujący z Twoimi Widokami nie zgadną, że coś się zmieniło. I nie będzie potrzeby przepisywania kodu programów, które mają dostęp do View. Wystarczy zmodyfikować skrypt SQL, który jest powiązany z VIEW.

Tylko do odczytu . Widok można ustawić tylko za pomocą zapytania SELECT, więc praca z widokiem nie może w żaden sposób zmieniać danych w rzeczywistych tabelach. Nawiasem mówiąc, jest to kolejny plus przemawiający za buforowaniem zapytań. Ale o tym następnym razem.

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy