Laboratorium 1

Transkrypt

Laboratorium 1
Laboratorium Bazy danych SQL1
CREATE DATABASE nazwa_bazy;
tworzy bazę danych
DROP DATABASE nazwa_bazy;
usuwa istniejącą bazę danych
USE nazwa_bazy;
wybór bazy danych
SHOW DATABASES;
pokazuje nazwy wszystkich baz danych
CREATE TABLE nazwa_tabeli;
tworzy strukturę tabeli
DESCRIBE nazwa_tabeli;
wyświetla opis struktury tabeli
SHOW COLUMNS FROM nazwa_tabeli
LIKE 'wzorzec'
ALTER TABLE nazwa_tabeli;
rozszerzanie i modyfikowanie schematu tabeli
EXIT wyjście z programu
UWAGI:
•
Polecenia SQL mogą być rozmieszczone w kilku wierszach.
•
Polecenia SQL zakończ średnikiem.
•
Dobrym zwyczajem jest umieszczanie klauzul od nowych linii.
•
Nie wolno dzielić słowa pomiędzy wiersze.
•
Dozwolone jest używanie małych lub wielkich liter, chyba że sprawdzamy zawartość pola.
TWORZENIE TABEL
create table [IF NOT EXISTS] nazwa_relacji (
nazwa_atrybutu typ (rozmiar) [default wartość domyślna] [,]
[ [ constraint nazwa_ogr.] ograniczenie_atr ],
…
[ [ constraint nazwa_ogr.] ograniczenie_rel,…]
);
Ograniczenia:
•
null wartości puste;
•
not null bez wartości pustych;
•
unique klucz unikalny relacji;
•
primary key klucz podstawowy relacji (nie występuje przy ograniczeniu unique i
odwrotnie);
•
foreign key | references referencja do klucza podstawowego lub unikatowego innej relacji
(do definicji klucza obcego);
1
Laboratorium Bazy danych SQL1
•
on delete cascade ograniczenie definiowane dla klucza obcego; przy usuwaniu krotki z
relacji z kluczem podstawowym, usuwane są automatycznie krotki z relacji, w której
wartość klucza obcego jest równa wartości klucza podstawowego usuwanej krotki;
•
check ( warunek) warunek, który musi być spełniony przez wszystkie wartości atrybutu;
operatory ( =, <, !=, is null, like ( % - łańcuch o długości >= 0; _- pojedynczy znak) ,
between…and, in (…), and, or, not );
check jest ignorowany przez mysql;
•
default wartość domyślna kolumny.
Przykład 1
create table dydaktycy (
id_dydaktyka int(2) primary key,
nazwisko varchar(15) not null,
tytuł varchar(10)
);
create table przedmioty (
id_przedmiotu int(2),
nazwa varchar(15) not null,
constraint id_przedmiotu_pk primary key (id_przedmiotu)
);
create table zajecia (
id_zajec int(2) primary key,
rodzaj_zaj varchar(15) check (rodzaj_zaj in ( 'wykl', 'lab', 'cw', 'konw' )),
id_dyd int(2) ,
id_prz int(2) ,
data_rozpoczecia date
foreign key ( id_dyd ) references dydaktycy ( id_dydaktyka ),
foreign key ( id_prz ) references przedmioty ( id_przedmiotu )
);
Rozszerzanie i modyfikowanie schematu tabeli
ALTER TABLE nazwa_tabeli rozszerzanie i modyfikowanie schematu tabeli
ADD nazwa_atrybutu typ (rozmiar) [default wartość domyślna]
[ [constraint nazwa_ogr] ograniczenie_atr ]; dodanie kolumny do tabeli
2
Laboratorium Bazy danych SQL1
ADD [ constraint nazwa_ogr] ograniczenie_atr; dodanie ograniczenia integralnościowego
MODIFY nazwa_atrybutu typ (rozmiar) [default wartość domyślna]
[ null | not null ]; modyfikowanie typu kolumny
DROP unique | index | primary [foreing] key | constraint nazwa_ogr [cascade] usunięcie
ograniczenia
integralnościowego
Przykład2
alter table dydaktycy add etat varchar(20);
alter table dydaktycy
add constraint dyd_etat check (etat in ('dyrektor', 'profesor', 'adiunkt',
'asystent','wykladowca','starszy wykladowca' ));
alter table dydaktycy modify tytuł varchar(8) default 'mgr' not null;
alter table dydaktycydrop constraint dyd_etat;
Usuwanie tabeli
drop table nazwa_tabeli [cascade constraint];
Przykład 3
DROP TABLE osoby;
CREATE TABLE osoby(
id_osoby INT NOT NULL,
imie VARCHAR(15),
nazwisko VARCHAR(15),
wiek INT,
CONSTRAINT id_pk PRIMARY KEY (id_osoby)
);
DESCRIBE osoby;
Wstawianie wiersza do tabeli:
INSERT INTO nazwa_relacji [(kolumna,kolumna,...)]
VALUES [(wartość,wartość, …), ...];
3
Laboratorium Bazy danych SQL1
Przykład 4. Wstawianie wszystkich wartości pól w wierszu:
INSERT INTO osoby VALUES(1,'Adam','Nowak',19);
INSERT INTO osoby VALUES(1,'Adam','Nowak',22);
INSERT INTO osoby VALUES(2,'Iwona','Kowalska',56);
INSERT INTO osoby VALUES(3,'Lech','Nowakowski',56);
INSERT INTO osoby(pesel,imie,nazwisko,wiek)
VALUES(4,'Kazimierz','Kot',6);
INSERT INTO osoby VALUES
(10,'Adam','Nowak',19),
(20,'Adam','Nowak',19),
(40,'Adam','Nowak',19),
(60,'Adam','Nowak',19),
(70,'Adam','Nowak',19),
(80,'Adam','Nowak',19)
Wypisanie zawartości tabeli:
SELECT * FROM nazwa_tabeli;
Przykład 5:
SELECT * FROM osoby;
Przykład 6: Wstawianie wartości dla wybranych pól w wierszu:
INSERT INTO osoby(imie) VALUES('Kazimierz');
INSERT INTO osoby(id_osoby,imie) VALUES(5,'Jan');
INSERT INTO osoby(id_osoby,nazwisko) VALUES(6,'Niezbędny');
INSERT INTO osoby(id_osby,wiek) VALUES(7,41);
SELECT * FROM osoby;
Do tabeli osoby dodać atrybut (kolumnę) plec, dla której dopuszczamy tylko dwie wartości 'K' –
kobieta, 'M' – mężczyzna.
DESCRIBE osoby;
4
Laboratorium Bazy danych SQL1
Wypełnij pola następującymi wartościami:
INSERT INTO osoby VALUES(8,'Joanna','Wyzwolona',29,'F');
INSERT INTO osoby VALUES(8,'Joanna','Wyzwolona',29,'K');
SELECT * FROM osoby;
DESCRIBE osoby;
INSERT INTO osoby VALUES(9,'Zenon','Laskowik',26,'M','1981-04-12');
INSERT INTO osoby VALUES(10,'Helena','Lis',2,'K',DEFAULT);
INSERT INTO osoby VALUES(11,'Mateusz','Rybka',44,'M');
SELECT * FROM osoby;
Modyfikowanie wartości pól w wierszu:
UPDATE nazwa_tabeli
SET kolumna[,kolumna] = {wyrażenie | podzapytanie}
[WHERE waunki];
Wypełnić wszystkie puste pola w tabeli:
UPDATE osoby
SET nazwisko = 'Bryza', wiek = '33', plec = 'M', data_ur = '1974-06-05'
WHERE id_osoby = 5;
SELECT * FROM osoby;
Zamienić wartości w kolumnie plec tabeli osoby na 'K';
Zamienić wartości pól w kolumnie plec na 'M' wszystkim osobom, których imię nie kończy się na
'a'.
Usuwanie wierszy z tabeli:
DELETE FROM nazwa_tabeli
[WHERE warunki];
Usuniecie wierszy spełniajacych warunek;
DELETE FROM osoby WHERE plec = 'K';
Usunięcie wszystkich wierszy:
DELETE FROM osoby;
5
Laboratorium Bazy danych SQL1
Zadania do samodzielnego rozwiazania:
Zad. 1 Zdefiniować tabele zespol, etat i pracownik o schematach przedstawionych poniżej.
zespol
id_zesp int(2) klucz podstawowy
nazwa varchar(20) atrybut obowiązkowy
etat
nazwa varchar(10) klucz podstawowy
placa_min decimal(6,2) atrybut obowiązkowy, wartość > 0
placa_max decimal(6,2) atrybut obowiązkowy, wartość <= 5000
pracownik
numer int(4) klucz podstawowy
nazwisko varchar(15) atrybut obowiązkowy
etat varchar(10) klucz obcy referencja do atrybutu nazwa tabeli etat
szef int(4) referencja do atrybutu numer tabeli pracownik
pracuje_od date
placa podst decimal(6,2)
placa_dod decimal(6,2) domyślna wartość 0
id_zesp int(2) klucz obcy referencja do atrybutu id_zesp tabeli zespol
Zad. 2 Do tabeli pracownik dodać opcjonalny atrybut nr_telefonu typu znakowego o długości 10
znaków.
6
Laboratorium Bazy danych SQL1
Polecenie select umożliwia wyszukiwanie informacji w bazie danych przy użyciu operatorów
algebry relacji. Zawiera:
•
klauzulę select wskazującą atrybuty (kolumny), których wartości mają być wyświetlone,
•
klauzulę from wskazującą relację (tabelę), której dotyczy polecenie,
•
Klauzulę where umożliwiającą operację selekcji z algebry relacji.
Przykład 1. Wyświetlić zawartość wszystkich kolumn w tabeli pracownik.
select * from pracownik;
Przykład 2. Wyświetlić wartości kolumny etat wszystkich wierszy tabeli pracownik.
select etat from pracownik;
Wynikiem projekcji ograniczonej do małego zbioru kolumn (lub pojedynczej kolumny) może być
wyświetlenie tych samych informacji. Aby wyeliminować powtarzanie wierszy stosujemy w
klauzuli select operator distinct.
Przykład 3. Wyświetlić unikalne wartości kolumny etat tabeli pracownik.
select distinct etat from pracownik;
Klauzula select może zawierać:
➢ literały – dowolny łańcuch znaków, data lub liczba; jest dołączany automatycznie do każdego
wyświetlanego wiersza, zgodnie z umiejscowieniem w klauzuli select oraz do nagłówka kolumny,
której dotyczy.
Przykład 4. Z tabeli pracownik wyświetlić nazwiska oraz datę przyjęcia do pracy (pracuje_od)
poprzedzoną literałem ' pracuje od ' stanowiącym odrębną kolumnę.
select nazwisko, ' pracuje od ', pracuje_od from pracownik;
➢ wyrażenia arytmetyczne - konstruowane są z nazw kolumn i literałów numerycznych z użyciem
operatorów: dodawania (+), odejmowania (-), mnożenia (*) i dzielenia (/ ) (* i / maja wyższy
priorytet od + i -; w przypadku operatorów o tej samej ważności wyrażenie wartościowane jest od
lewej do prawej lub za pomocą nawiasów).
7
Laboratorium Bazy danych SQL1
Przykład 5. Wyświetlić nazwisko oraz potrojoną wartość sumy płacy podstawowej i dodatkowej
z tabeli pracownik.
select nazwisko, (placa_pod+placa_dod)*3 from pracownik;
➢ funkcje – przekształcają wartości kolumn i literałów, do których są stosowane.
Typ wynikowy
Opis
Przykład
COALESCE(list)
wartość niepusta zwraca pierwszą niepustą
wartość z listy (list)
wartość niepusta zwraca wartość (subst), gdy
not-NULL subst) nie da się odnaleźć szukanej
wartości
COALESCE(r,l,c)
IFNULL(input)
IFNULL(c, 'N/A')
Przykład 6. Wyświetlić nazwisko oraz potrojoną wartość sumy płacy podstawowej i dodatkowej
z tabeli pracownik.
select nazwisko, (placa_pod + ifnull(placa_dod,0))*3 from pracownik;
select nazwisko, (placa_pod + coalesce(placa_dod,0))*3 from pracownik;
Przykład 7. Wyświetlić nazwiska wszystkich pracowników wraz z ich dzienną płacą podstawową,
którą zaokrąglono do 1 miejsca po przecinku.
select nazwisko, round(placa_pod/31,1) from pracownik;
➢ aliasy nazw atrybutów (kolumn) – alternatywna nazwa kolumny, występuje bezpośrednio po
nazwie kolumny.
Przykład 8. select nazwisko, placa_pod/2 srednia from pracownik;
Przykład 9. select nazwisko, round(placa_pod/31,1) as dniowka from pracownik;
funkcja konkatenacji ( concat() ) - umożliwia łączenie wyświetlanych wartości różnych atrybutów
w pojedyncze łańcuchy znaków.
Przykład 10. select concat(numer, ': ', nazwisko, ' pracuje na etacie ', etat) from pracownik;
8
Laboratorium Bazy danych SQL1
Zad 1. Wyświetlić unikalne wartości kolumny nazwisko tabeli pracownik.
Zad 2. Wyświetlić nazwiska pracowników oraz ich kwartalną płacę.
Zad 3. Wyświetlić nazwiska oraz identyfikator zespołu pracowników zatrudnionych na etacie
'asystent'.
Zad 4. Wyświetlić nazwiska, płacę podstawową oraz płacę dodatkową tych pracowników, których
płaca podstawowa jest mniejsza od podwojonej płacy dodatkowej.
Zad 5. Wyświetlić nazwiska pracowników nie posiadających płacy dodatkowej.
Zad 6. Wyświetlić nazwiska tych pracowników oraz ich płacę dodatkową, których płaca
podstawowa znajduje się w przedziale od 1000 do 2000 zł w formacie:
Kowalski zarabia dodatkowo 2000 zł rocznie
Zad 7. Wyświetlić nazwiska tych pracowników oraz ich płacę dodatkową, których płaca
podstawowa wynosi dokładnie 1000 lub 2000 zł.
Zad 8. Wyświetlić nazwisko tych pracowników, których nazwa etatu zawiera literę 'a' na dowolnym
miejscu w łańcuchu znaków.
Zad 9. Wyświetlić nazwisko oraz płacę podstawową tych pracowników, którzy są adiunktami i ich
płaca dodatkowa jest nie większa od 2000.
Zad 10. Wyświetlić nazwisko tych pracowników na etacie adiunkta lub asystenta, których płaca
podstawowa jest z zakresu 800 do 2 300.
Zad 11. Zmodyfikuj dodając na końcu nazwiska litery 'owa' nazwiska wszystkich tych osób w tabeli
pracownik, którzy pracują od '2000-01-01'.
9

Podobne dokumenty