SQL - DDL. 1 Tabele systemowe. 2 Typy danych



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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 4. SQL praca z tabelami 1

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

Bazy danych 7. SQL podstawy

Język SQL, zajęcia nr 1

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

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

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

Bazy danych. Dr inż. Paweł Kasprowski

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

Projektowanie systemów baz danych

2 Przygotował: mgr inż. Maciej Lasota

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

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Bazy danych 5. Samozłaczenie SQL podstawy

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

Aspekty aktywne baz danych

Autor: Joanna Karwowska

CREATE USER

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

Instrukcja CREATE TABLE

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

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

Bazy danych 6. Klucze obce. P. F. Góra

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Bazy danych - Materiały do laboratoriów VIII

Wykład 05 Bazy danych

Wykład 8. SQL praca z tabelami 5

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

Bazy danych Ćwiczenia projektowe

Język baz danych SQL cz.1

Uprawnienia, role, synonimy

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

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

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

Bazy danych. Polecenia SQL

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

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

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych - wykład wstępny

Administracja i programowanie pod Microsoft SQL Server 2000

SQL 4 Structured Query Lenguage

Bazy danych 10. SQL Widoki

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Wykład 5. SQL praca z tabelami 2

Dr Michał Tanaś(

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

E.14 Bazy Danych cz. 16 SQL Tworzenie, modyfikowanie i usuwanie tabel

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

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

Tworzenie, modyfikowanie i usuwanie tabel

Tworzenie baz danych i tabel

Paweł Rajba

Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Obiekty dowolnego typu, w tym bazy danych, możemy tworzyć instrukcją CREATE. Po czasowniku CREATE należy podać typ tworzonego obiektu i jego nazwę.

Bazy danych i usługi sieciowe

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

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Bazy Danych i Usługi Sieciowe

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

Oracle PL/SQL. Paweł Rajba.

SQL/MySQL. Rafał Kern

Typy Oracle atrybutów relacji Typ NUMBER (1)

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Typy Oracle atrybutów relacji Typ NUMBER (1)

Wykład :45 BD-1 W_3

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Język SQL, zajęcia nr 2

Oracle11g: Wprowadzenie do SQL

Bazy danych i usługi sieciowe

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

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

SIECI KOMPUTEROWE I BAZY DANYCH

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

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

Bazy danych Ćwiczenia projektowe

Wykład 6. SQL praca z tabelami 3

Bazy danych 4. SQL- podstawy

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych

Transkrypt:

SQL - DDL 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 MySQL. 1 Tabele 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. 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. Użytkownik (prócz administratora) 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. 2 Typy danych 2.1 Liczby całkowite (INTEGER): INT, INTEGER - w takich kolumnach przechowujemy liczby całkowite z zakresu: 2147483648 do 2147483647 (4 bajty) TINYINT - liczba całkowita z zakresu:-128 do 127 (1 bajt) SMALLINT - liczba całkowita z zakresu:-32768 do 32767 (2 bajty) MEDIUMINT - liczba całkowita z zakresu:-8388608 do 8388607 (3 bajty) BIGINT - liczba całkowita z zakresu: 9223372036854775808 do 9223372036854775807 (8 bajtów) 2.2 Liczby rzeczywiste (REAL): FLOAT [(M, D)] - liczba rzeczywista z zakresu: 3.402823466E+38 do - 1.175494351E-38 oraz 0 i 1.175494351E-38 do 3.402823466E+38 (4 bajty), DOUBLE [(M, D)] - liczba rzeczywista z zakresu: 1.7976931348623157E+308 do 2.2250738585072014E-308 i 0 i 2.2250738585072014E-308 do 1.7976931348623157E+308 (8 bajtów) DECIMAL [(M[, D])] ustalona liczba, gdzie M jest ilością znaczących pozycji w liczbie, a D

ilość pozycji po separatorze dziesiętnym (domyślnie kropka), np.: DECIMAL(5,2) będzie miał zakres od -999.99 do 999.99. 2.3 Czasowe typy danych w MySQL'u DATETIME - data wraz z godziną w formacie: YYYY:MM:DD:HH:mm:SS (odpowiednio rok, miesiac, dzien, godzina, minuta i sekunda), typ ten akceptuje zakres od '1000-01-01 00:00:00' do '9999-12-31 23:59:59' DATE - data w formacie YYYY:MM:DD (rok, miesiac, dzien), zakres od '1000-01-01' do '9999-12-31' TIME - godzina w formacie HH:mm:SS (godzina, minuta, sekunda) YEAR - rok YYYY (np.:2001) zakres od 1901 do 2155 (1 bajt) TIMESTAMP(n) - data z godzina, precyzje ustalana przez użytkownika poprzez wartość n (dla przykładu n=14 oznacza datę i godzinę w formacie YYYY:MM:DD:HH:mm:SS a n=2 YY) zakres od 1970 do 2037 2.4 Łańcuchowe (znakowe) typy danych CHAR[n] - łańcuch znaków o ustalonej długości n, gdzie n może przyjmować wartości 0-255, domyślnie n = 1. VARCHAR(n) - łańcuch znaków o zmiennej długości, maksymalnie n, gdzie n może przyjmować wartości 0-65 535. BLOB - "pamięta" dane w formie binarnej, ze względu na maksymalna długość takiego ciągu znaków dzieli sie na kilka podtypów: TINYBLOB (2^8 znaków), BLOB (2^16 znaków), MEDIUMBLOB (2^24 znaków), LONGBLOB (2^32 znaków). TEXT - dane tekstowe, podobnie jak BLOB ma odmiany ze względu na długość tekstu: TINYTEXT (2^8-256 znaków ), TEXT (2^16-65535 znaków), MEDIUMTEXT (2^24-16777216 znaków), LONGTEXT (2^32 4294967296 znaków). 2.5 Typ wyliczeniowy ENUM Dane przyjmują wartości spośród wcześniej przygotowanej przez nas listy. Lista taka może mieć maksymalnie 65535 elementów. 2.6 Typ zbiorowy SET Pozycja taka może przyjmować 0 lub więcej wartości spośród listy przygotowanej podczas tworzenia tabeli. Przykład : dla definicji SET ("jeden", "dwa") do komórki tabeli możemy zapisać następujące wartości: "" lub "jeden" lub "dwa" lub "jeden, dwa". Definicja SET może mieć maksymalnie 64 elementy. 3 Zarządzanie strukturą tabel 3.1 Tworzenie tabel Do tworzenia tabel służy polecenie: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option] [partition_options]. W najprostszej postaci tego polecenia specyfikujemy tylko nazwę tabeli (table name) oraz listę nazw kolumn (column name) wraz z typami i rozmiarami (data type), np.: CREATE TABLE pracownicy ( imie VARCHAR(30), nazwisko VARCHAR(30), data_urodzenia DATE, placa DECIMAL(10,2) ); Po każdej nazwie pola następuje definicja typu danych, jakie będzie ono zawierało:

data_type [NOT NULL NULL] [DEFAULT default_value]. Atrybut kolumny NOT NULL oznacza, że zadaniem serwera jest niedopuszczenie do sytuacji, aby w jakimkolwiek wierszu tabeli kolumna ta miała wartość pustą. Istnieje możliwość określenia wartości domyślnej, jakie przyjmie każde nowe pole w momencie, kiedy nie zostanie wypełnione innymi danymi. Wartości domyślne podaje się dla każdego pola po słowie kluczowym DEFAULT zaraz po definicji typu, np.: CREATE TABLE pracownicy ( imie VARCHAR(30), nazwisko VARCHAR(30) NOT NULL, data_urodzenia DATE NOT NULL DEFAULT '1950-01-01', placa DECIMAL(10,2) DEFAULT '1000.00' ); 3.2 Wię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ść, jaką przyjmują kolumny klucza głównego musi być unikalna, tabela może posiadać tylko jeden klucz główny, klucz główny może być oparty o jedną lub więcej kolumn, każda kolumna wchodząca w skład klucza głównego musi posiadać atrybut NOT NULL. Klucz obcy: klucz obcy musi odnosić się do zdefiniowanego wcześniej klucza głównego w tabeli nadrzędnej, klucz obcy może składać się z jednej lub więcej kolumn - musi być oparty o dokładnie taka sama listę kolumn (liczba, typy, kolejność) jak klucz główny w tabeli nadrzędnej, kolumny wchodzące w skład klucza obcego mogą, ale nie musza posiadać atrybutu NOT NULL, w tabeli może być zdefiniowanych kilka kluczy obcych. 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. 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, modyfikację lub usunięcie danych z tabeli nadrzędnej, które posiadają wiersze potomne można uzależnić za pomocą opcjonalnej frazy: REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: 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. NO ACTION.

create table zespoły ( nrz smallint not null primary key, nazwa_z char(40) not null) create 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 foreign key fk_zesp (nrz) references zespoly (nrz)on delete set null) 3.3 Modyfikacja struktury tabeli ALTER TABLE tbl_name alter_specification [, alter_specification] Za pomocą tego polecenia można dodać, usunąć, zmodyfikować kolumny lub zmienić nazwy kolumn, czy całej tabeli: 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 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. alter table pracowni add imie char(l5) alter table pracowni modify imie char(20) not null alter table pracowni rename table 'wszyscy pracownicy' 3.4 Modyfikacja 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: ADD PRIMARY KEY (index_col_name,...) ADD FOREIGN KEY (index_col_name,...) reference_definition lub DROP PRIMARY KEY DROP FOREIGN KEY fk_symbol Przy zakładaniu więzów należy przestrzegać reguł opisanych przy omawianiu instrukcji tworzenia tabeli. 3.5 Indeksowanie tabeli CREATE [ONLINE OFFLINE] [UNIQUE FULLTEXT SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) index_type: USING {BTREE HASH} Powyższa instrukcja umożliwia stworzenie indeksu na tabeli:

