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.

Podobne dokumenty
Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

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

Wykład 4. SQL praca z tabelami 1

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Język SQL. Rozdział 8. Język manipulowania danymi DML

Instrukcja CREATE TABLE

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

Aspekty aktywne baz danych

Język SQL. Rozdział 3. Funkcje wierszowe

Paweł Rajba

Wprowadzenie do języka PL/SQL. Rozdział 9 Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL

Język PL/SQL. Rozdział 1. Wprowadzenie do języka PL/SQL

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

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

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

Język SQL. Rozdział 2. Proste zapytania

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

Dr Michał Tanaś(

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych Ćwiczenia projektowe

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

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

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

Bazy danych - Materiały do laboratoriów VIII

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

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Pakiety podprogramów Dynamiczny SQL

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

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

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Autor: Joanna Karwowska

Baza danych inside. Biologiczne Aplikacje Baz Danych

2 Przygotował: mgr inż. Maciej Lasota

Wykład 5. SQL praca z tabelami 2

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

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

Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bloki anonimowe w PL/SQL

SIECI KOMPUTEROWE I BAZY DANYCH

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

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

Bazy danych. Dr inż. Paweł Kasprowski

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

Bazy danych 7. SQL podstawy

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Wykład 6. SQL praca z tabelami 3

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PL/SQL. Lidia Małkiewicz i Cezary Skubała

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

Język PL/SQL Wprowadzenie

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL Wprowadzenie

Optymalizacja poleceń SQL Statystyki

Wykład 05 Bazy danych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

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

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Współczesne systemy baz danych

Współczesne systemy baz danych

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

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

WPROWADZENIE DO JĘZYKA SQL

Język PL/SQL Procedury i funkcje składowane

Instrukcje DML INSERT, UPDATE, DELETE. COPY

Bazy Danych i Usługi Sieciowe

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

Przedmowa Rozpoczęcie pracy z bazą danych Microsoft SQL Server Podstawowe instrukcje języka SQL...39

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

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

Język SQL, zajęcia nr 1

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Wykład 8. SQL praca z tabelami 5

Język SQL. Rozdział 3. Zaawansowana selekcja danych

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Bazy danych Ćwiczenia projektowe

Relacyjne bazy danych. Podstawy SQL

SQL Structured Query Language

Bazy danych i usługi sieciowe

Oracle11g: Wprowadzenie do SQL

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

Oracle PL/SQL. Paweł Rajba.

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

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

15. Funkcje i procedury składowane PL/SQL

Struktura bazy danych

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Tworzenie baz danych i tabel

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

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

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Transkrypt:

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. 1

polecenie CREATE TABLE CREATE TABLE nazwa_relacji Tworzenie relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr], nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna]... [ [CONSTRAINT nazwa_ogr] ograniczenie_atr], [ [CONSTRAINT nazwa_ogr] ograniczenie_rel,...] ); Nazwa relacji: musi zaczynać się od litery A-Za-z, może zawierać litery, cyfry, znaki _ $ # (ostatnie dwa nie są zalecane), jest nieczuła na wielkość użytych znaków (chyba że użyto cudzysłowu), długość nie może przekroczyć 128 bajtów (od Oracle12c), musi być jednoznaczna i różna od nazw innych relacji, perspektyw i synonimów w schemacie danego użytkownika, nie może być słowem zastrzeżonym języka SQL. 2

