Skip to content

Latest commit

 

History

History
175 lines (140 loc) · 5.11 KB

Alter table.md

File metadata and controls

175 lines (140 loc) · 5.11 KB

ALTER TABLE

Ushbu qo'llanmada siz jadval tuzilishini o'zgartirish uchun PostgreSQL ALTER TABLE bayonotidan qanday foydalanishni o'rganasiz.

Mavjud jadvalning tuzilishini o'zgartirish uchun siz PostgreSQL ALTER TABLE iborasidan foydalanasiz.

Quyida ALTER TABLE iborasining asosiy sintaksisi tasvirlangan:

ALTER TABLE table_name action;

PostgreSQL sizga ko'p harakatlarni taqdim etadi:

  • Add a column
  • Drop a column
  • Change the data type of a column
  • Rename a column
  • Set a default value for the column.
  • Add a constraint to a column.
  • Rename a table

Jadvalga yangi ustun qoʻshish uchun siz ALTER TABLE ADD COLUMN iborasidan foydalanasiz:

ALTER TABLE table_name 
ADD COLUMN column_name datatype column_constraint;

Jadvaldan ustun olish uchun siz ALTER TABLE DROP COLUMN iborasidan foydalanasiz:

ALTER TABLE table_name 
DROP COLUMN column_name;

Ustun nomini oʻzgartirish uchun siz ALTER TABLE RENAME COLUMN TO identifikatsiyasidan foydalanasiz:

ALTER TABLE table_name 
RENAME COLUMN column_name 
TO new_column_name;

Ustunning standart qiymatini oʻzgartirish uchun, ALTER TABLE ALTER COLUMN SET DEFAULT yoki DROP DEFAULT dan foydalaning:

ALTER TABLE table_name 
ALTER COLUMN column_name 
[SET DEFAULT value | DROP DEFAULT];

NOT NULL cheklovini oʻzgartirish uchun ALTER TABLE ALTER COLUMN iborasidan foydalanasiz:

ALTER TABLE table_name 
ALTER COLUMN column_name 
[SET NOT NULL| DROP NOT NULL];

CHECK cheklovini qo'shish uchun siz ALTER TABLE ADD CHECK iborasidan foydalanasiz:

ALTER TABLE table_name 
ADD CHECK expression;

Odatda, jadvalga cheklov qoʻshish uchun siz ALTER TABLE ADD CONSTRAINT iborasidan foydalanasiz:

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name constraint_definition;

Jadval nomini oʻzgartirish uchun siz ALTER TABLE RENAME TO iborasidan foydalanasiz:

ALTER TABLE table_name 
RENAME TO new_table_name;

PostgreSQL ALTER TABLE misollari

Keling, ALTER TABLE iborasi bilan mashq qilish uchun links deb nomlangan yangi jadval yarataylik.

DROP TABLE IF EXISTS links;

CREATE TABLE links (
   link_id serial PRIMARY KEY,
   title VARCHAR (512) NOT NULL,
   url VARCHAR (1024) NOT NULL
);

active nomli yangi ustun qo'shish uchun siz quyidagi bayonotdan foydalanasiz:

ALTER TABLE links
ADD COLUMN active boolean;

Quyidagi bayonot active ustunni linksjadvalidan olib tashlaydi:

ALTER TABLE links 
DROP COLUMN active;

title ustuni nomini link_title ga oʻzgartirish uchun quyidagi bayonotdan foydalanasiz:

ALTER TABLE links 
RENAME COLUMN title TO link_title;

Quyidagi bayonot links jadvalga target nomli yangi ustun qo'shadi:

ALTER TABLE links 
ADD COLUMN target VARCHAR(10);

_blank ni links jadvaldagi target ustun uchun standart qiymat sifatida belgilash uchun siz quyidagi bayonotdan foydalanasiz:

ALTER TABLE links 
ALTER COLUMN target
SET DEFAULT '_blank';

Agar siz yangi qatorni links jadvaliga target ustun qiymatini belgilamasdan kiritsangiz, target ustun standart qiymat sifatida _blankni oladi. Masalan:

INSERT INTO links (link_title, url)
VALUES('PostgreSQL Tutorial','https://www.postgresqltutorial.com/');

Quyidagi bayonot links jadvalidan ma'lumotlarni tanlaydi:

SELECT * FROM links;

output

Quyidagi bayonot target ustunga CHECK shartini qo'shadi, shunda target ustun faqat quyidagi qiymatlarni qabul qiladi: _self, _blank, _parent va _top:

ALTER TABLE links 
ADD CHECK (target IN ('_self', '_blank', '_parent', '_top'));

Agar maqsad ustun uchun oʻrnatilgan CHECK cheklovini buzadigan yangi qator qoʻshishga harakat qilsangiz, PostgreSQL quyidagi misolda koʻrsatilganidek xatolik chiqaradi:

INSERT INTO links(link_title,url,target) 
VALUES('PostgreSQL','http://www.postgresql.org/','whatever');
ERROR:  new row for relation "links" violates check constraint "links_target_check"
DETAIL:  Failing row contains (2, PostgreSQL, http://www.postgresql.org/, whatever).DETAIL:  Failing row contains (2, PostgreSQL, http://www.postgresql.org/, whatever).

Quyidagi bayonot links jadvalining url ustuniga UNIQUE cheklovni qo'shadi:

ALTER TABLE links 
ADD CONSTRAINT unique_url UNIQUE ( url );

Quyidagi bayonot allaqachon mavjud bo'lgan urlni kiritishga harakat qiladi:

INSERT INTO links(link_title,url) 
VALUES('PostgreSQL','https://www.postgresqltutorial.com/');

unique_url cheklovi tufayli xatolik yuzaga keladi:

ERROR:  duplicate key value violates unique constraint "unique_url"
DETAIL:  Key (url)=(https://www.postgresqltutorial.com/) already exists.

Quyidagi bayonot links jadvalining nomini urls ga o'zgartiradi:

ALTER TABLE links 
RENAME TO urls;

Ushbu qo'llanmada siz mavjud jadval tuzilishini o'zgartirish uchun PostgreSQL ALTER TABLE iborasidan qanday foydalanishni o'rgandingiz.

© postgresqltutorial.com