Author: r15pdev

  • Klaipėda

    Klaipėda

    Šilutės plentas, raudonas mėnulis, pilnatis, automobilių šviesos
    Šilutės plentas, naktis, ištįsę automobilių šviesos
    Šilutės plentas, rytas, rūkas
    Šilutės plentas rūke, rytas
    Šilutės plentas, raudonas mėnulis, pilnatis, Klaipėdos spauda
    Šilutės plentas, raudonas mėnulis, pilnatis, Klaipėdos spauda
  • Sakila MySQL skaičiavimų ir lentelių jungimo užklausos

    Sakila MySQL skaičiavimų ir lentelių jungimo užklausos

    # Pasirinkti filmo, kurio id yra 10 nuomos detales (title, rental_rate, rental_date, return_date, inventory_id):
    
    SELECT f.`title` AS 'Filmo pavadinimas', f.`rental_rate` AS 'Nuomos reitingas', 
    r.`rental_date` AS 'Isnuomavimo pradzia', r.`return_date` AS 'Grazinimo data',
    r.`inventory_id` AS 'Inventoriaus Nr' 
    FROM `film` f INNER JOIN `inventory` i 
    ON f.`film_id` = i.`film_id`
    INNER JOIN `rental` r 
    ON i.`inventory_id` = r.`inventory_id`
    where f.film_id = 10;
    # Kiek aktorių yra aktorių lentelėje:
    
    SELECT COUNT(`actor_id`) AS 'Is viso aktoriu' FROM `actor`;
    # Kurie filmai nebuvo grąžinti:
    
    SELECT f.`title`, r.`return_date` FROM `film` f 
    INNER JOIN `inventory` i 
    ON f.`film_id` = i.`film_id`
    INNER JOIN `rental` r 
    ON i.`inventory_id` = r.`inventory_id`
    WHERE r.`return_date` IS NULL;
    # Išrinkti nuomininkų vardus ir pavardes, kurie nuomojosi 35 ir daugiau filmų:
    
    SELECT CONCAT(c.`first_name`, ' ', c.`last_name`) AS 'Nuomininkas', COUNT(r.`customer_id`) AS 'Isnuomotu filmu skaicius'
    FROM `customer` c 
    INNER JOIN `rental` r 
    ON c.customer_id = r.customer_id
    #GROUP BY c.`first_name` ASC
    GROUP BY r.`customer_id` ASC
    HAVING COUNT(r.`customer_id`) >=35
    # Išrinkti filmus (pavadinimas, data), išnuomotus po x datos:
    
    SELECT f.`title` AS 'Filmo pavadinimas', r.`rental_date` AS 'Issinuomojimo data'
    FROM `film` f 
    INNER JOIN `inventory` i 
    ON f.`film_id` = i.`film_id`
    INNER JOIN `rental` r 
    ON i.`inventory_id` = r.`inventory_id`
    WHERE r.`rental_date` >= '2006-01-01'
    ORDER BY r.`rental_date` DESC;
    # Išrinkti 10 populiariausių filmų pagal nuomą (filmo pavadinimas, išnuomojimų skaičius):
    
    SELECT f.`title` AS 'Filmo pavadinimas', COUNT(r.`rental_id`) AS 'Issinuomojimu skaicius'
    FROM `film` f 
    INNER JOIN `inventory` i 
    ON f.`film_id` = i.`film_id`
    INNER JOIN `rental` r 
    ON i.`inventory_id` = r.`inventory_id`
    WHERE r.`rental_date` IS NOT NULL
    GROUP BY f.`film_id`, f.`title`
    ORDER BY COUNT(r.`rental_id`) DESC
    LIMIT 10;
    # Kokia vidutinė nuomos trukmė:
    
    SELECT AVG(TIMESTAMPDIFF(HOUR, `rental_date`, `return_date`)) AS 'Vidutine nuomos trukme' 
    FROM `rental`;
    
    SELECT AVG(TIMESTAMPDIFF(HOUR, `rental_date`, `return_date`)) AS 'Vidutine nuomos trukme' 
    FROM `rental`
    WHERE `inventory_id` = 7;
    # 10 daugiausiai pinigų išleidusių nuomininkų ir kiek jie išleido:
    
    SELECT c.`first_name`, c.`last_name`, SUM(p.`amount`)
    FROM `customer` c 
    INNER JOIN `payment` p 
    ON c.`customer_id` = p.`customer_id`
    GROUP BY c.`customer_id`, c.`first_name`
    ORDER BY  SUM(p.`amount`) DESC
    LIMIT 10;
    # Kurie 3 aktoriai suvaidino daugiausiai filmuose vaidmenų:
    
    SELECT CONCAT(a.`first_name`, ' ', a.`last_name`) AS 'Aktorius', COUNT(f.`film_id`) AS 'Suvaidino vaidmenu'
    FROM `actor` a 
    INNER JOIN `film_actor` fa 
    ON a.`actor_id` = fa.`actor_id`
    INNER JOIN `film` f 
    ON fa.`film_id` = f.`film_id`
    GROUP BY a.`actor_id`
    ORDER BY COUNT(f.`film_id`) DESC
    LIMIT 3;
    #Ar iš nuomos parduotuvės nr 2 galima išsinuomoti šiuo metu filmą ACADEMY DINOSAUR:
    
    select f.`title` AS 'Filmo pavadinimas', r.`return_date` AS 'Grazinimo data'
    FROM `film` f INNER JOIN inventory i 
    ON f.`film_id` = i.`film_id`
    INNER JOIN `rental` r 
    ON i.`inventory_id` = r.`inventory_id`
    WHERE f.`title` = 'ACADEMY DINOSAUR'
    AND i.`store_id` = '2'
    AND r.`rental_date` IS NOT NULL
    AND r.`return_date` IS NULL;
    
    (Jeigu grąžina null, vadinasi filmas negrįžęs ir jo išnuomoti negalima)
    #Atvaizduoti ir suskaičiuoti pasikartojančias pavardes:
    
    SELECT `last_name` as 'Pavarde', COUNT(`last_name`) AS 'Pavardziu skaicius'
    FROM `actor`
    GROUP BY `last_name`
    ORDER BY COUNT(`last_name`) DESC;
    #Kiek įrašų yra actor lentelėje:
    
    select count(*) as 'Is viso irasu' from actor;
    #Parodyti aktorius su skirtingomis pavardėmis:
    
    select distinct last_name as 'Pavarde' from actor;
    #Parodyti aktorių vardus ir pavardes bet filtruojant tik aktorius su skirtingomis pavardėmis:
    
    SELECT first_name as 'Vardas', last_name as 'Pavarde'
    FROM actor
    where last_name IN (
    select last_name
    from actor
    group by last_name
    having count(*) = 1
    );
    #Kiek aktorių yra su skirtingomis pavardėmis:
    
    select count(distinct last_name) as 'Nepasikartojanciu pavardziu skaicius' from actor;
    #Atvaizduoti address lentelės 10 įrašų, pagal district:
    
    select * from address
    order by district
    limit 10;
    #Atvaizduoti address lentelę:
    
    select * from address;
    #Kiek yra address lentelėje eilučių:
    
    select count(*) as 'Eiluciu skaicius' from address;
    #Atvaizduoti skirtingus district:
    
    select distinct district from address;
    
    #Suskaičiuoti kiek yra skirtingų district:
    
    select count(distinct district) as 'Skirtingi district' from address;
    #Atvaizduoti address ir district tik su 1 kartą pasikartojan2iu district pavadinimu:
    
    select address, district 
    from address
    where district in (
    select district
    from address
    group by district
    having count(*) = 1
    );
    #Atvaizduoti name, last_update category lentelės tik su unikaliomis name reikšmėmis:
    
    select name, last_update 
    from category
    where name in(
    select name 
    from category
    group by name
    having count(*) = 1
    );
    #Atvaizduoti trumpiausią, ilgiausią, vidutinio ilgio filmą:
    
    select avg(length) from film;
    select min(length) from film;
    select max(length) from film;
    #Atvaizduoti min ir max + filmo pavadinimas (avg skaičiuoja vidurkį, todėl tikėtina, kad užklausa nieko negrąžins):
    
    select title as 'Pavadinimas', length as 'Max ilgis' from film
    where length = (select max(length) from film);
    
    select title, length from film
    where length = (select min(length) from film);
    #Išvesti filmo pavadinimą, kategoriją ir jo trukmę (filmo ilgį) mažėjančia tvarka pagal trukmę:
    
    select f.title, c.name, f.length
    from film f 
    inner join film_category fc 
    on f.film_id = fc.film_id
    inner join category c 
    on fc.category_id = c.category_id
    order by f.length DESC;
    #Išvesti payments tam tikrai datai (vasario mėn):
    
    select * from payment where payment_date like '%02-%';
    #Išrinkti kokiai sumai kiekvienas darbuotojas (staff) 2005 m. liepos mėn. išnuomavo filmų:
    
    select st.first_name, st.last_name, p.payment_date, p.amount from staff st 
    inner join payment p
    on st.staff_id = p.staff_id
    where p.payment_date like '2005-07%'
    order by p.amount;
    #Išrinkti ir susumuoti kokiai sumai kiekvienas darbuotojas (staff) 2005 m. liepos mėn. išnuomavo filmų:
    
    select st.first_name, st.last_name, sum(p.amount) as total_amount 
    from staff st 
    inner join payment p
    on st.staff_id = p.staff_id
    where p.payment_date like '2005-07%'
    group by st.staff_id, st.first_name, st.last_name
    order by total_amount desc, st.first_name;
    #Išrinkti aktorius kurių vardas yra Victor, Adam, John naudojant in:
    
    select * from actor where first_name in ('albert', 'adam', 'john');
    #Išrinkti 5 daugiausiai uždirbusias filmų kategorijas, rikiuoti mažėjančia tvarka:
    
    select c.name, sum(p.amount) as total_amount
    from category c 
    join film_category fc 
    on c.category_id = fc.category_id
    join film f 
    on fc.film_id = f.film_id
    join inventory i 
    on f.film_id = i.film_id
    join rental r 
    on i.inventory_id = r.inventory_id
    join payment p 
    on r.rental_id = p.rental_id
    group by c.name
    order by total_amount desc
    Limit 5;
    #Kiek parduotuvės uždirbo iš nuomos, išvesti duomenis mažėjančia tvarka pagal sumą:
    
    select s.store_id as store, sum(p.amount) as amount
    from store s 
    join inventory i 
    on s.store_id = i.store_id
    join rental r 
    on i.inventory_id = r.inventory_id
    join payment p 
    on r.rental_id = p.rental_id
    group by store
    order by amount desc;
    #Išvesti aktoriaus vardą ir pavardę viename langelyje ir pavaizduoti didžiosiomis raidėmis rikiuojant pagal vardą/pavardę:
    
    select upper(concat(first_name, ' ', last_name)) as 'Actors' from actor
    order by last_name;
    
    select actor_id, first_name, last_name from actor
    where last_name like '%LL%'
    order by last_name, first_name;
    #Išvesti aktorių id, vardą ir pavardę kurių pavardėje yra dviguma L ('LL') + išrikiuoti pagal vardą/pavardę:
    
    select actor_id, first_name, last_name from actor
    where last_name like '%LL%';
    #Panaudojant IN išrinkti pasirinktas šalis:
    
    select country_id, country from country
    where country in ('Afghanistan', 'Bangladesh', 'China');
    #Redaguoti lentelės kolonas: po country įterpti "language":
    
    alter table country add language varchar(45) after country;
    # Pakeisti varchar(45) į varchar(90):
    
    alter table country modify column language varchar(90);
    #Ištrinti language stulpelį:
    
    alter table country drop column language;
    #Išvesti ir suskaičiuoti pasikartojančias pavardes iš aktorių lentelės mažėjančia tvarka:
    
    select last_name as Pavarde, count(last_name) as Skaicius from actor
    group by last_name
    order by Skaicius desc;
    #Išvesti aktorių pavardes, kurios pasikartoja 3 ir daugiau kartų:
    
    select last_name as Pavarde, count(last_name) as Skaicius from actor
    group by Pavarde
    having Skaicius > 3;
    #Pakeisti aktoriaus ELVIS MARX pavardę į PRESLEY:
    
    update actor set last_name ='PRESLEY' where actor_id = 22;
    #'payment' lentelės sukūrimo užklausa:
    
    show create table payment;
    
    #Atvaizduoti address lentelės 10 įrašų, pagal district:
    
    select * from address
    order by district
    limit 10;
    #Išvesti staff vardus, pavardes ir adresus:
    
    #select s.first_name, s.last_name, a.address from staff s 
    join address a 
    on s.address_id = a.address_id;
    #Išvesti filmų sąrašą ir prie kiekvieno filmo pateikti jame vaidinusių aktorių skaičių:
    
    select f.title as film, count(fa.actor_id) as amount from film f 
    join film_actor fa 
    on f.film_id = fa.film_id 
    group by film
    order by amount desc;
    #Kiek inventoriaus sandėlyje yra 'Hunchback Impossible' kopijų:
    select f.title as title, count(i.film_id) as amount from film f 
    join inventory i 
    on f.film_id = i.film_id 
    where title = 'Hunchback Impossible'
    group by title
    order by amount desc;
  • Sakila elementariausios užklausos

    Sakila elementariausios užklausos

    # Pasirinkite aktoriaus vardą ir pavardę:
    
    SELECT `first_name` AS 'First Name', `last_name` AS 'Last Name' 
    FROM `actor`;

    Lentelės ir stulpelių pavadinimus dėl saugumo rekomenduotina rašyti `backtick’uose`.

    # Pasirinkite aktoriaus vardą ir pavardę, atvaizduoti didžiosiomis raidėmis viename stulpelyje:
    
    SELECT UPPER(CONCAT(`first_name`, ' ', `last_name`)) AS 'Vardas ir Pavarde' 
    FROM `actor`;
    # Pasirinkite aktoriaus 'Ray' vardą ir pavardę, atvaizduoti didžiosiomis raidėmis viename stulpelyje:
     
    SELECT UPPER(CONCAT(`first_name`, ' ', `last_name`)) AS 'Vardas ir Pavarde' 
    FROM `actor` 
    WHERE `first_name` = 'Ray';
    # Pasirinkite aktoriaus vardą ir pavardę, atvaizduoti tas pavardes, kuriose viena greta kitos yra raidės 'ER':
     
    SELECT `first_name` AS 'Vardas', `last_name` AS 'Pavarde' 
    FROM `actor` 
    WHERE `last_name` LIKE '%er%';
    # Pasirinkite aktoriaus vardą ir pavardę, atvaizduoti mažosiomis raidėmis viename stulpelyje  ir kurių pavardė bigiasi 'ON':
    
    SELECT LOWER(CONCAT(`first_name`, ' ', `last_name`)) AS 'Vardas ir Pavarde' 
    FROM `actor` 
    WHERE `last_name` LIKE '%on';
    # Pasirinkti Aktoriaus vardą ir pavardę, kai aktoriaus vardas yra 'Angela':
    
    SELECT `first_name`, `last_name` 
    FROM `actor` 
    WHERE `first_name` = 'angela';
    # Suskaičiuoti kiek yra aktorių su skirtingomis pavardėmis:
    
    SELECT count(distinct `last_name`) AS 'Aktoriu skaicius su skirtingomis pavardemis'
    FROM `actor`;
    
    #arba:
    
    SELECT COUNT(DISTINCT `last_name`) 
    as 'Aktoriu skaicius su skirtingomis pavardemis' 
    FROM `actor` 
    WHERE `last_name` IS NOT NULL;
    # Pasirinkti aktorių vardus ir pavardes, kurių pavardės nesikartoja
    
    SELECT distinct `first_name` AS 'Vardas', `last_name` AS 'Pavarde' 
    FROM `actor`
    GROUP BY `last_name`;
    # Pasirinkti aktorių pavardes, kurios kartojasi, ir kiek kartų jos pasikartoja:
    
    SELECT `last_name` AS 'Pavarde', COUNT(`last_name`) AS 'Kartojasi' FROM `actor`
    GROUP BY `last_name`
    HAVING COUNT(`last_name`) > 1;
    # Pasirinkti viską iš film lentelės
    
    SELECT * FROM `film`;
    # Pasirinkti skirtingus rating įrašus:
    
    SELECT DISTINCT `rating` AS 'Rating'
    FROM `film`;
    # Pasirinkti pirmus 10 įrašų iš film lentelės:
    
    SELECT * FROM `film`
    LIMIT 10;
    # Pasirinkti visus filmus su reitingu pg-13:
    
    SELECT * FROM `film`
    WHERE `rating` = 'pg-13';
    # Kiek filmų yra film lentelėje:
    
    SELECT COUNT(`film_id`) as 'Is viso fimu' 
    FROM `film`;
    # Pasirinkti filmus, išlesitus 2006 metas ir vėliau:
    
    SELECT `title` AS 'Filmo pavadinimas', `release_year` AS 'Gamybos metai'
    FROM `film`
    WHERE `release_year` >= '2005';
    # Pasirinkti viską iš rental lentelės:
    
    SELECT * FROM `rental`;
    # Pasirinkti filmus iš film lentelės, kurių pavadinime yra žodis love:
    
    SELECT * FROM `film`
    WHERE `title` like '%love%';
  • Sakila, MySQL Workbench, MySQL

    Sakila, MySQL Workbench, MySQL

    Sakila Duomenų bazė: https://dev.mysql.com/doc/index-other.html

    MySQL Workbench: https://dev.mysql.com/downloads/workbench/

    MySQL Server: https://dev.mysql.com/downloads/, bet jeigu bus naudojamas pvz. XAMPP ar Laragon – MySQL serverio diegti nereikia.

    Duomenų bazei anksčiau dėl specifinės situacijos naudojau XAMPP, tačiau šiuo metu Windows aplinkoje sėkmingai naudoju Laragon:

    Laragon
  • PHP: Loop A Dice

    PHP: Loop A Dice

    Kad nereikėtų perkrauti puslapio, panaudojame cilklą (loop) for su sąlyga if() {}else{}
    Cikle nustatome, kad “mesime” kauliuką 10 kartų.
    Sąlygoje jeigu kauliukas lygus (==) ‘6’, išvedamas tekstas “You win!”, kitu atveju – “Better luck next time!”. Jeigu “iškrenta” kamuoliukas “6”, ciklas nutraukiamas (break).

    for ($count = 1; $count <=10; $count++){
        
        $dice = rand(1, 6);
        echo '<p>Your dice is ' .$dice . '</p>';
    
        if($dice == 6) {
            echo 'You win!';
            break;
        } else {
            echo '<p>Better luck next time</p>';
        }
    }
    Kad nereikėtų perkrauti puslapio, panaudojame cilklą (loop) for su sąlyga if() {}else{}
