MySQL FMF delavnica VAJE Vid Podpečan Inštitut Jožef Stefan Vaja 3 SQL poizvedbe 1. Izvajanje SQL stavkov iz tekstovnih datotek ● predpogoj: ○ v MySQL smo prijavljeni kot uporabnik “fmf” ○ narejeno imamo bazo fmf_imepriimek, do katere imamo vse pravice in smo nanjo priklopljeni (ukaz use imebaze) ● v direktoriju /home/student sta dve datoteki ○ ○ bbc.sql -- BBC podatki o državah movies.sql -- IMDB podatki o filmih bbc.sql movies.sql DROP TABLE IF EXISTS bbc; DROP TABLE IF EXISTS actor, movie, casting CASCADE; CREATE TABLE bbc( name VARCHAR(50) NOT NULL ,region VARCHAR(60) ,area DECIMAL(10) ,population DECIMAL(11) ,gdp DECIMAL(14) ,PRIMARY KEY (name) ); CREATE TABLE actor( id INTEGER NOT NULL , name VARCHAR(50) , PRIMARY KEY (id) ); insert into bbc values ('Afghanistan','South Asia',652225,26000000,NULL); insert into bbc values ('Albania','Europe',28728,3200000,6656000000); insert into bbc values ('Algeria','Middle East',2400000,32900000,75012000000); …. …. CREATE TABLE movie( id INTEGER NOT NULL , title VARCHAR(100) , year DECIMAL(4) , score FLOAT , votes INTEGER , director INTEGER , PRIMARY KEY (id) , FOREIGN KEY (director) REFERENCES actor(id) ); …. …. …. 2. Izvajanje SQL stavkov iz tekstovnih datotek ● v mysql ukazni vrstici izvedite ukaza ○ ○ source ~/bbc.sql source ~/movies.sql ● ta ukaza izvedeta vse SQL stavke, ki se nahajajo v datotekah ● uporabite ukaz show tables; ○ če je šlo vse v redu: 4 nove tabele ■ ■ države: tabela bbc tri povezane tabele: actor, movie, casting mysql> show tables; +--------------------+ | Tables_in_fmf_vidp | +--------------------+ | actor | | bbc | | casting | | movie | | osebe | | racuni | +--------------------+ ● uporabite ukaz DESCRIBE imeTabele za vse tabele ○ oglejte si, kakšni stolpci sestavljajo tabele, kaj so primarni in tuji ključi Grafični vmesnik phpMyAdmin ● za lažje delo z SQL poizvedbami lahko uporabite grafični vmesnik ○ ○ http://vihar.ijs.si/phpmyadmin/ podatki za prijavo so enaki kot za ukazno vrstico ● na levi izberite svojo bazo, na desni pa zavihek SQL 3. Tabela bbc, naloga 1 mysql> describe bbc; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | region | varchar(60) | YES | MUL | NULL | | | area | decimal(10,0) | YES | | NULL | | | population | decimal(11,0) | YES | | NULL | | | gdp | decimal(14,0) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ ● izpišite imena držav, ki se začnejo na črko A ○ nasvet: osnovna oblika stavka select...from...where ter operator LIKE ● izpišite jih še v abecednem in obratnem abecednem redu glede na ime ○ nasvet: order by... 4. Tabela bbc, naloga 2 mysql> describe bbc; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | region | varchar(60) | YES | MUL | NULL | | | area | decimal(10,0) | YES | | NULL | | | population | decimal(11,0) | YES | | NULL | | | gdp | decimal(14,0) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ ● izpišite imena držav, ki imajo populacijo večjo kot 108 , gdp pa večji kot 1012 ○ nasvet: osnovna oblika stavka select...from...where ter dva pogoja, povezana z AND 5. Tabela bbc, naloga 3 mysql> describe bbc; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | region | varchar(60) | YES | MUL | NULL | | | area | decimal(10,0) | YES | | NULL | | | population | decimal(11,0) | YES | | NULL | | | gdp | decimal(14,0) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ ● izpišite imena vseh regij, urejena po abecedi (brez ponovitev!) ○ nasvet: osnovna oblika stavka select...from, uporaba distinct ter order by 6. Tabela bbc, naloga 4 mysql> describe bbc; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | region | varchar(60) | YES | MUL | NULL | | | area | decimal(10,0) | YES | | NULL | | | population | decimal(11,0) | YES | | NULL | | | gdp | decimal(14,0) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ ● izpišite, koliko držav ima vsak kontinent ○ nasvet: osnovna oblika stavka select...from, uporaba group by ter count 7. Tabele actor, movie, casting, naloga 1 mysql> describe actor; +-------+-------------+-----+ | Field | Type | Key | +-------+-------------+-----+ | id | int(11) | PRI | | name | varchar(50) | MUL | +-------+-------------+-----+ mysql> describe movie; +----------+--------------+-----+ | Field | Type | Key | +----------+--------------+-----+ | id | int(11) | PRI | | title | varchar(100) | MUL | | year | decimal(4,0) | | | score | float | | | votes | int(11) | | | director | int(11) | MUL | +----------+--------------+-----+ mysql> describe casting; +---------+---------+-----+ | Field | Type | Key | +---------+---------+-----+ | movieid | int(11) | PRI | | actorid | int(11) | PRI | | ord | int(11) | MUL | +---------+---------+-----+ ● združite tabele actor, movie in casting ter ○ izpišite imena vseh filmov, v katerih je igrala Julia Roberts 8. Tabele actor, movie, casting, naloga 2 mysql> describe actor; +-------+-------------+-----+ | Field | Type | Key | +-------+-------------+-----+ | id | int(11) | PRI | | name | varchar(50) | MUL | +-------+-------------+-----+ mysql> describe movie; +----------+--------------+-----+ | Field | Type | Key | +----------+--------------+-----+ | id | int(11) | PRI | | title | varchar(100) | MUL | | year | decimal(4,0) | | | score | float | | | votes | int(11) | | | director | int(11) | MUL | +----------+--------------+-----+ mysql> describe casting; +---------+---------+-----+ | Field | Type | Key | +---------+---------+-----+ | movieid | int(11) | PRI | | actorid | int(11) | PRI | | ord | int(11) | MUL | +---------+---------+-----+ ● združite tabele actor, movie in casting ter ○ izpišite število filmov po letu 1998, v katerih je imela Julia Roberts glavno vlogo ○ nasveti ■ ■ glavno vlogo pove stolpec casting.ord, ki mora imeti vrednost 1 uporabite count 9. Tabele actor, movie, casting, naloga 3 mysql> describe actor; +-------+-------------+-----+ | Field | Type | Key | +-------+-------------+-----+ | id | int(11) | PRI | | name | varchar(50) | MUL | +-------+-------------+-----+ mysql> describe movie; +----------+--------------+-----+ | Field | Type | Key | +----------+--------------+-----+ | id | int(11) | PRI | | title | varchar(100) | MUL | | year | decimal(4,0) | | | score | float | | | votes | int(11) | | | director | int(11) | MUL | +----------+--------------+-----+ mysql> describe casting; +---------+---------+-----+ | Field | Type | Key | +---------+---------+-----+ | movieid | int(11) | PRI | | actorid | int(11) | PRI | | ord | int(11) | MUL | +---------+---------+-----+ ● združite tabele actor, movie in casting ter ○ ○ izpišite naslove filmov (urejene po abecedi), kjer je bil glavni igralec hkrati tudi režiser nasvet: movie.director je tuji ključ in kaže na actor.id
© Copyright 2025