SELECT
SELECT командаар хүснэгтийн өгөгдлийг уншина. MySQL-ийн хамгийн олон ашиглагддаг команд бөгөөд маш олон хэлбэрээр бичиж болно.
SELECT *
Хүснэгтийн бүх баганыг унших:
SELECT * FROM users;
+----+------------------+------------------+---------------------+
| id | name | email | created_at |
+----+------------------+------------------+---------------------+
| 1 | Болд Батбаяр | bold@example.com | 2024-06-01 10:00:00 |
| 2 | Дорж Гантулга | dorj@example.com | 2024-06-01 10:01:00 |
| 3 | Мөнх Эрдэнэ | munkh@example.com| 2024-06-01 10:02:00 |
+----+------------------+------------------+---------------------+
* — "бүх багана" гэсэн утгатай. Туршилтад тохиромжтой ч бодит аппликейшнд ашиглахаас зайлсхийх нь дээр — шаардлагагүй өгөгдлийг сүлжээгээр дамжуулна, гүйцэтгэл удаашрана.
Тодорхой багана сонгох
SELECT name, email FROM users;
+------------------+------------------+
| name | email |
+------------------+------------------+
| Болд Батбаяр | bold@example.com |
| Дорж Гантулга | dorj@example.com |
| Мөнх Эрдэнэ | munkh@example.com|
+------------------+------------------+
Баганын дараалал SELECT-д бичсэн дарааллаар гарна — хүснэгтийн тодорхойлолтоос үл хамаарна.
DISTINCT — давтагдаагүй утгуудыг авах
SELECT DISTINCT course_slug FROM lesson_progress;
+-------------+
| course_slug |
+-------------+
| javascript |
| python |
| react |
+-------------+
DISTINCT байхгүй бол нэг курсийн олон хичээлийг дууссан хэрэглэгчид тухайн курсын нэр олон удаа давтагдаж гарна.
Олон баганатай DISTINCT — утгуудын хослол давтагдахгүй:
SELECT DISTINCT user_id, course_slug FROM lesson_progress;
Column alias — AS
Үр дүнд баганын нэрийг өөрчлөн харуулах:
SELECT
name AS хэрэглэгч,
email AS и_мэйл
FROM users;
+------------------+------------------+
| хэрэглэгч | и_мэйл |
+------------------+------------------+
| Болд Батбаяр | bold@example.com |
+------------------+------------------+
AS түлхүүр үгийг орхиж болно, гэхдээ тодорхой болгохын тулд бичих нь зүйтэй:
SELECT name хэрэглэгч, email и_мэйл FROM users; -- ижил үр дүн
Alias-д хоосон зай агуулбал backtick эсвэл ишлэлд хашна:
SELECT name AS `хэрэглэгчийн нэр` FROM users;
Тооцооллын багана
SELECT дотор математик тооцоолол хийж болно:
SELECT
name,
price,
price * 1.1 AS price_with_vat,
price * 0.9 AS discounted_price
FROM products;
+--------------------+----------+----------------+------------------+
| name | price | price_with_vat | discounted_price |
+--------------------+----------+----------------+------------------+
| Утасны дэр | 4990.00 | 5489.000 | 4491.000 |
| Bluetooth чихэвч | 29900.00 | 32890.000 | 26910.000 |
+--------------------+----------+----------------+------------------+
Бусад тооцооллын жишээ:
SELECT
name,
stock,
price,
stock * price AS total_value,
ROUND(price * 1.1, 2) AS with_tax
FROM products;
ROUND(тоо, оронгийн_тоо) — тоог тайрна.
Тогтмол утга оруулах
SELECT
name,
price,
'MNT' AS currency,
CURRENT_DATE AS today
FROM products;
+------------------+----------+----------+------------+
| name | price | currency | today |
+------------------+----------+----------+------------+
| Утасны дэр | 4990.00 | MNT | 2024-06-01 |
+------------------+----------+----------+------------+
SELECT без FROM
MySQL дээр хүснэгтгүйгээр тооцоолол хийх боломжтой:
SELECT 2 + 2;
SELECT NOW();
SELECT UPPER('сайн уу');
SELECT VERSION();
+-------+
| 2 + 2 |
+-------+
| 4 |
+-------+
Функцүүдийг туршиж үзэхэд хэрэгтэй.
Дэлгэрэнгүй жишээ
SELECT
p.id AS дугаар,
p.name AS бараа,
p.price AS үнэ,
p.stock AS нөөц,
p.price * p.stock AS нийт_өртөг,
IF(p.stock > 0, 'Байна', 'Дууссан') AS байдал
FROM products AS p;
+--------+--------------------+----------+------+------------+----------+
| дугаар | бараа | үнэ | нөөц | нийт_өртөг | байдал |
+--------+--------------------+----------+------+------------+----------+
| 1 | Утасны дэр | 4990.00 | 50 | 249500.00 | Байна |
| 2 | Bluetooth чихэвч | 29900.00 | 20 | 598000.00 | Байна |
| 3 | Цэнэглэгч кабель | 1990.00 | 100 | 199000.00 | Байна |
| 4 | Ухаалаг цаг | 89900.00 | 10 | 899000.00 | Байна |
+--------+--------------------+----------+------+------------+----------+
Хүснэгтэд alias ашигласан: FROM products AS p → баганыг p.name хэлбэрээр заана. JOIN хэрэглэх үед энэ маш хэрэгтэй.
Дараагийн хичээлд:
WHERE нөхцөлөөр өгөгдлийг шүүх — харьцуулах оператор, BETWEEN, IN, LIKE, NULL шалгах аргуудыг үзнэ.