Cikle nustatome, kad "mesime" kauliuką 10 kartų.
Sąlygoje jeigu kauliukas lygus (==) '6', išvedamas tekstas "You win!", o jeigu per tuos 10 bandymų "6" "neiškrito", išvedamas tekstas "Better luck next time!".

    Kodas Github’e

  • PHP: Loops

    Loops naudojamas kai iš anksto žinome, kiek kartų reikės vykdyti tą patį kodą.

    Simple PHP loop example. Paprastas PHP loop  pavyzdys.
    echo '<strong>First Loop example</strong><br>';
    
    for($count = 1; $count <=100; $count++) {
        echo $count . ' ';
    }
    echo '<br><strong>Second  Loop example</strong><br>';
    
    for($count2 = 1; $count2 <=100; $count2 = $count2 + 10) {
        echo $count2 . ' ';
    }
    • $count = 1; Čia kintamajam $count priskiriama reikšmė lygi 1 .
    • $count <= 100; Tai sąlyga. Ji skaitoma taip: kartoti kodą iš naujo tol, kol $count reikšmė yra mažesnė arba lygi 100.
    • $count++ Tai reiškia, kad kaskart kodui kartojantis iš naujo, counter’iui pridedama po 1.
    • $count + 10 Tai reiškia, kad kaskart kodui kartojantis iš naujo, counter’iui pridedama po 10.
    • echo $count . ‘ ‘; Tai išveda counter’io reikšmę, kuri atskiriama tarpu (‘ ‘).

    Kodas Github’e.

  • PHP: Throw A Dice!

    PHP: Throw A Dice!

    Šiame PHP skripte imituojamas kauliuko metimas. Sąlyga tokia: jeigu atsitiktinis skaičius yra ‘6’, į ekraną išvedamas: Jackpot! You’ve thrown a 6!
    Visais kitais atvejais yra tikrinama sąlyga. Šiuo atveju kintamajam $dice priskirta reikšmė (6) ir kol ji nebus lygi (==) ‘6’, puslapis vis persikraus.
    Puslapis persikrauna kas 3 sekundės: header(“Refresh:3”);

    echo '<strong>Throw A Dice!</strong><br><br>';
    
    $dice = rand(1, 6);
    
    if ($dice == 6) {
    echo 'Jackpot!' . ' ' . "You've thrown a" . ' ' . $dice . '!';  
    }else{
        header("Refresh:3");
        echo 'Your number is'. ' ' . $dice . '!' . ' ' . 'Your browser will refresh after 3 sec. or you  may do it manually!'; 
    }
    
    echo '<br><br><a href="./dice.php">Refresh current page<a/>';
    

    Tai PHP script pavyzdys. Čia panaudojama:

    • echo – teksto / rezultato išvedimas.
    • $dice = rand(1, 6); , kur $ žymi kintamąjį, rand(1, 6) – paduoda atsitiktinį skaičių apibrėžtame intervale.
    • == – reikšmės sutampa;
    • if() { } else { } – sąlyga.
    • ‘ ‘ . ‘ ‘ – Sujungimas ( concatenation )

    Kodas Github’e.