Typ danych CHAR(n BYTE CHAR) NCHAR(n) VARCHAR2(n BYTE CHAR) NVARCHAR2(n) Typy Oracle atrybutów relacji Dopuszczalne wartości Ciąg znaków o stałej długości i rozmiarze n bajtów lub znaków (dom. 1). Maks. 2000B Jak CHAR(n), n liczba znaków, w UNICODE (2B lub 3B na znak) Ciąg znaków o zmiennej długości i rozmiarze n bajtów lub znaków. Maks. 4000B (32 767B od Oracle 12c). Rozmiar n musi być podany. Jak VARCHAR2(n), n liczba znaków, w UNICODE (2B lub 3B na znak) NUMBER(p,s) Liczba o precyzji p (1-38) i skali s (-84,127) z przedziału 1x10-130 9.9...9x10 125 DATE Data z przedziału 1.01.4712 p.n.e. i 31.12.9999 n.e. TIMESTAMP(p) Znacznik czasowy z dokł. p części ułamkowych sekundy (od 0 do 9, domyślnie 6) INTERVAL YEAR(p) TO MONTH INTERVAL DAY(p1) TO SECOND(p2) CLOB NCLOB BLOB BFILE Przedział czasu reprezentowany przez lata i miesiące z zadaną liczbą cyfr w określeniu lat (od 0 do 9, domyślnie 6) Przedział czasu reprezentowany przez dni, godziny, minuty i sekundy z zadaną liczbą cyfr w określeniu dni (p1) i liczbą pozycji ułamkowych części sekundy (p2) Duży obiekt binarny zawierający łańcuchy znaków (stałej i zmiennej długości) o maks. rozmiarze 128TB dla Oracle11g lub 8TB dla Oracle9i/10g Jak CLOB, w UNICODE Duży obiekt binarny o maks. rozmiarze 128TB dla Oracle11g lub 8TB Oracle9i/10g Wskaźnik na plik systemu operacyjnego 3

Typ NUMBER (1) Zakres: <10-130, 10 126-1> Zaimplementowany w sposób niezależny od platformy Deklaracja typu zmiennoprzecinkowego: NUMBER maks. 40 pozycji pr_placa NUMBER, Deklaracja typu stałoprzecinkowego: NUMBER(precyzja, skala): precyzja: <1, 38> - całkowita liczba pozycji znaczących skala: <-84, 127> - liczba pozycji na prawo (dodatnia) lub lewo (ujemna) od przecinka pr_dodatek NUMBER(6,2), pr_wzrost NUMBER(3), pr_ułamek NUMBER(8,10), pr_tysiące NUMBER(1,-3), 4

Typ NUMBER (2) Typ stałoprzecinkowy: przypadek 1. precyzja > skala, np. NUMBER(6,2): zakres: <-9 999,99, 9 999,99> liczby zaokrąglane do dwóch miejsc po przecinku, np.: 1 234,56 -> 1 234,56 1 234,567 -> 1 234,57 > 9999,99 lub < -9999,99 -> błąd przypadek 2. skala = 0, np. NUMBER(4,0) lub NUMBER(4): liczba całkowita, zakres: <-9999, 9999> liczby zaokrąglane do liczb całkowitych, np.: 0,01 -> 0 0,5 -> 1 1234,5678 -> 1235 > 9999 lub < -9999 -> błąd 5

Typ NUMBER (3) Typ stałoprzecinkowy (cd): przypadek 3. precyzja < skala, np. NUMBER(8,10): zakres: <-0.0099999999, 0.0099999999> liczby zaokrąglane do dziesięciu miejsc po przecinku, np.: 0,0012345678 -> 0,0012345678 0,00123456781 -> 0,0012345678 0,00123456789 -> 0,0012345679 0,00000000005 -> 0,0000000001 >=0,01 lub <= -0,01 -> błąd przypadek 4. skala < 0, np. NUMBER(1, -3): zakres: <-9000, 9000> liczby całkowite zaokrąglane do najbliższego tysiąca, np.: 499 -> 0 500 -> 1 000 9 499,99 -> 9 000 >=9500 lub <=-9500 -> błąd 6

Podtypy typu NUMBER DECIMAL(precyzja, skala) NUMBER(precyzja, skala), FLOAT, DOUBLE PRECISION NUMBER(126), precyzja binarna, FLOAT(precyzja) NUMBER(precyzja), precyzja binarna do 126 bitów, INT, INTEGER, SMALLINT NUMBER(38), NUMERIC(precyzja, skala) NUMBER(precyzja, skala), REAL FLOAT(63). Pozostałe typy numeryczne Typy zmiennoprzecinkowe z reprezentacją binarną wg standardu IEEE-754: BINARY_FLOAT 4 bajty, BINARY_DOUBLE 8 bajtów. 7

