# SQL ALTER TABLE — jadvalni o'zgartirish

> SQL ALTER TABLE bilan mavjud jadvalni o'zgartirish: yangi ustun qo'shish, ustun va jadval nomini o'zgartirish hamda ustunni o'chirish. SQLite cheklovlari.

Manba: https://learncode.uz/sql/alter-table/
Sana: 2026-06-17

[Jadval yaratganingizdan](https://learncode.uz/sql/create-table) keyin ham ehtiyoj o'zgarishi
mumkin: yangi ustun kerak bo'lib qoladi yoki nom noqulay bo'lib chiqadi.
Jadvalni o'chirib qayta yaratmasdan o'zgartirish uchun **`ALTER TABLE`**
ishlatiladi.

Oldingi darsda yaratgan `yetkazuvchilar` jadvali ustida ishlaymiz.

## Ustun qo'shish — ADD COLUMN

Eng ko'p ishlatiladigan amal — yangi ustun qo'shish:

```sql
ALTER TABLE yetkazuvchilar ADD COLUMN faol INTEGER DEFAULT 1;
```

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

```sql
ALTER TABLE mahsulotlar ADD COLUMN chegirma INTEGER DEFAULT 0;
SELECT nom, narx, chegirma FROM mahsulotlar LIMIT 4;
```

Bu `faol` ustunini qo'shadi. `DEFAULT 1` — mavjud qatorlarga avtomatik `1`
qiymati beriladi. Endi jadvalda `faol` ustuni paydo bo'ladi.

## Ustun nomini o'zgartirish — RENAME COLUMN

Ustun nomi noqulay bo'lsa, uni o'zgartirish mumkin:

```sql
ALTER TABLE yetkazuvchilar RENAME COLUMN telefon TO aloqa;
```

Endi `telefon` ustuni `aloqa` deb ataladi. Ichidagi ma'lumot o'zgarmaydi —
faqat nomi.

## Jadval nomini o'zgartirish — RENAME TO

Butun jadvalni qayta nomlash:

```sql
ALTER TABLE yetkazuvchilar RENAME TO taminotchilar;
```

## Ustunni o'chirish — DROP COLUMN

Keraksiz ustunni olib tashlash:

```sql
ALTER TABLE taminotchilar DROP COLUMN aloqa;
```

> **Boshlovchilar tez-tez yanglishadigan joy**
>
> SQLite'da `ALTER TABLE` **cheklangan**: u faqat ustun qo'shish, nomini
> o'zgartirish va o'chirishga ruxsat beradi. Ustun **tipini** o'zgartirish yoki
> `NOT NULL` shartini qo'shish to'g'ridan-to'g'ri ishlamaydi. `RENAME COLUMN`
> (3.25) va `DROP COLUMN` (3.35) faqat yangi versiyalarda bor. MySQL va
> PostgreSQL'da `ALTER TABLE` ancha kengroq imkoniyat beradi.

> **Yodda tuting**
>
> Jadval tuzilishini o'zgartirish — jiddiy amal, ayniqsa unda ma'lumot bo'lsa.
> Ustun o'chirsangiz, undagi barcha qiymat ham yo'qoladi va uni qaytarib
> bo'lmaydi. Shuning uchun muhim bazada oldin **zaxira** oling, keyin
> o'zgartiring.

## Amaliy mashq

Jadval tuzilmasini o'zgartiring:

1. `mahsulotlar` ga `chegirma` ustunini `DEFAULT 0` bilan qo'shing;
2. `SELECT` bilan yangi ustunni ko'ring — qiymatlar nima?
3. `UPDATE` bilan mevalar chegirmasini 10 ga o'rnating;
4. ustun nomini `RENAME COLUMN` bilan o'zgartiring;
5. mavjud ustunni qayta qo'shishga urinib ko'ring;
6. `DROP COLUMN` bilan o'sha ustunni o'chiring va `SELECT` bilan
   jadvalda qolmaganini tasdiqlang.

2-qadamda `DEFAULT` qanday ishlaganini tushuntiring.

## Qisqacha xulosa

- `ALTER TABLE` — mavjud jadvalni qayta yaratmasdan o'zgartiradi.
- `ADD COLUMN` — yangi ustun qo'shadi (`DEFAULT` bilan boshlang'ich qiymat).
- `RENAME COLUMN ... TO ...` — ustun nomini o'zgartiradi.
- `RENAME TO` — jadval nomini o'zgartiradi; `DROP COLUMN` — ustunni o'chiradi.
- SQLite'da imkoniyat cheklangan; ustun o'chirish ma'lumotni ham o'chiradi.

Keyingi darsda [constraint](https://learncode.uz/sql/constraint) — ustunlarga qo'yiladigan
qoidalar (NOT NULL, UNIQUE, CHECK, DEFAULT) ni ko'ramiz.
