Strona główna

Gliwice Język sql – ddl


Pobieranie 59.51 Kb.
Data19.06.2016
Rozmiar59.51 Kb.

Politechnika Śląska

Instytut Informatyki




Gliwice


Język SQL – DDL


Instrukcja do laboratorium

Baz Danych:

1Wstęp


DDL (ang. data definition language) jest częścią języka zapytań SQL obejmująca tworzenie i zarządzanie (modyfikację, usuwanie i przydzielanie uprawnień) obiektami w bazie danych (tabelami, perspektywami, indeksami). Podstawowe instrukcje tej części języka są wspólne dla wielu implementacji, jednak poszczególne opcje, typy danych oraz zarządzanie prawami użytkowników różnią się w znacznym stopniu w zależności od implementacji serwera baz danych.

Niniejsze opracowanie opisuje język SQL-DDL na serwerze baz danych SQLBase firmy Centura (dawniej Gupta).


2Tabele systemowe


Informacje o wszystkich obiektach SQL-owej bazy danych przechowywane są w tabelach systemowych zorganizowanych w tzw. słownik danych (ang. data dictionary) lub inaczej katalog systemowy. Na serwerze SQLBase właścicielem tabel systemowych jest użytkownik SYSADM, a utrzymywane są one automatycznie przez serwer. W poszczególnych tabelach przechowywane są następujące informacje:


Tabela

Zawartość

SYSCOLAUTH

Przywileje użytkowników do modyfikacji kolumn

SYSCOLUMNS

Dane nt. każdej kolumny we wszystkich tabelach

SYSCOMMANDS

Pamiętane w bazie komendy i polecenia

SYSEVENTS

Zdarzenia wyzwalane systemowym zegarem

SYSEXECUTEAUTH

Poziomy uprawnień użytkowników do uruchamiania procedur bazy danych

SYSFKCONSTRAINTS

Klucze obce

SYSINDEXES

Indeksy

SYSKEYS

Lista kolumn we wszystkich indeksach

SYSPARTTRANS

Wątpliwe rozproszone transakcje

SYSPKCONSTRAINTS

Klucze główne (pierwotne)

SYSROWIDLISTS

Listy identyfikatorów wierszy

SYSSYNONYMS

Synonimy tabel

SYSTABAUTH

Przywileje użytkowników do poszczególnych tabel

SYSTABCONSTRAINTS

Wieży związane z tabelami

SYSTABLES

Wszystkie tabele w bazie danych

SYSTRGCOLS

Kolumny, dla których istnieją triggery UPDATE

SYSTRIGGERS

Triggery

SYSUSERAUTH

Poziomy uprawnień użytkowników

SYSVIEWS

Perspektywy

Użytkownik z odpowiednimi uprawnieniami może wykonywać następujące operacje na tabelach systemowych:



  • selekcja danych,

  • tworzenie własnych perspektyw opartych o tabele systemowe,

  • tworzenie synonimów tabel systemowych,

  • tworzenie indeksów na kolumnach tabel systemowych,

  • dodawanie kolumn użytkownika,

  • usuwanie kolumn użytkownika,

  • modyfikacja danych w kolumnach użytkownika.

Nie można natomiast usuwać tabel systemowych, usuwać z nich podstawowych kolumn oraz dodawać własnych wierszy.

Kolumny dodawane przez użytkownika nie są oczywiście utrzymywane przez serwer. Są one na przykład ignorowane przy wyładowywaniu bazy danych za pomocą instrukcji UNLOAD.

Użytkownik (prócz systemowego SYSADM) posiada powyższe prawa o ile zostaną mu one nadane. Domyślnie każdy użytkownik bazy danych może przeglądać dane w tabelach systemowych.

Można również tworzyć dla użytkowników perspektywy oparte o tabele systemowe, w których do selekcji danych można używać słowa kluczowego USER, oznaczającego nazwę bieżącego użytkownika.

3DDL a transakcje


Na większości serwerów baz danych operacje języka SQL DDL nie są objęte transakcjami. Powoduje to nieodwołalność wszelkich wykonywanych operacji. Natomiast na serwerze SQLBase DDL jest traktowany na równi z innymi instrukcjami języka SQL - każda operacja wykonywana jest w ramach transakcji. Aby zmiany struktury odniosły skutek należy więc pamiętać o zatwierdzeniu transakcji. Jeżeli instrukcje DDL wykonywane są w czasie, gdy inni użytkownicy połączeni są z bazą danych, należy pamiętać, że do momentu zatwierdzenia lub wycofania transakcji blokowane są również tabele systemowe, ponieważ zmienia się ich zawartość.

