# SQL INSERT — ma'lumot qo'shish

> SQL INSERT INTO bilan jadvalga yangi qator qo'shish: ustun va qiymatlar tartibi, bir vaqtda bir nechta qator kiritish va id ustunini avtomatik to'ldirish.

Manba: https://learncode.uz/sql/insert/
Sana: 2026-06-12

Shu paytgacha bazadan faqat **o'qidik** — [SELECT](https://learncode.uz/sql/select),
[WHERE](https://learncode.uz/sql/where), [ORDER BY](https://learncode.uz/sql/order-by-limit). Endi unga **yangi
ma'lumot** yozishni o'rganamiz. Yangi qator qo'shish uchun **`INSERT INTO`**
ishlatiladi.

## INSERT INTO — yangi qator

Yozilishi: jadval nomi, qavs ichida **ustunlar**, keyin `VALUES` va qavs
ichida **qiymatlar**:

```sql
INSERT INTO mahsulotlar (nom, narx, soni, turi)
VALUES ('Asal', 45000, 15, 'shirinlik');
```

O'zingiz ishga tushirib ko'ring — so'rovni tahrirlashingiz ham mumkin:

```sql
SELECT * FROM mahsulotlar;
```

Bu `mahsulotlar` jadvaliga yangi qator qo'shadi. Tekshirish uchun:

```sql
SELECT * FROM mahsulotlar WHERE nom = 'Asal';
```

Natija — yangi mahsulot:

| id | nom | narx | soni | turi |
|---|---|---|---|---|
| 9 | Asal | 45000 | 15 | shirinlik |

Ustunlar va qiymatlar **bir tartibda** yoziladi: birinchi ustunga birinchi
qiymat, ikkinchisiga ikkinchisi. Matn [bitta tirnoq](https://learncode.uz/sql/where) ichida,
son tirnoqsiz.

> **Boshlovchilar tez-tez yanglishadigan joy**
>
> Ustunlar soni va qiymatlar soni **teng** bo'lishi shart. Bittasini
> unutsangiz yoki tartibni chalkashtirsangiz — baza xato beradi yoki qiymat
> noto'g'ri ustunga tushadi. Ustun ro'yxatini yozish shart emas, lekin
> yozgan ma'qul: shunda qaysi qiymat qayerga tushishi aniq ko'rinadi.

## id ni avtomatik to'ldirish

E'tibor bering — biz `id` ni yozmadik, lekin natijada u `9` bo'ldi. Sabab:
`id` ustuni **avtomatik** to'ldiriladi. Har yangi qatorga baza navbatdagi
raqamni o'zi beradi, shuning uchun uni qo'lda yozish shart emas.

> **Atama**
>
> **Avtomatik oshuvchi kalit** (auto-increment) — baza har yangi qatorga
> o'zi ketma-ket raqam beradigan ustun. Odatda bu `id` — jadvaldagi har
> qatorning noyob "pasporti". Uni qo'lda kiritmasangiz, baza g'amxo'rlik
> qiladi.

## Bir vaqtda bir nechta qator

Har biri uchun alohida `INSERT` yozish shart emas. `VALUES` dan keyin bir
nechta qavsni vergul bilan sanasangiz — hammasi bir buyruqda qo'shiladi:

```sql
INSERT INTO mahsulotlar (nom, narx, soni, turi) VALUES
  ('Shakar', 11000, 80, 'don'),
  ('Tuz', 2500, 90, 'don'),
  ('Yog''', 32000, 20, 'don');
```

Uch mahsulot bir yo'la qo'shildi. Bu ko'p ma'lumot kiritganda ancha tez
va qulay.

> **Yodda tuting**
>
> Matn ichida tirnoqning o'zi kerak bo'lsa (masalan "Yog'"), uni **ikki
> marta** yoziladi: `'Yog'''`. Baza `''` ni bitta tirnoq deb tushunadi.
> Bu — matnli bazalarda tez-tez uchraydigan nozik joy.

<Callout type="example" title="O'zingizni sinab ko'ring">
Namuna bazangizga o'zingiz bir mahsulot qo'shing, keyin ko'ring:

```sql
INSERT INTO mahsulotlar (nom, narx, soni, turi)
VALUES ('Pishloq', 55000, 12, 'sut mahsuloti');

SELECT * FROM mahsulotlar ORDER BY id DESC LIMIT 3;
```

So'nggi qo'shilgan qatorlar ro'yxat boshida chiqadi. `mijozlar` jadvaliga
ham yangi mijoz qo'shib ko'ring — ustunlari `ism, shahar, yosh`.
</Callout>

## Amaliy mashq

Yangi qator qo'shing:

1. `mahsulotlar` ga yangi mahsulot qo'shing (id 9 dan boshlab);
2. `SELECT` bilan qo'shilganini tekshiring;
3. `id` ni takrorlab qo'shishga urinib ko'ring — qanday xato chiqadi?
4. bitta `INSERT` bilan ikkita qator qo'shing;
5. `nom` ustunini tashlab qo'shishga urining;
6. `mijozlar` jadvaliga yangi mijoz qo'shing va uni darhol `SELECT` bilan
   tekshiring — boshqa jadvalda ham qoida bir xilmi?

3 va 5-qadamdagi xatolar nima haqida ogohlantiryapti?

## Qisqacha xulosa

- `INSERT INTO jadval (ustunlar) VALUES (qiymatlar)` — yangi qator qo'shadi.
- Ustunlar va qiymatlar **bir tartibda** va **teng sonda** bo'ladi.
- Matn bitta tirnoqda, son tirnoqsiz.
- `id` odatda **avtomatik** to'ldiriladi — uni yozish shart emas.
- Bir nechta qatorni bitta `INSERT` da vergul bilan qo'shish mumkin.

Keyingi darsda [`UPDATE`](https://learncode.uz/sql/update) bilan **mavjud ma'lumotni
o'zgartirish**ni ko'ramiz — masalan mahsulot narxini yangilash.
