SQL Kodutöö Katrin Kello D23 Loon 3 tabelit CREATE TABLE käsuga: create table HUVIRINGI JUHENDAJA( HUVIRINGI_JUHENDAJA_ID int not null, EESNIMI VARCHAR(100) not null, PERENIMI varchar(100) not null, SÜNNIAEG date not null, ISIKUKOOD VARCHAR(20), SUGU CHAR(1) not null, KOMMENTAAR VARCHAR(255), PRIMARY KEY(HUVIRINGI_JUHENDAJA_ID) ); Script Output: Table HUVIRINGI_JUHENDAJA created. create table TÖÖ_HUVIRINGI_JUHENDAJANA( TÖÖ_HUVIRINGI_JUHENDAJANA_ID integer not null, HUVIRINGI_JUHENDAJA_ID integer not null, HUVIRING_ID integer not null, ALATES TIMESTAMP not null, KUNI date, KOMMENTAAR varchar(255), PRIMARY KEY (TÖÖ_HUVIRINGI_JUHENDAJANA_ID) FOREIGN KEY(HUVIRIGNI_JUHENDAJA_ID) REFERENCES ISIK(HUVIRINGI_JUHENDAJA_ID)
CREATE TABLE mina ( eesnimi varchar(30) not null, perenimi varchar(100) not null, sugu varchar(5) not null, synnipaev date not null, algus datetime not null default current timestamp, viimati datetime default timestamp, CONSTRAINT pk_mina PRIMARY KEY (eesnimi) ); INSERT INTO mina (eesnimi, perenimi, sugu, synnipaev) VALUES ('Juku', 'Mets', 'Mees', '1980-02-04'); grant connect to Sandra identified by 'tere'; grant group to dba; grant membership in group dba to Sandra; grant all on mina to Sandra; SELECT * FROM mina; UPDATE mina SET eesnimi = 'Jri' WHERE eesnimi = 'Juku';
Töötajatel on võimalik ka puhkusel käia. Tööpäeva sisse mahuvad kindla ajapikkusega pausid. Töötajatel võib esineda ka haigusi, mistõttu tuleb oma töötunnid täis teha mõnel teisel päeval. Projekt ERD Mudel KÕNEKESKUS KONEKESKUS Konekeskus_ID:INTEGER ASUKOHT Nimi :VARCHAR FIRM A Asukoht_ID:INTEGER Ini meste_arv:INTEGER Firma_ID:INTEGER Konekeskus_ID:INTEGER Kommentaar:VARCHAR Nimi :VARCHAR Li nn:VARCHAR
maksimaalse ID väärtuse tabelis RIIK ja liites sellele ühe. See on peidetud võti, mida ei näidata kasutajale kunagi. NIMI VARCHAR NOT NULL Mis nimega riik on. KOOD INTEGER NOT NULL Riigi kood. Näiteks eesti kood on EST jne. KOMMENTAAR LONG VARCHAR NULL Lisainfo riigi kohta. Tabel LINN Veeru nimi Andmetüüp NULL/NOT NULL Semantika
mysql> ALTER TABLE RAAMAT ADD COLUMN Tiraaz mediumint(10); Query OK, 42 rows affected (0.00 sec) Records: 42 Duplicates: 0 Warnings: 0 mysql> DESCRIBE RAAMAT; +------------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-----------------------+------+-----+---------+----------------+ | Raamatu_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment | | Pealkiri | varchar(100) | NO | | NULL | | | Autor | varchar(50) | YES | | NULL | | | Aasta | year(4) | YES | | NULL | | | Koht | varchar(30) | YES | | NULL | | | Lk_arv | smallint(6) | NO | | NULL | | | Keel | varchar(50) | YES | | NULL | |
on hea teha aruannet (trigger). 2. Graafiline mudel 3. Andmebaasi loomise korraldused Kuna ülesande juhendis ei ole öeldud, et peame siia esitama ka foreign key ja trigger käsud, siis me seda ei teinud. CREATE TABLE Arhiiv ( Tellimus_Töötaja_Isikukood INTEGER UNSIGNED NOT NULL, Tellimus_Klient_ID INTEGER UNSIGNED NOT NULL, Tellimus_Kogus INTEGER UNSIGNED NOT NULL, Tellimus_Aadress VARCHAR(255) NOT NULL, Tellimus_Kuupäev VARCHAR(10) NOT NULL, Tellimus_Hind INTEGER UNSIGNED NOT NULL, Tellimus_Toote_ID INTEGER UNSIGNED NOT NULL, Tellimus_Tellimuse_ID INTEGER UNSIGNED NOT NULL, Tellimus_Telefon INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Tellimus_Töötaja_Isikukood, Tellimus_Klient_ID, Tellimus_Kogus, Tellimus_Aadress, Tellimus_Kuupäev, Tellimus_Hind, Tellimus_Toote_ID, Tellimus_Tellimuse_ID, Tellimus_Telefon) ); CREATE TABLE Klient ( ID INTEGER NOT NULL DEFAULT AUTOINCREMENT PRIMARY KEY,
CREATE DATABASE `Lennundus` DEFAULT CHARACTER SET latin4 COLLATE latin4_estonian_ci; USE `Lennundus`; CREATE TABLE IF NOT EXISTS `tlised` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `Eesnimi`VARCHAR(25) NOT NULL, `Perenimi`VARCHAR(25) NOT NULL, `IK` CHAR(12) UNIQUE NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE IF NOT EXISTS `tleping` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `lepingu_nr` INT (5) NOT NULL, `algus` DATETIME (16) NOT NULL, `lpp` DATETIME(16) NULL, `tlised_id` INT(11) NOT NULL, FOREIGN KEY (`tlised_id`) REFERENCES tlised(id), PRIMARY KEY (`id`) ) CREATE TABLE IF NOT EXISTS `sisselogimine` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `algusaeg` DATETIME(16) NOT NULL,
IRINA ROSSINSKAJA, NELJAPÄEV FIRMA ISIK Firma_ID:INTEGER Isik_ID:INTEGER Firma_nimi:VARCHAR Eesnimi:VARCHAR ISIK_TÖÖL Reg_nr:INTEGER Perekonnanimi:VARCHAR Isik_ID:INTEGER Kommentaar:LONG VARCHAR Telefoni_nr:INTEGER Auto_ID:INTEGER Juhi_kood:INTEGER Sõit_ID:INTEGER KASUTAJAKONTO SALASÕNA OMAMINE Kasutajakonto_ID:INTEGER Salasõna_ID:INTEGER
Lugeja_ID INT, Tähtaeg date, Tagastamine date, PRIMARY KEY (Laenamise_id), FOREIGN KEY (Lugeja_ID) REFERENCES LUGEJA(Lugeja_ID), FOREIGN KEY (Raamatu_id) REFERENCES Raamat(Raamatu_ID)); Lisa 10 kirjet. INSERT INTO LAENUTAMINE(Kuupäev,Lugeja_ID,Raamatu_ID,Tähtaeg) VALUES(curdate(),1,3,adddate(curdate(), interval 21 day)); RAAMAT CREATE TABLE RAAMAT ( Raamatu_ID INT AUTO_INCREMENT, Pealkiri VARCHAR(150) NOT NULL, Autor VARCHAR(100) NOT NULL, Aasta YEAR NOT NULL, Koht VARCHAR(50), Lk_arv INT, Keel VARCHAR(50), Hind FLOAT, PRIMARY KEY (Raamatu_ID)); Kirjed: INSERT INTO RAAMAT (Pealkiri, Autor, Aasta, Koht, Lk_arv, Keel, Hind) VALUES('Asum', 'Isaac Asimov', 1976, 'Eesti kirjastus', 193, 'eesti', 35.00), ('Ajaseemned', 'Isaac Asimov', 1978, 'Eesti kirjastus', 258, 'eesti', 38
Query OK, 0 rows affected (0.01 sec) mysql> DESCRIBE LUGEJA; +-----------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-----------------------+------+-----+---------+----------------+ | lugeja_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment | | isikukood | char(11) | YES | | NULL | | | eesnimi | varchar(50) | NO | | NULL | | | perenimi | varchar(50) | NO | | NULL | | | telefon | varchar(15) | YES | | NULL | | | aadress | varchar(50) | NO | | NULL | | | email | varchar(50) | YES | | NULL | | | amet | varchar(50) | YES | | NULL | |
SELECT nimi, punkte FROM v_edetabel WHERE turniir='41' ORDER BY punkte; -- --ylesanne 6 -- --1. Luua f-n klubiliikmete arvu leidmiseks klubi id põhjal f_klubi suurus(...) CREATE FUNCTION f_klubisuurus(a_id INTEGER) RETURNS Integer BEGIN DECLARE l_arv INTEGER; SELECT COUNT(*) INTO l_arv FROM Isik WHERE Klubi = a_id; RETURN l_arv; END --2.Luua f-n ees-ja perenime kokku liitmiseks eesti ametlikul viisil ("perenimi, eesnimi") f_nimi(...), parameetriks id. CREATE FUNCTION f_nimi (a_eesnimi VARCHAR(50), a_perenimi VARCHAR(50)) RETURNS VARCHAR(100) DETERMINISTIC BEGIN RETURN a_perenimi || ', ' || a_eesnimi; END --3.Luua f-n ühe mängija partiide koguarv f_mangijakoormus(...) CREATE FUNCTION f_mangijakoormus (a_id INTEGER) RETURNS INTEGER BEGIN DECLARE l_valge INTEGER; DECLARE l_must INTEGER; SELECT COUNT(*) INTO l_valge FROM Partii WHERE Valge = a_id; SELECT COUNT(*) INTO l_must FROM Partii WHERE Must = a_id; RETURN l_valge + l_must; END --4
/*PÄRING1 AVADA ANDMEBAAS MYYK*/ USE MYYK /*PÄRING2 LUUA TABEL ANDMEBAASI*/ CREATE TABLE dbo.kaup_tbl ( KAUBAID INT NOT NULL IDENTITY (1,1) PRIMARY KEY, KNIMI VARCHAR (10) NULL, KKOOD VARCHAR (3) NULL, HIND DECIMAL (6,2), ) /*PÄRING3 LISADA KAUBAD TABELISSE*/ INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND) VALUES ('PLUUS','K1',245.20) INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND) VALUES ('PYKSID','K2',765.40) INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND) VALUES ('KINGAD','K3',1267.45) INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND) VALUES ('SAAPAD','K4',983.35) INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND) VALUES ('SOKID','K5',34.30) INSERT INTO dbo.kaup_tbl (KNIMI,KKOOD,HIND)
+-----------------------+ | EMAD | | LAENUTUS | | LUGEJA | | RAAMAT | | SYNNID | +-----------------------+ 5 rows in set (0.00 sec) mysql> DESCRIBE EMAD; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | Ema_id | int(2) | NO | PRI | 0 | | | Ema_nimi | varchar(20) | YES | | NULL | | | Vanus | int(2) | YES | | NULL | | | Laste_arv | int(1) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> DESCRIBE SYNNID; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+
1. Loo uus andmebaas nt Harjutus. Mine phpMyAdmin keskkonda ja täida järgnevad ülesanded. 2. Käivita järgmised kaks käsku oma loodud andmebaasis: CREATE TABLE EMA ( Ema_ID integer(4) NOT NULL AUTO_INCREMENT, Nimi varchar(40) NOT NULL, PRIMARY KEY(Ema_ID)) engine=InnoDB; INSERT INTO EMA (Nimi) VALUES ('Tups'), ('Taki'),('Tipsi'); 3. Loo äsja tehtud andmebaasi andmetabel HIIR, milles on järgmised andmeväljad: Hiire_ID - täisarv, primaarvõtme väli ja automaatselt suurenev ning ei tohi olla null, Nimi tekst, väärtus ei tohi olla null, Kaal täisarv, Synniaasta aasta, Ema_ID täisarv, võõrvõti (lisa indeksite alt valik INDEX). Määra andmebaasimootoriks InnoDB.
punktid)) yl2, decode(too_nr, 3, max(ky.punktid)) yl3, max(ky.punktid) k from lepikult.koduylesanded ky where ky.kursusekood='I319' and ky.too_nr >= 1 and ky.too_nr <= 4 group by ky.too_nr, ky.yliopilase_id) ky group by yliopilase_id) x, lepikult.yliopilased y where y.id=x.yliopilase_id ); ................................................................................ ........... CREATE TABLE andmed ( eesnimi varchar(20), perenimi varchar(20), isikukood char(15), aadress varchar(30), telefon number(16,0), email varchar(32), CONSTRAINT ik_pkey PRIMARY KEY(isikukood)); CREATE TABLE raamatud ( shiffer char(8), pealkiri varchar(32), hind number(5,0), kogus number(2,0), CONSTRAINT shif_pkey PRIMARY KEY(shiffer)); CREATE TABLE laenatud ( isikukood char(15) NOT NULL, shiffer char(8) NOT NULL, algus DATE DEFAULT SYSDATE,
minna veelgi põnevamaks. Olles ühel päeval SQL92/SQL99 nõudmistega ühtiv ning arendades kasutajatoe ning müügivõrku, tuleb küll tõdeda, et Oracle'i, IBMi ja Microsofti kõrvale on andmebaaside vallas tekkimas ääretult huvitav konkurent. Andmete liigid: rida CHAR (suurus) Püsipikkus string (võib sisaldada tähti, numbreid ja erimärke). Fikseeritud suurus sulgudes. Saate salvestada kuni 255 märki VARCHAR (mõõt) Mahutab kuni 255 märki. TINYTEKST Mahutab kuni 255 märki. TEKST Mahutab kuni 65.535 tähemärki. BLOB Mahutab kuni 65.535 tähemärki. MEDIUMTEKST Mahutab kuni 16777215 tähemärki. MEDIUMBLOB Mahutab kuni 16777215 tähemärki. LONGTEKST Mahutab kuni 4294967295 tähemärki. LONGBLOB Mahutab kuni 4294967295 tähemärki. Murdarvud
ära selle toote toode_seis char(10) Not null oleku, kas on olemas või ei ole Toote nimetus toode_nimi varchar2(255) Not null varchar toode_kkirjeldu Toote värvus, s varchar2(1000) Not null suurus jm 2.2. Table country Column name Type Properties Description Erinevates riik_id integer riikides asuvad
kuupäeva. Kõikide admetüüpidega võib huvi korral tutvuda MySQL veebilehel. Põhilised ja tihti MySQL-is kasutatavad andmetüübid on järgmised: INT Täisarvtüüpi andmete hoidmiseks (võib lisaks defineerida kas atribuut on alati positiivne (unsigned) või mitte) DOUBLE Ujukomaarvtüüpi andmete hoidmiseks (võib lisaks defineerida kas atribuut on alati positiivne (unsigned) või mitte) VARCHAR Tekstiliste andmete hoidmiseks (tavaliselt mitte pikem, kui 255 sümbolit) TEXT Tekstiliste andmete hoidmiseks (tavaliselt suured tekstid nagu uudised, kommentaarid jne) DATE Kuupäevade hoidmiseks. Andmeid hoitakse kujul AAAA-KK-PP. Näiteks esimene detsember 2006 on "2006-12-01" DATETIME Kuupäevade hoidmiseks koos kellaaega. Andmeid hoitakse kujul AAAA-KK-PP TT:MM:SS. Näiteks esimene detsember 2006 kell 14:15 on "2006-12-01 14:15:00" Andmebaasi server Vaikimisi serveri port on 3306
väärtuste hoidmiseks. Kuupäevade ja kellaaegade hoidmiseks on mitmeid erinevaid andmetüüpe. date kuupäev 1 päevase täpsusega, time kellaaeg 100 nanosekundilise täpsusega, smalldatetime kuupäev ja kellaaeg täpsus 1 minut, datetime kuupäev ja kellaaeg täpsus 3millisekundit, datetime2 kuupäev ja kellaaeg täpsus 100 nanosekundit, datetimeoffset kuupäev ja kellaaeg 100 nanosekundilise täpsusega koos ajavööndiga. Tekst: char, varchar ja text tekstide jaoks. Esimene kindla pikkusega väljadele (nt. isikukood), teine muutuva pikkusega tekstide jaoks (nt. asutuse nimetus) ning kolmas pikematele tekstidele. Sinna kõrvale käivad nchar (national char), nvarchar ja ntext Unicode kodeeringut kasutavate tekstide tarbeks. Lisaks sellele pakub SQL Server mitmeid spetsialiseeritud andmetüüpe: Geograafiliste andmete (pikkus- ja laiuskraadide) hoidmiseks on saadaval spetsiaalne andmetüüp geography.
ja olla reserveeritud sona, kui tegu pole just piiritletud identifikaatoriga.) • Mis asi on "piiritletud identifikaator"? (identifikaator on jutumarkides: “nimi”, siis eristatakse suur ja väiketähti ja võib kasutada erilisis sõnu nagu “Table”). • Millised on SQL standardis nimetatud andmetuu ̈ bid? (nt CURRENCY, MONEY, AUTOINCREMENT, SERIAL, ei kuulu SQL standardisse) Kuuluvad: CHARACTER, VARCHAR, BINARY, BOOLEAN, VARBINARY, INTEGER, SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, FLOAT, DATE, TIME, TIMESTAMP, INTERVAL, ARRAY, MULTISET, XML • Kuupaeva ja kellaaja formaat SQL standardi jargi. ('YYYYMMDD HH24:MI:SS') • Millist tuupi objektide loomise vo ̈ imaluse naeb ette SQL standard (nende ̈ loomiseks on CREATE lause)
Kui valmis, vajuta nuppu Salvesta! Andmevälja tüübid Nagu eelmisest tegevusest võisite aru saada, on meil kindlasti vaja määrata andmevälja tüüp. See tähenda, et kui oled lahtrisse lubanud ainult numbrid, siis sinna teksti salvestada ei saa jne. Andmevälja tüübid jagunevad kolmeks grupiks: tekst arvud kuupäev ja aeg Tekstitüübid CHAR - kindla pikkusega, näiteks isikukood; kuni 255 märki (1bait märgi kohta) VARCHAR - muutuva pikkusega, näiteks nimed; kuni 65535 märki TEXT - pikkade tekstide jaoks, näiteks uudised, artiklid jne; kuni 65535 märki BINARY - lubab lisada kõiki andmetüüpe ja andmeid ei tõlgita (nt tekstiks või numbriks), kuni 255 märki VARBINARY - kuni 65535 märki BLOB - binaarse info hoidmiseks, näiteks pildid; 65535 baiti / 64kB ENUM ja SET - on omavahel peaaegu sarnased, lubades kindlat piirangut;
Võib kasutada mistahes märke, sh. tühikuid ja ka reserveeritud sõnu. Eristatakse suur- ja väiketähti. Näide: "&%%!", "TABLE", "3VIEw". 14 Millised on SQL standardis nimetatud andmetüübid? (nt CURRENCY, MONEY, AUTONUMBER, SERIAL ei kuulu SQL standardisse) Character strings (CHAR, VARCHAR..), Bit strings (BIT..), Numbers (INTEGER, SMALLINT..), Date and time (DATE, TIME, TIMESTAMP..). Kuupäeva ja kella-aja formaat SQL standardi järgi Standard ISO 8601:1988 Selle järgi esitatakse kuupäev kujul yyyy-mm-dd ja kella-aeg kujul hh:mm:ss (vt. järgmine alapunkt). See tähendab, et kuupäevas järgneb neljale aastanumbrile kaks kuud tähistavat numbrit (01-12) ja kaks päeva tähistavat numbrit (01-31). Seda nimetakse "Calendar date format" ning sellisel viisil
int ehk täisarv. Nime ette tasub hiire parema klahviga valida primaarvõtmemärk. Et andmebaasiprogramm taipaks automaatselt id-numbreid välja mõelda, selleks tasub alt veeru omaduste seast valida, et tulba omadus ,,identity" on sisse lülitatud. Ning siis asutakse automaatselt alates ühest ühe kaupa reanumbreid panema. Andmetüüp int tähendab täisarve, sobib nii id kui sünniaasta puhul. Koera nimeks sai nvarchar(50) ehk siis national (lubab täpitähti) varchar ehk muutuva pikkusega, kuni 50 sümboli pikkune tekst. Omadus allow Nulls kipub vahel esmakordsel tutvusel segadust tekitama. Kõige lihtsam on sealne kast võimalusel märkimata jätta. Sel juhul tühiväärtused, ehk nullid (sõnaga) ei ole lubatud. Kui sisestame koera, peame sisestama ka tema sünniaasta. Kui aastat ei tea, saame aasta väärtuseks panna ka näiteks 0 või -1. Aga ei saa aastat panemata jätta.