4Informacje podstawowe

4.1Nazewnictwo


Identyfikatory tworzące nazwy użytkowników, kolumn, tabel i innych obiektów bazy danych mogą być dwojakiego rodzaju:

  • Zwykle identyfikatory - są to ciągi znaków rozpoczynające się literą lub jednym
    ze znaków specjalnych (# @ lub $), składające się z liter, cyfr i podkreślników (_).
    Wyjątek stanowi nazwa bazy danych, która musi rozpoczynać się literą i składać
    się może wyłącznie ze znaków alfanumerycznych.

  • Identyfikatory z ogranicznikiem (ang. delimited) - mogą zawierać dowolne
    znaki, włączając spacje i kropki. Mogą rozpoczynać się cyfrą. W przypadku tych
    identyfikatorów rozróżniane są małe i wielkie litery. Musza być objęte
    cudzysłowem, np. "8.3 lub 5.0".

Jeśli identyfikator taki ma zawierać znak cudzysłowu, używamy powtórzonego cudzysłowu ("").

Słów kluczowych języka SQL można używać jako identyfikatorów z ogranicznikiem, jednak jest to niezalecane.

Nazwy poszczególnych obiektów mogą być krótkimi (do 8 znaków) lub długimi (do 18 znaków) identyfikatorami. Zwykle w nazwach nie są rozróżniana małe i wielkie litery. Wyjątek stanowią nazwa użytkownika i hasło.

UWAGA:


Nazwy w tabelach systemowych przechowywane są zwykle zapisane wielkimi literami, niezależnie od tego, jak były tworzone.

4.2Typy danych


W serwerze SOLBase występują trzy podstawowe typy danych: znakowy, numeryczny i data/czas.

Łańcuchy znakowe

Łańcuchy znakowe są sekwencjami liter, cyfr i znaków specjalnych. Wszystkie łańcuchy znaków przechowywane są jako dane o zmiennej długości. Jednak dla kompatybilności z serwerem DB2 używane są alternatywne nazwy dla tych samych typów.

Wszystkie dane znakowe mogą również przechowywać dane binarne. Małe i wielkie litery zawarte w danych typu znakowego są rozróżniane.


  • CHAR ( VARCHAR):

Dla tego typu danych wymagane jest podanie rozmiaru (maksymalnej długości) łańcucha. Może być ona z zakresu 1-254 znaków. Na przykład: CHAR(11) VARCHAR(80)

Dane tego typu mogą być porównywane z innymi łańcuchami lub liczbami, mogą być argumentem dla wielu funkcji, mogą być porządkowane (sortowane).



  • LONG VARCHAR (LONG):

Ten typ danych może przechowywać łańcuchy dowolnej długości, również te powyżej 254 bajtów.

Dane tego typu mogą być przechowywane, modyfikowane i pobierane z bazy danych, lecz nie można nakładać na nich warunków selekcji we frazie WHERE. Nie mogą występować w wyrażeniach i nie mogą być argumentami większości funkcji, gdyż często zawierają dane binarne (BLOB).

Dane LONG przechowywane są na odrębnych, dowiązanych stronach, więc dla wierszy z pustą zawartością danych tego typu nie jest prealokowane miejsce.

Dane numeryczne

Serwer SQLBase wspiera następujące typy danych numerycznych:



  • INTEGER (INT)

typ całkowity, dopuszczalne wartości od -2147483648 do +214783647

  • SMALLINT

typ całkowity, dopuszczalne wartości od -32768 do -f 32767

  • DECIMAL (DEC)

typ stałoprzecinkowy, o określonej liczbie cyfr znaczących i miejsc po przecinku (definicja DEC(5,2) oznacza liczbę z dwoma miejscami po przecinku i o maksymalnej liczbie cyfr znaczącej równej 4 - piątym znakiem jest kropka dziesiętna). Jeśli rozmiary te nie są wyspecyfikowane, serwer przyjmuje wartości odpowiednio (5,0). Ten typ danych może przechowywać liczby co najwyżej 15 cyfrowe.

  • FLOAT

przechowuje liczby zmiennoprzecinkowe o dowolnej liczbie cyfr znaczących i miejsc po przecinku. Można również specyfikować maksymalny rozmiar dla tego typu: FLOAT(m), aktualnie m<=22. Dla m=22 dane są traktowane jak liczby podwójnej precyzji; jest to domyślnie przyjmowany rozmiar danych dla typu FLOAT.

przechowuje liczby zmiennoprzecinkowe podwójnej precyzji

  • REAL

reprezentuje liczby zmiennoprzecinkowe pojedynczej precyzji

  • NUMBER

jest nadtypem dla wszystkich typów numerycznych i może przechowywać wszystkie wymienione powyżej formaty liczb.

Dane typu data/czas

Informacje na temat daty i czasu przechowywane są w serwerze SQLBase w wewnętrznym, zmiennoprzecinkowym formacie (dzień.czas - gdzie dzień jest liczbą dni, jaka upłynęła od 30.12.1899 a czas jest ułamkiem dnia -Czas=0 oznacza północ, czas=Q.5 - południe). Użytkownik ma do wyboru trzy typy danych:



DATE - przechowuje tylko część związaną z datą

TIME - przechowuje tylko część związaną z czasem

DATETIME (lub TIMESTAMP) - zawiera datę i czas

5Zarządzanie strukturą tabel

5.1Tworzenie tabel


Do tworzenia tabel służy polecenie CREATE TABLE:


W najprostszej postaci tego polecenia specyfikujemy tylko nazwę tabeli (table name) oraz listę nazw kolumn (column name) wraz z typami i rozmiarami (data type).

Atrybut kolumny NOT NULL oznacza, że zadaniem serwera jest niedopuszczenie do sytuacji, aby w jakimkolwiek wierszu tabeli kolumna ta miała wartość pustą. Atrybut NOT NULL WITH DEFAULT również powoduje, że dane w kolumnie nigdy nie są puste, natomiast, gdy użytkownik nie wyspecyfikuje żadnej wartości w tej kolumnie – zostanie automatycznie wpisana tam wartość domyślna. Na wielu serwerach wartość tę użytkownik może określić dla każdej kolumny, na serwerze SQLBase mechanizm ten jest uproszczony i wartość domyślna jest zależna od typu kolumny (jedna spacja dla łańcuchów tekstowych, 0 dla danych numerycznych i wartość bieżąca dla danych typu data/czas).

Przykład:

create table wplaty

(kwota decimal (15,2) not null,

tytul char(80),

data datetime not null with default)

5.2Więzy integralności referencyjnej


Na etapie definiowania struktury tabeli można określić jej powiązania z innymi tabelami za pomocą mechanizmu kluczy głównych (pierwotnych, ang. primary key) i obcych (ang. foreign key).

Mechanizm ten polega na tym, że w tabeli podrzędnej (w której definiujemy klucz obcy) kolumny wchodzące w skład klucza obcego mogą zawierać wyłącznie wartości występujące w tabeli nadrzędnej w odpowiadających im kolumnach tworzących tam klucz główny.



Klucz główny:

  • wartość, jaka przyjmują kolumny klucza głównego musi być unikalna -
    obligatoryjne jest stworzenie unikalnego indeksu dla kolumn tworzących klucz
    główny,

  • tabela może posiadać tylko jeden klucz główny,

  • klucz główny może być oparty o jedną lub więcej (co najwyżej 16) kolumnach
    tabeli, a jego sumaryczna wielkość nie może przekraczać-255 bajtów,

  • każda kolumna wchodząca w skład klucza głównego musi posiadać atrybut
    NOT NULL,

  • w skład klucza głównego nie mogą wchodzić kolumny typu LONG VARCHAR.

Klucz obcy:

  • klucz obcy musi odnosić się do zdefiniowanego wcześniej klucza głównego
    w tabeli nadrzędnej,

  • musi być wcześniej utworzony indeks unikalny dla kolumn klucza głównego
    w tabeli nadrzędnej,

  • klucz obcy może składać się z jednej lub więcej (do 16) kolumn - musi być
    oparty o dokładnie taka sama listę kolumn (liczba, typy, kolejność) jak klucz
    główny w tabeli nadrzędnej,

  • klucz obcy może odwoływać się do tej samej tabeli, w której jest tworzony,

  • kolumny wchodzące w skład klucza obcego mogą, ale nie musza posiadać
    atrybutu NOT NULL,

  • wartość klucza obcego jest pusta, gdy którakolwiek kolumna wchodząca w jego
    skład jest pusta,

  • w tabeli może być zdefiniowanych kilka kluczy obcych,

  • jedna kolumna może wchodzić w skład różnych kluczy obcych (a także w skład
    klucza głównego),

  • najczęściej dla kolumn wchodzących w skład klucza obcego warto założyć indeks
    (nieunikalny), gdyż prawdopodobnie będą one często występować jako warunek
    złączenia tabel.

Kontrola zgodności danych występujących w tabeli nadrzędnej i podrzędnej realizowana jest w czasie wykonywania wszystkich operacji na danych, chyba, że jest to w bazie danych wyłączone (poleceniem SET REFINTCHECK ON/OFF).

Serwer nie dopuszcza do wprowadzenia danych do tabeli podrzędnej, dla których nie istnieją odpowiednie dane (o wartościach równych którejś z wartości klucza głównego) w tabeli nadrzędnej.

Jeśli dla wiersza tabeli nadrzędnej istnieją wiersze potomne (o odpowiednich wartościach w kolumnach klucza obcego) w tabeli podrzędnej, nie można zmodyfikować danych wchodzących w skład klucza głównego w tym wierszu.

Natomiast reakcję serwera na próbę usunięcia danych z tabeli nadrzędnej, które posiadają wiersze potomne można uzależnić za pomocą opcjonalnej frazy ON DELETE:



  • RESTRICT (opcja domyślna) oznacza brak możliwości usunięcia takich danych,

  • CASCADE - powoduje, że usunięcie danych z tabeli nadrzędnej pociąga za
    sobą automatyczne usunięcie wierszy potomnych z tabeli podrzędnej,

  • SET NULL - jest zezwoleniem na usuwanie danych z tabeli nadrzędnej,
    a wiersze tabeli podrzędnej, które w wyniku tej operacji zostały "osierocone"
    zostaną automatycznie zmodyfikowane: będą posiadać wartości NULL w
    kolumnach klucza głównego.

Przy projektowaniu struktury bazy danych z więzami integralności referencyjnej należy zwrócić uwagę, że nie powinny pojawić się cykle tabel połączonych takimi więzami, dla których wszystkie opcje ON DELETE ustawione są na CASCADE lub RESTRICT.

Przykłady:

create table zespoły

( nrz smallint not null,

nazwa_z char(40) not null,

primary key {nrz) )
create unique index zesp_nr on zespoły (nrz)
create table pracowni

( nrp int not null,

nazw char (25) not null,

data_ur date not null,

nrz smallint,

primary key (nrp),

foreign key fk_zesp (nrz) references zespoly

on delete set null)


create unique index prac_nr on pracowni (nrp)
create index prac_nrz on pracowni (nrz)

5.3Modyfikacja struktury tabeli





Za pomocą tego polecenia można dodać, usunąć, zmodyfikować kolumny lub zmienić nazwy kolumn, czy całej tabeli. Można wykonać tylko jedną z tych operacji naraz.

Jeśli usuwamy, modyfikujemy kolumny lub zmieniamy nazwę tabeli, automatycznie usuwane są perspektywy z nimi związane.


  • ADD - dodaje kolumny do tabeli. Kolumny są definiowane w ten sam sposób
    jak przy tworzeniu tabeli.

  • DROP - usuwa kolumny z tabeli. Jeśli kolumna nie była pusta, dane zostają
    utracone. Nie można usunąć kolumn, na których zbudowane są indeksy, a także
    kolumn wchodzących w skład klucza głównego lub obcego.

  • MODIFY - zmienia atrybuty kolumny. Można zwiększyć rozmiary kolumny
    znakowej. Nie można jej rozmiaru zmniejszyć. Nie można zmieniać typu danych
    w kolumnie. Nie można zmieniać rozmiaru kolumn numerycznych. Opcje NOT
    NULL i NOT NULL WITH DEFAULT mają takie samo znaczenie, jak przy
    tworzeniu tabeli. Opcja NULL powoduje wyłączenie atrybutów NOT NULL.

  • RENAME - umożliwia zmianę nazwy kolumny, bądź całej tabeli.

Przykłady:

alter table pracowni add imie char(l5)

alter table pracowni modify imie char(20) not null

alter table pracowni rename table "wszyscy pracownicy"


5.4Modyfikacja więzów integralności w tabeli


Ta sama instrukcja (ALTER TABLE) służy do dodania lub usunięcia kluczy głównych i obcych w tabelach:


W najnowszej wersji serwera SQLBase nie specyfikujemy frazy ADD, aby dodać więzy.

Przy zakładaniu więzów należy przestrzegać reguł opisanych przy omawianiu instrukcji tworzenia tabeli, z tym, że dla klucza głównego musi już istnieć w tym przypadku unikalny indeks.

5.5I
ndeksowanie tabeli


Powyższa instrukcja umożliwia stworzenie indeksu na tabeli:



  • unikalnego (gdy użyjemy frazy UNIQUE) - jest to jedyna metoda wymuszenia
    w serwerze SQLBase unikalności przechowywanych danych,

  • nieunikalnego (bez frazy UNIQUE) - potencjalnie przyspieszającego
    wyszukiwanie danych.

Serwer SQLBase wspiera dwie struktury indeksów:

  • B-drzewa - domyślna struktura indeksów, które można zakładać na pustej lub
    wypełnionej już tabeli, liczba tych indeksów nie jest ograniczona formalnie. Tylko
    dla tych indeksów ma znaczenie opcja ASC (domyślna) lub DESC oznaczające
    kolejność sortowania.

  • tablice mieszające (fraza CLUSTERED HASHED) - są to indeksy
    umożliwiające szybszy dostęp do danych niż w przypadku B-drzewa. w przypadku
    gdy jest to indeks unikalny lub dane powtarzają się stosunkowo rzadko (jest mało
    kolizji w tablicy mieszającej). Ten rodzaj indeksów przeznaczony jest dla tabel
    statycznych (np. słownikowych), których rozmiar jesteśmy w stanie przewidzieć -
    tylko dla tych indeksów używamy frazy SIZE n ROWS. Indeksy mieszające można
    tworzyć tylko w momencie, gdy tabela nie zawiera danych. Można utworzyć tylko
    jeden indeks mieszający dla danej tabeli.



Indeksy można również tworzyć nie tylko bezpośrednio w oparciu o wartości występujące w kolumnach, wyrażenie indeksujące może również jako argument posiadać wyniki funkcji operujących na danych. Funkcje jako argumenty indeksów nie mogą być zagnieżdżane.

Przykłady:

create index doch_nrpnrt on pracowni(nrp, nrt)

create unique clustered hashed index zesp_nr on zespoly (nrz) size 100 rows

create index prac_nazwimie on pracowni (@upper(nazw), @upper(imię))



5.6Usuwanie obiektów z bazy danych:

P
olecenie to usuwa odpowiedni obiekt z bazy danych:





  • TABLE - usuwa wyspecyfikowana tabelę, wszystkie synonimy i indeksy zdefiniowane dla tej tabeli i wszystkie przywileje związane z tabelą. Wszystkie perspektywy, które odnosiły się do kolumn tej tabeli zostają również automatycznie usunięte. W bazie danych, w której zdefiniowano więzy integralności referencyjnej automatycznie znikają klucze obce odnoszące się do usuwanej tabeli.




  • VIEW - usuwa definicję perspektywy z systemowego katalogu; automatycznie usuwane są wszystkie perspektywy bazujące na kolumnach perspektywy usuwanej oraz odnoszące się do niej przywileje użytkowników.




  • INDEX - usunięcie indeksu; nie wpływa na zawartość tabeli.




  • SYNONYM (lub PUBLIC SYNONYM)- usunięcie synonimu i perspektyw na
    nim bazujących.



Przykłady:

drop view prac_zesp_5

drop index prac_nrz

6Uprawnienia użytkowników


W serwerze SQLBase system użytkowników bazy danych jest zupełnie odseparowany od systemu użytkowników systemu operacyjnego. Nie jest on nawet wspólny dla samego serwera - w każdej bazie danych definiuje się odrębny system użytkowników i ich uprawnień.

6.1Poziomy uprawnień użytkowników


Generalnie istnieją trzy poziomy użytkowników (oraz dodatkowe, systemowe konto użytkownika SYSADM):

  • CONNECT- - ten poziom uprawnień musi być nadany użytkownikowi zanim
    osiągnie on jakiekolwiek inne uprawnienia. Nadanie tego poziomu uprawnień
    można rozumieć jako utworzenie konta danego użytkownika, a odebranie tego
    poziomu - usunięcie użytkownika z systemu. Poziom ten uprawnia do połączenia
    się z bazą danych oraz korzystania z nadanych temu użytkownikowi (lub
    publicznych) przywilejów odnoszących się do poszczególnych tabel.

  • RESOURCE - ten poziom daje użytkownikowi prawo do tworzenia własnych
    tabel, usuwania ich oraz do nadawania i odbierania uprawnień do tych tabel
    istniejącym użytkownikom bazy danych.

  • DBA - automatycznie daje wszystkie przywileje do każdej tabeli w bazie danych,
    łącznie z zarządzaniem prawami do tabel dla istniejących użytkowników. Jednak
    użytkownik poziomu DBA nie może tworzyć nowych użytkowników w bazie
    danych, zmieniać użytkownikom haseł i poziomów uprawnień. Te przywileje
    zastrzeżone są dla użytkownika SYSADM.

Do podnoszenia poziomu uprawnień służy instrukcja GRANT:


Do obniżania poziomu uprawnień służy instrukcja REVOKE:




Odebranie poziomu DBA lub RESOURCE powoduje, że użytkownikowi pozostaje poziom CONNECT.



Przykłady:

grant connect to ola, basia identified by ooo, bbb

grant resource to ola grant dba to basia

revoke dba from basia

(użytkownik basia ma teraz poziom CONNECT)
Zmiana hasła użytkownika SYSADM:

grant connect to sysadm identified by haselko


6.2Przywileje dotyczące tabel





To polecenie daje użytkownikowi jedno lub więcej uprawnień dotyczących tabeli lub perspektywy (tylko prawa INDEX i ALTER nie dotyczą perspektyw).

Nazwy praw to nazwy operacji, jakie użytkownik może wykonywać na podanej tabeli (ALL oznacza wszystkie pozostałe prawa, które można w tej instrukcji wyspecyfikować).

Tylko prawo UPDATE można przydzielać na poziomie poszczególnych kolumn, pozostałe prawa dotyczą wszystkich kolumn tabeli.

Słowo PUBLIC umożliwia nadanie praw publicznych wszystkim użytkownikom bazy danych - obecnym i przyszłym.

Odpowiednio do odbieranie uprawnień służy instrukcja REVOKE:





6.3Rola perspektyw w ochronie danych przed niepowołanym dostępem





Perspektywy bywają tworzone w bazie danych w celu uszczegółowienia uprawnień użytkowników na poziomie danych w tabeli. Nadając uprawnienia do perspektywy, a nie tabeli bazowej można zarządzać prawami w odniesieniu do poszczególnych kolumn, a nawet wierszy (gdy perspektywa jest tworzona z niepustymi warunkami selekcji we frazie WHERE).


6.4Synonimy nazw tabel


Pełna nazwa tabeli (lub perspektywy) w serwerze SQLBase (zgodnie z ANSI) składa się z dwóch elementów: nazwy właściciela i nazwy tabeli (zapis: właściciel.tabela). Jeżeli użytkownik jest właścicielem (czyli tabela została przez niego utworzona) tabeli, do której się odwołuje, nie musi używać przedrostka z nazwą właściciela - serwer domyślnie jako przedrostka używa nazwy bieżącego użytkownika.

Istnieje możliwość zdefiniowania alternatywnych nazw dla tabel i perspektyw - ich synonimów. Synonimy często tworzy się właśnie po to, by móc ominąć konieczność kwalifikowania nazw tabel nazwą ich właściciela.

Synonimy mogą być publiczne (PUBLIC) - widoczne dla wszystkich użytkowników (synonimy takie może tworzyć wyłącznie właściciel tabeli, użytkownik poziomu DBA lub SYSADM), lub lokalne - każdy użytkownik może tworzyć na własny użytek dowolne synonimy dla tabel i perspektyw, do których posiada co najmniej prawo SELECT.

Użytkownik może przysłonić synonim publiczny, gdy stworzy synonim lokalny z taką samą nazwą jak istniejący synonim publiczny.

Poprzez stworzenie systemu perspektyw i synonimów można doprowadzić do takiej sytuacji, że w tej samej bazie danych różni użytkownicy odwołując się do tej samej nazwy obiektu będą odwoływać się do różnych danych.




Przykłady:

create synonym prac for sysadm.pracowni



create public synonym pracowni from sysadm.pracowni


©snauka.pl 2016
wyślij wiadomość