0%

🔍 SELECT vaicājumi

SELECT ir visbiežāk lietotais SQL vaicājums — tas iegūst datus no tabulas. Ar WHERE, ORDER BY, LIMIT, LIKE un IN var precīzi filtrēt un kārtot rezultātus.

sql

Pamata SELECT

Teksts
-- Iegūt visas kolonnas un rindas
SELECT * FROM products;

-- Iegūt konkrētas kolonnas
SELECT name, price FROM products;

-- Aliases (kolonnas pārsaukšana rezultātā)
SELECT
    name        AS produkta_nosaukums,
    price       AS cena,
    in_stock    AS ir_noliktavā
FROM products;

-- Aritmētika vaicājumā
SELECT
    name,
    price,
    price * 1.21  AS cena_ar_pvn,
    price * 0.9   AS cena_ar_atlaidi
FROM products;

-- Tekstu savienošana
SELECT CONCAT(first_name, ' ', last_name) AS pilnais_vards FROM users;

-- DISTINCT – unikālās vērtības
SELECT DISTINCT category FROM products;

-- Skaitīt rindas
SELECT COUNT(*) FROM products;

WHERE – filtrēšana

Teksts
-- Salīdzināšanas operatori
SELECT * FROM products WHERE price = 29.99;
SELECT * FROM products WHERE price != 29.99;   -- arī: <>
SELECT * FROM products WHERE price > 50;
SELECT * FROM products WHERE price >= 50;
SELECT * FROM products WHERE price < 10;
SELECT * FROM products WHERE price <= 10;

-- NULL pārbaude (NEIZMANTOT = NULL!)
SELECT * FROM products WHERE description IS NULL;
SELECT * FROM products WHERE description IS NOT NULL;

-- Loģiskie operatori
SELECT * FROM products
WHERE price > 20 AND in_stock = 1;

SELECT * FROM products
WHERE category = 'Elektronika' OR category = 'Datori';

SELECT * FROM products
WHERE NOT in_stock = 1;

-- Kombinācija ar iekavām
SELECT * FROM products
WHERE (price > 50 OR category = 'Sadzīves') AND in_stock = 1;

LIKE, BETWEEN, IN

Teksts
-- LIKE – modeļa meklēšana
-- % = jebkurš skaits rakstzīmju
-- _ = viena jebkura rakstzīme

SELECT * FROM products WHERE name LIKE '%telefon%';  -- Satur "telefon"
SELECT * FROM products WHERE name LIKE 'Mob%';       -- Sākas ar "Mob"
SELECT * FROM products WHERE name LIKE '%Pro';       -- Beidzas ar "Pro"
SELECT * FROM products WHERE code LIKE 'A_B%';       -- Sākas A, trešais B

-- NOT LIKE
SELECT * FROM products WHERE name NOT LIKE '%Demo%';

-- BETWEEN – diapazonā (iekļaujošs)
SELECT * FROM products WHERE price BETWEEN 10.00 AND 99.99;
SELECT * FROM orders  WHERE created_at BETWEEN '2025-01-01' AND '2025-12-31';
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 99;

-- IN – vērtību sarakstā
SELECT * FROM products WHERE category IN ('Elektronika', 'Datori', 'Sadzīves');
SELECT * FROM users    WHERE id IN (1, 5, 10, 23);

-- NOT IN
SELECT * FROM products WHERE category NOT IN ('Apģērbs', 'Rotaļlietas');

-- REGEXP – regulāras izteiksmes
SELECT * FROM users WHERE email REGEXP '^[a-z]+@gmail\.com$';

ORDER BY, LIMIT un OFFSET

Teksts
-- ORDER BY – kārtošana
SELECT * FROM products ORDER BY price;           -- Augošā (noklusējums = ASC)
SELECT * FROM products ORDER BY price ASC;       -- Skaidri norādīts
SELECT * FROM products ORDER BY price DESC;      -- Dilstošā kārtībā

-- Kārtot pēc vairākām kolonnām
SELECT * FROM products
ORDER BY category ASC, price DESC;

-- LIMIT – ierobežot rezultātu skaitu
SELECT * FROM products ORDER BY price LIMIT 10;    -- Pirmie 10

-- LIMIT ar OFFSET – lappusēšana (pagination)
-- LIMIT rindu_skaits OFFSET izlaist_skaitu
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 0;   -- 1. lappuse
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 10;  -- 2. lappuse
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 20;  -- 3. lappuse

-- Kompaktais formāts: LIMIT izlaist, skaits
SELECT * FROM products ORDER BY id LIMIT 0, 10;   -- 1. lappuse
SELECT * FROM products ORDER BY id LIMIT 10, 10;  -- 2. lappuse

-- Pirmais un pēdējais ieraksts
SELECT * FROM products ORDER BY id    ASC  LIMIT 1;  -- Vecākais
SELECT * FROM products ORDER BY id    DESC LIMIT 1;  -- Jaunākais
SELECT * FROM products ORDER BY price DESC LIMIT 1;  -- Dārgākais

Noderīgas SELECT tehnikas

💡 SELECT izpildes kārtība

SQL izpilda vaicājuma klauzulas šādā secībā: FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Tāpēc WHERE nevar izmantot SELECT alias nosaukumus!

Teksts
-- CASE WHEN – IF/ELSE SQL iekšā
SELECT
    name,
    price,
    CASE
        WHEN price < 10  THEN 'Lēts'
        WHEN price < 100 THEN 'Vidēja cena'
        ELSE                  'Dārgs'
    END AS cenu_kategorija
FROM products;

-- IF() – īsāks variants
SELECT name, IF(in_stock = 1, 'Pieejams', 'Nav noliktavā') AS statuss
FROM products;

-- COALESCE – pirmā non-NULL vērtība
SELECT name, COALESCE(description, 'Apraksts nav pieejams') AS apraksts
FROM products;

-- IFNULL – aizstāt NULL ar vērtību
SELECT name, IFNULL(category, 'Bez kategorijas') AS kategorija
FROM products;

-- Subquery SELECT iekšā
SELECT
    name,
    price,
    (SELECT AVG(price) FROM products) AS videjā_cena,
    price - (SELECT AVG(price) FROM products) AS starpiba
FROM products
ORDER BY price DESC;