Ćwiczenie 6
Tworzenie tabel
Nazwa tabeli musi być zgodna regułami nazewnictwa obiektów bazy danych Oracle:
Każda kolumna musi mieć określony typ danych:
CHAR (n) |
ciąg dowolnych znaków stałej długości, parametr n wskazuje maksymalną długość ciągu |
VARCHAR (n) |
ciąg znaków zmiennej długości, parametr n wskazuje maksymalną długość ciągu |
NUMBER (p,s) |
liczba o precyzji p i skali s, precyzja (liczba cyfr znaczących) może przyjmować wartości od 1 do 38, skala (liczba cyfr po przecinku) wartości od -84 do 127 |
DATE |
daty w przedziale między 1 stycznia 4712 roku a 31 grudnia 4712 naszej ery, |
LONG |
ciąg znaków zmiennej długości o maksymalnym zakresie 2 GB, w tabeli może być tylko jedna |
RAW (n) |
ciąg bajtów o długości do n bajtów, maksymalne n=2000 |
LONG RAW |
ciąg bajtów o maksymalnej długości do 2 GB, w tabeli może być tylko jedna taka kolumna |
ROWID |
do przechowywania adresów fizycznych wierszy |
polecenia DDL (CREATE, ALTER, DROP).
Do budowania tabel służy polecenie CREATE TABLE:
CREATE TABLE nazwa_tablicy
(nazwa_kolumny typ (rozmiar) [NULL | NOT NULL],
nazwa_kolumny typ (rozmiar) [NULL | NOT NULL],
…);
Do zmiany definicji tabeli służy polecenie ALTER TABLE.
ALTER TABLE nazwa
ADD nazwa_kolumny typ (rozmiar),
nazwa_kolumny typ (rozmiar),
...);
polecenia DML INSERT, UPDATE i DELETE.
Polecenie INSERT służy do wstawiania nowych wierszy do tabeli:
INSERT INTO nazwa_tabeli [(lista_kolumn)]
VALUES (lista_wartości);
Do zmiany zawartości wierszy służy polecenie UPDATE.
UPDATE nazwa_tabeli [alias]
SET kolumna = { wyrażenie | podzapytanie }
[ WHERE warunek ];
zatwierdzenie transakcji — polecenie COMMIT
wycofania transakcji — polecenie ROLLBACK
Punkty zachowania stosuje się, aby podzielić transakcje na mniejsze części.
SAVEPOINT nazwa_punktu_zachowania;
ROLLBACK TO [SAVEPOINT] nazwa_punktu_zachowania;
Zadania do zapytań SQL:
Utwórz tabelę pracownicy o strukturze:
Nazwa kolumny |
typ (rozmiar) |
NULL | NOT NULL |
ID |
NUMBER(4) |
NOT NULL |
Nazwisko |
VARCHAR2(25) |
|
Imię |
VARCHAR2(25) |
|
PracID |
VARCHAR2(8) |
|
Pensja |
NUMER(9,2) |
|
ID |
Nazwisko |
Imię |
PracID |
Pensja |
1 |
Dobra |
Ewa |
edobra |
4 400,00 |
2 |
Starszy |
Norbert |
nstarszy |
1 900,00 |
3 |
Siwy |
Marek |
msiwy |
1 700,00 |
4 |
Zabawny |
Hubert |
hzabawny |
3 200,00 |
5 |
Roztropna |
Klara |
kroztrop |
1 800,00 |
Dodaj pierwszy wiersz danych do tabeli pracownicy na podstawie przykładowych danych.
Nie specyfikuj kolumn w klauzuli INSERT pracownicy55 to nazwa tabeli
insert into pracownicy55
values
(
1,'Dobra', 'Ewa', 'edobra', 4400.00);
insert into pracownicy55 values
(2, 'Starszy', 'Norbert', 'nstarszy', 1900.00);
insert into pracownicy55 values (3, 'Siwy', 'Marek', 'msiwy', 1700.00);
insert into pracownicy55 values (4, 'Zabawny', 'Hubert', 'hzabawny', 3200.00);
insert into pracownicy55 values (5, 'Roztropna', 'Klara', 'kroztrop', 1800.00);
Zatwierdź swoje zmiany w tabeli. Wyświetl wszystkie informacje w niej zawarte.
commit
Połącz pierwszą siedem pierwszych liter nazwiska i literę imienia, aby utworzyć nowy identyfikator użytkownika. Użyj funkcji SUBSTR (kolumna, m [,n]).
update pracownicy55 set PRACID = substr(NAZWISKO,1,7)||substr(IMIE,1,1);
Wypełnij tabelę dwoma następnymi wierszami. Zatwierdź swoje zmiany w tabeli. Uczyń swoje zmiany trwałymi.
insert into pracownicy55 values(6,'Abacki','Marek','mabacki',1600.00);
insert into pracownicy55 values(7,'Babacki','Antoni','mabacki',2600.00);
Zmień nazwisko pracownika 3 na Wysoki.
update pracownicy set NAZWISKO = 'Wysoki' where ID = 3;
Zmień pensję na 2000 tym pracownikom, którzy zarabiają mniej niż l 999. Sprawdź zmiany.
update pracownicy55 set PENSJA = 2000.00 where PENSJA < 1999.00;
Usuń pracownika Hubert Zabawny z tabeli.
delete from pracownicy55 where NAZWISJKO='Zabawny';
Ustaw pośredni punkt w treści transakcji.
savepoint pierwszy;
Opróżnij tabelę. Sprawdź czy tabela jest pusta.
delete from pracownicy55;
Wycofaj ostatnią operację DELETE bez wycofania wcześniejszej operacji INSERT.
rollback to pierwszy;
Sprawdź czy nowy wiersz pozostał w tabeli. Zatwierdź zmiany w tabeli.
select * from pracownicy55;
Uprawnienia obiektowe nadajemy poleceniem:
GRANT uprawnienie [, uprawnienie...]
ON obiekt
TO użytkownik [, użytkownik];
Przyznaj sąsiadowi po prawej lub lewej Twojej stronie uprawnienie SELECT do Twojej tabeli Uwaga: w naszej bazie użytkownika identyfikuje się poprzez "LAB\LOGIN". Wszystkie litery duże. LOGIN to numer indeksu.
Do odbierania uprawnień obiektowych służy polecenie REVOKE:
REVOKE uprawnienie [, uprawnienie...]
ON obiekt
FROM użytkownik;
Uchyl uprawnienia do Twojej tabeli
Odczytaj ze słownika danych USER_TABLES informacje na temat tabel, których jesteś właścicielem
SELECT table_name FROM user_tables
Odczytaj perspektywę słownikową ALL_TABLES
Powtórz materiał do kolokwium
create table pracownicy55
(
ID number(4)not null,
Nazwisko varchar2(25),
Imie varchar2(25),
PracID varchar2(8),
Pensja number(9,2)
);
SQL Ćwiczenia Strona 3