unikalnego (gdy użyjemy frazy UNIQUE) - wymuszającego w serwerze unikalność przechowywanych danych, nieunikalnego (bez frazy UNIQUE) - potencjalnie przyspieszającego wyszukiwanie danych. Serwer wspiera 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 (HASH) - 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ć. create index doch_nrpnrt on pracowni(nrp, nrt) create unique index zesp_nr using hash on zespoly (nrz) 3.6 Usuwanie obiektów z bazy danych: Polecenie to usuwa odpowiedni obiekt z bazy danych: DROP TABLE tbl_name - 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. DROP 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. DROP INDEX - usunięcie indeksu; nie wpływa na zawartość tabeli. drop view prac_zesp_5 drop index prac_nrz 4 Uprawnienia użytkowników 4.1 Użytkownicy Do zarządzania kontami użytkowników służą polecenia: CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] tworzące konto uzytkownika. RENAME USER old_user TO new_user umożliwiające zmianę nazwy użytkownika. DROP USER user usuwające konto użytkownika. SET PASSWORD [FOR user] = { PASSWORD('some password') OLD_PASSWORD('some password') 'encrypted password'} pozwala przypisać hasło istniejącemu użytkownikowi. create user basia identified by bbb drop user basia 4.2 Przywileje dotyczące tabel GRANT priv_type [(column_list)] [, priv_type [(column_list)]]...

ON [object_type] priv_level TO user [IDENTIFIED BY [PASSWORD] 'password'] [WITH with_option [with_option]...] To polecenie daje użytkownikowi jedno lub więcej uprawnień dotyczących object_type: TABLE FUNCTION PROCEDURE z opcją np. GRANT OPTION. Typy uprawnień dotyczą (priv_level) m.in.: * *.* db_name.* db_name.tbl_name tbl_name. Odpowiednio do odbieranie uprawnień służy instrukcja REVOKE: REVOKE priv_type [(column_list)] [, priv_type [(column_list)]]... ON [object_type] priv_level FROM user [, user]... CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; GRANT ALL ON db1.* TO 'jeffrey'@'localhost'; GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost'; 4.3 Rola 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).