Ciągi znaków zmiennej długości (1) VARCHAR2 ciąg znaków kodowany zestawem znaków domyślnym dla bazy, maks. długość 4000B (32 767B w Oracle12c), długość podajemy w bajtach lub znakach: nazwisko VARCHAR2(100 BYTE), imię VARCHAR2(50 CHAR), pominięcie BYTE i CHAR długość wyrażona w jednostkach określonych przez parametr sesji NLS_LENGTH_SEMANTICS. SELECT value FROM nls_session_parameters WHERE parameter = 'NLS_LENGTH_SEMANTICS'; NVARCHAR2 ciąg znaków kodowany w wielobajtowym Unicode, może wykorzystywać inny zestaw znaków niż domyślny dla bazy. 8

Ciągi znaków zmiennej długości (2) Synonimy: VARCHAR2: CHAR VARYING, CHARACTER VARYING, STRING, VARCHAR, NVARCHAR2: NATIONAL CHAR VARYING, NCHAR VARYING, NATIONAL CHARACTER VARYING. Uwaga! W Oracle pusty ciąg znaków jest równy NULL. Jest to sprzeczne ze standardem języka SQL. SQL> create table TEST(tekst varchar2(10)); SQL> insert into TEST values(null); SQL> insert into TEST values(''); SQL> select count(*) from TEST where tekst is null; COUNT(*) -------- 2 9

Ciągi znaków stałej długości CHAR ciąg znaków kodowany zestawem znaków domyślnym dla bazy, maks długość. 2000B (255B przed Oracle8i), długość podajemy w bajtach lub znakach: PESEL CHAR(11 BYTE), plec CHAR pominięcie BYTE i CHAR długość wyrażona w jednostkach określonych przez parametr sesji NLS_LENGTH_SEMANTICS, pominięcie długości długość ciągu = 1, niewykorzystane pozycje dopełniane spacjami z prawej strony. NCHAR ciąg znaków kodowany w wielobajtowym Unicode, może korzystać z innego zestawu znaków niż domyślny dla bazy Synonimy: CHAR: CHARACTER NCHAR: NATIONAL CHARACTER, NATIONAL CHAR 10

