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

Podobne dokumenty
Przestrzenne bazy danych Podstawy języka SQL

Projektowanie systemów baz danych

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

P o d s t a w y j ę z y k a S Q L

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

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

Język SQL, zajęcia nr 1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Instrukcja CREATE TABLE

Wykład 4. SQL praca z tabelami 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Wykład 05 Bazy danych

Język SQL. Rozdział 2. Proste zapytania

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 5. SQL praca z tabelami 2

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

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

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

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

Wykład 8. SQL praca z tabelami 5

Wprowadzenie do języka SQL

Bazy danych 7. SQL podstawy

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

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Autor: Joanna Karwowska

Paweł Rajba

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

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

Bazy danych - Materiały do laboratoriów VIII

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

2 Przygotował: mgr inż. Maciej Lasota

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

Tworzenie baz danych i tabel

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

Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

Relacyjne bazy danych. Podstawy SQL

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.

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Aspekty aktywne baz danych

SQL (ang. Structured Query Language)

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych 5. Samozłaczenie SQL podstawy

Dr Michał Tanaś(

Relacyjne bazy danych. Podstawy SQL

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

Wykład :45 BD-1 W_3

Bazy danych. Polecenia SQL

Wykład 2. SQL 1 Structured Query Lenguage

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

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

Wprowadzenie do baz danych

SIECI KOMPUTEROWE I BAZY DANYCH

Ćwiczenie zapytań języka bazy danych PostgreSQL

Laboratorium nr 7. Temat: Podstawy języka zapytań SQL (część 1) 1. Wprowadzenie do laboratorium

2. Język SQL SQL jest językiem deklaratywnym (Charakterystyczną cechą języków

Bazy danych Ćwiczenia projektowe

Język SQL, zajęcia nr 2

Komunikacja z bazą danych psql

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

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

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

Grupowanie i funkcje agregujące

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

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

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

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

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

Systemy GIS Tworzenie zapytań w bazach danych

SQL Structured Query Language

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

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

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

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

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

Ćwiczenie 1 podstawy

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Transkrypt:

Podstawy języka SQL Język SQL (ang. Structured Query Language) jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do systemu zarządzania bazą danych (SZBD). Język SQL jest językiem deklaratywnym. Charakterystyczną cechą języków deklaratywnych jest to, że opisują co ma być zrobione, ale nie jak. W praktyce oznacza to, że użytkownik opisuje w języku SQL efekt jaki chce uzyskać (odczytanie telefonów wszystkich pracowników o nazwisku zaczynającym się na literę A, podniesienie pensji wszystkim profesorom itp.), ale nie sposób w jaki ma to być zrobione (sekwencja operacji dyskowych, które prowadzą do wykonania polecenia). Sposób wykonania polecenia jest automatycznie dobierany przez SZBD i zależy od fizycznego sposobu składowania danych. Język SQL jest zorientowany na przetwarzanie zbiorów. Ponieważ dane są przechowywane w relacjach, które są zbiorami krotek, konstrukcje języka SQL dotyczą przetwarzania zbiorów i nie zawierają poleceń uwzględniających jakiś porządek na krotkach. W języku SQL można wyróżnić trzy grupy poleceń: a) DML język manipulacji danymi pozwalający na odczytywanie danych z relacji (polecenie SELECT) oraz na wstawianie, modyfikację i usuwanie danych z relacji (polecenia: INSERT, UPDATE, MERGE i DELETE). b) DDL język definicji danych pozwalający na tworzenie, modyfikację i usuwanie relacji (polecenia CREATE, ALTER i DROP). c) DCL język kontroli danych pozwalający na zapewnienie autoryzacji dostępu do danych oraz zarządzanie transakcjami. Najważniejsze polecenia to GRANT i REVOKE (czasem zaliczane do DDLa) oraz COMMIT, ROLLBACK i SAVEPOINT. W języku SQL nie rozróżnia się dużych i małych liter. Wszystkie słowa kluczowe i nazwy (np. relacji i atrybutów) w języku SQL można pisać zarówno dużymi jak i małymi literami. Przykładowo, wyrażenia: nazwisko, Nazwisko i NAZWISKO są identyczne.

