Мэдээлэл унших (SELECT)
SELECT бол SQL-ийн хамгийн чухал, хамгийн их ашиглагддаг команд юм. Өгөгдлийн сангаас мэдээлэл унших бүхий л үйлдэл SELECT-ээр эхэлдэг. Энгийн байдлаасаа эхлээд маш нарийн боловсруулалт хийх хүртэл SELECT нэг командаар бүгдийг чаддаг.
Үндсэн SELECT хэлбэр
Хүснэгтийн бүх баганыг унших:
SELECT * FROM users;
* тэмдэг нь "бүх багана" гэсэн утга. Гэхдээ бодит системд * ашиглахаас зайлсхийх нь дээр — яагаад гэвэл хэрэггүй мэдээлэл ч дамжиж, хурд удааширна.
Зөвхөн хэрэгтэй баганаа заах нь зөв дадал:
SELECT нэр, имэйл FROM users;
нэр | имэйл
----------------+------------------------
Болд Баатар | bold@example.com
Сарнай Дорж | sarnai@example.com
Ганбаяр Лхам | ganbayar@example.com
Баганын хоч нэр — AS
Гаралтад баганын нэрийг өөрчлөн харуулахад AS ашиглана:
SELECT
нэр AS "Хэрэглэгчийн нэр",
имэйл AS "И-мэйл хаяг",
нас AS age
FROM users;
AS нь зөвхөн гаралтын нэрийг өөрчилдөг — хүснэгтийн бодит баганын нэр өөрчлөгдөхгүй. Хоч нэрэнд зай байвал хашилт ("...") ашиглана.
Тооцооллын баганууд
SELECT-д шууд математик үйлдэл, функц ашиглаж болно:
SELECT
нэр,
үнэ,
үнэ * 1.1 AS "НӨАТ-тэй үнэ",
үнэ * 0.9 AS "10% хямдралтай"
FROM products;
Мөрийн тоог тоолох:
SELECT COUNT(*) AS нийт_хэрэглэгч FROM users;
нийт_хэрэглэгч
----------------
5
DISTINCT — давтагдахгүй утгууд
Давтагдах утгуудыг нэг удаа харуулахад DISTINCT ашиглана:
-- Бүх нас (давтагдсан утгуудтай)
SELECT нас FROM users;
-- Зөвхөн давтагдашгүй насны утгууд
SELECT DISTINCT нас FROM users ORDER BY нас;
нас
-----
19
22
25
27
30
Ашигтай суурилагдсан функцүүд
PostgreSQL-д олон суурилагдсан функц байдаг. Хамгийн хэрэглэгддэг зарим нь:
SELECT
UPPER(нэр) AS том_үсэг,
LOWER(имэйл) AS жижиг_үсэг,
LENGTH(нэр) AS нэрний_урт,
TRIM(' Болд ') AS цэвэрлэсэн,
NOW() AS одоогийн_цаг,
CURRENT_DATE AS өнөөдөр
FROM users
LIMIT 2;
Тоон функцүүд:
SELECT
ROUND(3.14159, 2) AS дугуйлсан, -- 3.14
CEIL(4.1) AS дээш, -- 5
FLOOR(4.9) AS доош, -- 4
ABS(-15) AS үнэмлэхүй -- 15
;
Хүснэгтгүй SELECT
PostgreSQL-д хүснэгтгүйгээр ч SELECT ажиллуулж болно — туршилт, тооцоолол хийхэд хэрэгтэй:
SELECT 1 + 1 AS үр_дүн;
SELECT NOW() AS одоо;
SELECT 'Сайн уу, PostgreSQL!' AS мэндчилгээ;
Жишээ: posts хүснэгтээс унших
Дараах хүснэгт дээр ажиллая:
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
гарчиг TEXT NOT NULL,
агуулга TEXT,
харагдсан INTEGER DEFAULT 0,
нийтлэгдсэн TIMESTAMPTZ DEFAULT NOW()
);
-- Мэдээлэл оруулах
INSERT INTO posts (гарчиг, харагдсан) VALUES
('PostgreSQL сурах нь', 150),
('SQL JOIN тайлбар', 320),
('Index яагаад чухал', 85);
-- Унших
SELECT
id,
гарчиг,
харагдсан AS "Үзсэн тоо",
DATE(нийтлэгдсэн) AS огноо
FROM posts;
Дараагийн хичээлд:
WHERE нөхцөл ашиглан зөвхөн хэрэгтэй бичлэгүүдийг шүүж уншиж сурна — энэ нь SELECT-ийн хамгийн хүчирхэг хэрэгсэл.