Kolumna IDENTITY (1) Kolumna, której wartości w rekordach będą generowane automatycznie (przy użyciu sekwencji). Najczęściej służy do identyfikowania rekordów (jako np. klucz podstawowy). Cechy: tylko jedna kolumna IDENTITY w relacji, kolumna domyślnie posiada ograniczenie NOT NULL, kolumna nie może mieć zdefiniowanej klauzuli DEFAULT, mechanizm dostępny od Oracle12c. Przykłady: CREATE TABLE pracownicy (id_prac NUMBER(6) GENERATED ALWAYS AS IDENTITY, id_prac w kolejnych rekordach uzyska wartości od 1 z krokiem 1, podanie wartości dla id_prac przy wstawianiu rekordu zakończy się błędem, 11

Kolumna IDENTITY (2) Przykłady (cd): CREATE TABLE pracownicy (id_prac NUMBER(6) GENERATED BY DEFAULT AS IDENTITY, id_prac w kolejnych rekordach uzyska wartości od 1 z krokiem 1, podana przez użytkownika wartość dla id_prac przy wstawianiu rekordu zostanie uwzględniona, podanie wartości NULL zakończy się błędem, CREATE TABLE pracownicy (id_prac NUMBER(6) GENERATED BY DEFAULT ON NULL AS IDENTITY, j.w. + wartość zostanie wygenerowana automatycznie również wówczas, gdy przy wstawianiu dla id_prac podano wartość NULL. 12

Kolumna IDENTITY (3) Przykłady (cd): id_prac w kolejnych rekordach uzyska wartości od 100 z krokiem 10. CREATE TABLE pracownicy (id_prac NUMBER(6) GENERATED ALWAYS AS IDENTITY(START WITH 100 INCREMENT BY 10), 13

Wartości domyślne atrybutów (1) Każdemu atrybutowi można nadać domyślną wartość początkową. Robi się to za pomocą słowa kluczowego DEFAULT. CREATE TABLE pracownicy ( id_prac NUMBER(6), nazwisko VARCHAR2(50) DEFAULT 'NOWY PRACOWNIK', data_zatrudnienia DATE DEFAULT CURRENT_DATE, pensja NUMBER(6,2) DEFAULT 1000, badania_kontrolne DATE DEFAULT CURRENT_DATE+INTERVAL '1' YEAR); W Oracle12c wartością domyślną dla atrybutu może być sekwencja (alternatywa dla kolumny IDENTITY). CREATE TABLE pracownicy ( id_prac NUMBER(6) DEFAULT seq_prac.nextval, 14

Wartości domyślne atrybutów (2) Działanie klauzuli DEFAULT podczas wstawiania danych: SQL> CREATE TABLE test(id NUMBER NOT NULL, tekst VARCHAR2(10) DEFAULT 'PUSTY' NOT NULL); SQL> INSERT INTO test(id) VALUES(10); -- OK SQL> INSERT INTO test(id, tekst) VALUES(20, NULL); -- Błąd Od Oracle12c dostępna klauzula DEFAULT ON NULL: SQL> CREATE TABLE test(id NUMBER NOT NULL, tekst VARCHAR2(10) DEFAULT ON NULL 'PUSTY' NOT NULL); SQL> INSERT INTO test(id) VALUES(10); -- OK SQL> INSERT INTO test(id, tekst) VALUES(20, NULL); -- OK SQL> SELECT * FROM test; ID TEKST ---- ---------- 10 PUSTY 20 PUSTY 15

Tworzenie relacji przez podzapytanie (1) Wynik zapytania można utrwalić w postaci relacji: nowa relacja składa się z atrybutów wymienionych w klauzuli SELECT zapytania, jeśli podano listę nazw atrybutów nowej relacji to lista atrybutów w klauzuli SELECT zapytania musi się pokrywać z tą listą. CREATE TABLE nazwa_relacji [ (nazwa_atrybutu [typ_wartości] [NULL NOT NULL],...) ] AS SELECT zapytanie; Przykład: CREATE TABLE roczne_place (nazwisko NOT NULL, etat, roczne) AS SELECT nazwisko, etat, 12*placa_pod+COALESCE(placa_dod,0) FROM pracownicy; 16

Tworzenie relacji przez podzapytanie (2) Przykład: brak jawnej definicji atrybutów: CREATE TABLE pracownicy_zespoly AS SELECT nazwisko, nazwa, CURRENT_DATE-zatrudniony AS staz FROM pracownicy JOIN zespoly USING (id_zesp); Przykład: kopia relacji: CREATE TABLE pracownicy_kopia AS SELECT * FROM pracownicy; Uwaga! Ograniczenia integralnościowe nie są kopiowane! Przykład: kopia relacji bez danych: CREATE TABLE pracownicy_kopia AS SELECT * FROM pracownicy WHERE 1=2; 17

Słownik bazy danych (dot. Oracle) Perspektywa Synonim Opis USER_OBJECTS OBJ Obiekty użytkownika USER_TABLES TABS Relacje użytkownika USER_TAB_COLUMNS COLS Atrybuty relacji użytkownika SELECT object_name, object_type FROM user_objects ORDER BY object_name; SELECT table_name FROM user_tables ORDER BY table_name; SELECT column_name FROM user_tab_columns WHERE table_name = 'PRACOWNICY' ORDER BY column_name; 18