W poleceniach SQL ignorowane są znaki końca linii. Wszystkie słowa kluczowe i wyrażenia w języku SQL można rozdzielać zarówno spacjami jak i znakami końca linii. W rezultacie dowolne polecenie SQL można sformatować w dowolny sposób (może ono zajmować jeden długi wiersz, lub kilka krótszych wierszy). Każde polecenie SQL powinno być zakończone średnikiem. Próba wykonania polecenia nie zakończonego w ten sposób może zakończyć się błędem, chociaż istnieją sytuacje, gdy pominięcie średnika jest dozwolone. 1. Tworzenie relacji CREATE TABLE nazwa_relacji (nazwa_atr typ (rozmiar) [DEFAULT wart_domyślna], nazwa_atr typ (rozmiar) [DEFAULT wart_domyślna],.. np. Stworzyć tabelę do przechowywania informacji o pracownikach naszej księgarni. Chcemy zapamiętać: imię nazwisko, datę zatrudnienia, etat oraz płacę naszych pracowników, także ich identyfikator. CREATE TABLE Pracownicy ( PracID INT, Imię VARCHAR(10), Nazwisko VARCHAR(20), Zatrudniony DATE, Etat VARCHAR(20), Płaca DECIMAL(7,2) 2. Typy danych: Nazwa Alias Opis bigint int8 signed eight-byte integer bigserial serial8 autoincrementing eight-byte integer bit [ (n) ] fixed-length bit string bit varying [ (n) ] varbit variable-length bit string boolean bool logical Boolean (true/false) box rectangular box on a plane bytea binary data ("byte array") character [ (n) ] char [ (n) ] fixed-length character string character varying [ (n) ] varchar [ (n) ] variable-length character string cidr IPv4 or IPv6 network address circle circle on a plane date calendar date (year, month, day)

double precision float8 double precision floating-point number (8 bytes) inet IPv4 or IPv6 host address integer int, int4 signed four-byte integer interval [ fields ] [ (p) ] time span json textual JSON data jsonb binary JSON data, decomposed line infinite line on a plane lseg line segment on a plane macaddr MAC (Media Access Control) address money currency amount numeric [ (p, s) ] decimal [ (p, s) ] exact numeric of selectable precision path geometric path on a plane pg_lsn PostgreSQL Log Sequence Number point geometric point on a plane polygon closed geometric path on a plane real float4 single precision floating-point number (4 bytes) smallint int2 signed two-byte integer smallserial serial2 autoincrementing two-byte integer serial serial4 autoincrementing four-byte integer text variable-length character string time [ (p) ] [ without time zone ] time of day (no time zone) time [ (p) ] with time time of day, including time timetz zone zone timestamp [ (p) ] [ without time zone ] date and time (no time zone) timestamp [ (p) ] with date and time, including time timestamptz time zone zone tsquery text search query tsvector text search document txid_snapshot user-level transaction ID snapshot uuid universally unique identifier xml XML data

Np. Podaj składnie SQL, która stworzy tabelę o poniższym schemacie: CREATE TABLE Podania( PodID SERIAL, Imię VARCHAR(20), Nazwisko VARCHAR, Dnia DATE, Czas TIME, IdDziekana NUMERIC(2), Decyzja BOOL, Opłata DECIMAL(7,2) 3. Ograniczenia integralościowe Dane składowane w relacjach opisują jakiś wybrany fragment rzeczywistości. Niestety, łatwo jest wprowadzić do relacji dane, które rzeczywistości nie mogą odpowiadać w żaden sposób. Przykładowo, można wprowadzić do bazy danych pracowników zatrudnionych tysiąc lat temu, albo samochód o ujemnej maksymalnej prędkości. W celu zapobiegania takim sytuacjom stosuje się tzw. ograniczenia integralnościowe. Jest to zbiór warunków, które muszą być spełnione przez dane składowane w bazie danych, aby można je było uznać za poprawne. Każde polecenie SQL, które spowodowałoby naruszenie warunków integralnościowych jest wycofywane. Istnieją dwa rodzaje ograniczeń integralnościowych: ograniczenia atrybutu - dotyczą jedynie pojedynczego atrybutu relacji. Definiuje się je na liście atrybutów po podaniu wartości domyślnej atrybutu. ograniczenia relacji - dotyczą więcej niż jednego atrybutu relacji i definiuje się je jako osobny wpis na liście atrybutów. Definicja ograniczenia integralnościowego rozpoczyna się od opcjonalnego podania jego nazwy po słowie kluczowym CONSTRAINT, po którym podaje się właściwą definicję. Poszczególne typy ograniczeń wraz ze sposobem definiowania zostaną opisane na kolejnych slajdach. CREATE TABLE nazwa_relacji( nazwa_atr typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ogr_atr].., nazwa_atr typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ogr_atr]...,... [ [CONSTRAINT nazwa_ogr] ograniczenie_rel,...]

Np. CREATE TABLE Podania( PodID SERIAL PRIMARY KEY, Imię VARCHAR(20), Nazwisko VARCHAR, Dnia DATE CONSTRAINT niepusty_termin NOT NULL, Czas TIME, IdDziekana NUMERIC(2) DEFAULT 11, Decyzja BOOL, Opłata DECIMAL(7,2), CHECK (Opłata>=0) 3.1. Klucz podstawowy Ograniczenie atrybutu CREATE TABLE Podania( PodID INT CONSTRAINT podid_pk PRIMARY KEY, Index VARCHAR(15), IdDziekana NUMERIC(2) DEFAULT 11, Decyzja BOOL, Ograniczenie relacji CREATE TABLE Podania( PodID INT, Index VARCHAR(15), IdDziekana NUMERIC(2) DEFAULT 11, Decyzja BOOL, CONSTRAINT podid_pk PRIMARY KEY PodID 3.2. Wartość unikalna Ograniczenie atrybutu CREATE TABLE Projekty ( Numer NUMERIC(6) PRIMARY KEY, Nazwa CHARACTER VARYING (100) UNIQUE, Budżet NUMERIC(10,2), Termin_zak DATE Ograniczenie relacji CREATE TABLE Projekty ( Numer NUMERIC(6), Nazwa CHARACTER VARYING (100), Budżet NUMERIC(10,2), Termin_zak DATE, CONSTRAINT un_nazwa UNIQUE (Numer,Nazwa)

3.3. Wartość obowiązkowa CREATE TABLE Projekty ( Numer NUMERIC(6) PRIMARY KEY, Nazwa CHARACTER VARYING (100) UNIQUE NOT NULL, Budżet NUMERIC(10,2)CONSTRAINT nn_budz NOT NULL, Termin_zak DATE NOT NULL 3.4. Klucz obcy CREATE TABLE Książki( ISBN VARCHAR(20) PRIMARY KEY, Tytuł VARCHAR(40), WydID INT REFERENCES Wydawnictwa(WydID), Cena DECIMAL(6,2) Lub CREATE TABLE Książki( ISBN VARCHAR(20) PRIMARY KEY, Tytuł VARCHAR(40), WydID INT, Cena DECIMAL(6,2), FOREIGN KEY WydID REFERENCES Wydawnictwa(WydID) Metodę utrzymywania spójności bazy danych ze względu na ograniczenie integralnościowe klucz obcy można zmienić, dodając do definicji ograniczenia słowa kluczowe: ON DELETE SET NULL usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL, ON DELETE CASCADE usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje usunięcie wszystkich krotek, które zawierają klucz obcy wskazujący na usuwaną krotkę, ON DELETE SET DEFAULT usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych, ON UPDATE SET NULL modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL, ON UPDATE CASCADE modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy nowej wartości klucza podstawowego/wartości unikalnej, ON UPDATE SET DEFAULT - modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych.

3.5. Ograniczenie domeny atrybutu Ograniczenie atrybutu CREATE TABLE Projekty ( Numer NUMERIC(6) PRIMARY KEY, Nazwa CHARACTER VARYING (100) UNIQUE, Budżet NUMERIC(10,2) CHECK (budzet < 1000000), Termin_zak DATE Ograniczenie relacji CREATE TABLE Projekty ( Numer NUMERIC(6) PRIMARY KEY, Nazwa CHARACTER VARYING (100) UNIQUE, Budżet NUMERIC(10,2) NOT NULL, Termin_rozp DATE NOT NULL, Termin_zak DATE NOT NULL, CHECK (Termin_rozp<Termin_zak) 4. Modyfikowanie relacji 4.1. Kolumny Dodanie kolumny ALTER TABLE tabela ADD COLUMN atrybut typ; Usunięcie kolumny ALTER TABLE tabela DROP COLUMN atrybut; Zmiana nazwy kolumny ALTER TABLE tabela RENAME COLUMN atrybut1 TO arybut2; 4.2. Relacje Usunięcie relacji DROP TABLE nazwa_tabeli; Zmiana nazwy relacji ALTER TABLE tabela RENAME TO tabela2; Wyczyszczenie tabeli TRUNCATE TABLE tabela;

4.3. Ograniczenia integralnościowe ALTER TABLE tabela: ADD CHECK (atrybut <> '' ADD CONSTRAINT nazwa_ogr UNIQUE (atrybut ADD FOREIGN KEY (atrybut) REFERENCES tab_inna(atrybut_inny ALTER COLUMN atrybut SET NOT NULL; DROP CONSTRAINT nazwa_ogr; ALTER COLUMN atrybut DROP NOT NULL; 4.4. Zmiana wartości domyślnej ALTER TABLE tabela ALTER COLUMN atr SET DEFAULT 7.77; ALTER TABLE tabela ALTER COLUMN atr DROP DEFAULT; 4.5. Krotki Wstawianie a) INSERT INTO nazwa_relacji VALUES (wartość1 [ DEFAULT ] [ NULL ],..., wartośćn Np. Dodać informację o kolejnym wydawnictwie Gamma Press nic jeszcze nie wiadomo o jego nr telefonu: INSERT INTO Wydawnictwa VALUES (6,NULL,'Gamma Press' b) INSERT INTO nazwa_relacji (atrybut1,..., atrybutn) VALUES(wartość1 [ DEFAULT ][ NULL ],..., wartośćn Np. Dodać informację o kolejnym wydawnictwie znany jest numer telefonu tego wydawnictwa, nie wiadomo jak ono się nazywa: INSERT INTO Wydawnictwa(WydID, Telefon) VALUES(7, '666-66- 66' Usuwanie DELETE [ FROM ] nazwa_relacji [ WHERE warunek ]; Modyfikowanie a) UPDATE nazwa_relacji SET atr1 = wartość [ DEFAULT ] [ NULL ], atr2 = wartość [,...] [ WHERE warunek ]; Np. Dodać informację o telefonie (123-45-67) wydawnictwa Gamma Press i poprawić jego nazwę prawidłowa nazwa to Game Press : UPDATE Wydawnictwa SET Nazwa='Game Press', Telefon ='123-45-67' WHERE Nazwa='Gamma Press'; b) UPDATE relacja_a SET atrybuta1 = (SELECT atrybutb1 FROM relacja_b[ WHERE... ] ) [ WHERE... ];

Np. Ze względu na inflację należy podwyższyć cenę książek o 10% średniej wartości wszystkich książek zaokrągloną do pełnych złotych: UPDATE Książki SET Cena=Cena+(SELECT CAST( 0.1* AVG(CENA) AS INT) FROM Książki 5. Zapytania proste 5.1. Zapytanie proste a. Wszystkie rekordy ze wskazanej tabeli SELECT * FROM nazwa_tabeli b. Wybrane kolumny ze wskazanej tabeli SELECT nazwa_kol1, nazwa_kol2, FROM nazwa_tabi c. Wybrane kolumny ze wskazanych tabel SELECT nazwa_kol1, nazwa_kol2, FROM nazwa_tab1, nazwa_tab2 Jeżeli w obrębie kilku tabel, atrybuty mają takie same nazwy, to należy to zaznaczyć: SELECT nazwa_tab1.nazwa_kol, nazwa_tab2.nazwa_kol, FROM nazwa_tab1, nazwa_tab2 DISTINCT eliminowanie duplikatów ORDER BY (ASC DSC) sortowanie wyników (rosnąco, malejąco) WHERE selekcja wyników SELECT [DISTINCT] {wyrażenie1 [AS alias1], wyrażenie2 [AS alias2],...} FROM {nazwa relacji} WHERE warunek_elementarny ORDER BY {wyrażenie5 [ASC DESC], wyrażenie6 [ASC DESC], alias1 [ASC DESC] }; 5.2. Wykorzystanie Operatorów arytmetycznych np. oblicz przychód księgarni od sprzedaży każdej książki po uwzględnieniu zysku odprowadzanego do wydawnictwa: SELECT Tytuł, Cena-0.1*Cena FROM Książki; Operatorów logicznych o Proste (=,!=, <>, >, >=, <, <=) SELECT Tytuł FROM Książki WHERE Cena>50; SELECT ISBN FROM Książki WHERE Tytuł='c++'; SELECT ISBN FROM Książki WHERE Tytuł='C++'; o BETWEEN AND SELECT Tytuł, Cena FROM Książki WHERE Cena BETWEEN 25 AND 29 ORDER BY Cena; o IN SELECT Tytuł, Cena FROM Książki WHERE CENA IN(20, 51, 29) ORDER BY Cena;

o LIKE tylko tekst SELECT Tytuł FROM Książki WHERE ISBN LIKE '0-999-9999-99'; np. Podać tytuły książek, zaczynających się na literę E lub T: SELECT Tytuł FROM Książki WHERE Tytuł LIKE 'E%' OR Tytuł LIKE 'T%'; o o o o o IS NULL IS NOT NULL NOT BETWEEN AND NOT IN NOT LIKE Aliasów - dla każdej książki skonstruuj następujące zdanie: Książka pt. XXX o numerze: YYY sprzedawana jest w cenie ZZZ zł, gdzie: XXX tytuł książki, YYY -numer ISBN, ZZZ cena. Zdanie zatytułuj Zestawienie. SELECT 'Książka pt. "' Tytuł '" o numerze: ' 'ISBN' ' sprzedawana jest w cenie ' Cena ' zł. ' AS Zestawienie FROM Książki;

Zadania 1. Utwórz poniższe tabele: a. Studenci i. Imię (pole tekstowe do 15 znaków) ii. Nazwisko (pole tekstowe do 15 znaków) iii. Nr_indeksu (liczba całkowita, klucz gł.) iv. Kierunek (pole tekstowe do 30 znaków) b. Oceny i. Nr_wpisu (liczba całkowita generowana automatycznie, klucz gł.) ii. Ocena (liczba stałoprzecinkowa, z 1 miejscem po przecinku) iii. ID_przedmiotu (liczba całkowita) iv. Nr_indeksu (liczba całkowita) c. Przedmioty i. ID_przedmiotu (liczba całkowita generowana automatycznie, klucz gł.) ii. Przedmiot (tekst do 55 znaków) 2. Wprowadź: a. dla atrybutu Ocena relacji Oceny, wartość domyślną 2.0, b. wartości wymagane w relacji Przedmioty (Przedmiot), Studenci (Imię, Nazwisko), Oceny (), c. ograniczenie, aby można było wprowadzać jedynie oceny z przedziału od 2 do 5, d. odpowiednie klucze obce dla relacji Oceny, e. 5 rekordów w relacji Studenci, f. 6 rekordów w relacji Przedmioty, g. po 2-3 oceny dla każdego studenta. 3. Wyświetl: a. dane wszystkich studentów, b. numery indeksów wszystkich studentów, którzy otrzymali co najmniej 1 ocenę wyższą niż 3.5, c. numery indeksów studentów, których nazwisko bądź imię zaczyna się na A lub M, d. nazwiska studentów, których średnia ocen jest większa od 4.0. 4. Zmodyfikuj co najmniej 3 wpisy w relacji Oceny i sprawdź, czy zmiany zostały wprowadzone. 5. Utwórz nową tabelę Projekty o atrybutach: a. ID_projektu (liczba całkowita generowana automatycznie, klucz gł.), b. Nr_indeksu (liczba całkowita, klucz obcy z relacji Studenci), c. ID_przedmiotu(liczba całkowita, klucz obcy z relacji Przedmioty), d. Termin (data). 6. Wprowadź 5 różnych projektów.

7. W relacji Oceny wprowadź nową kolumnę ID_projektu (liczba całkowita, klucz obcy z relacji Projekty, wartość opcjonalna). 8. Zaktualizuj dla części rekordów z relacji Oceny, tak aby każdy ze studentów miał ocenę z co najmniej 1 projektu. 9. Wypisz wszystkich studentów, którzy otrzymali oceny z przynajmniej 2 projektów.