Bu bölümde çalışmasını anlayacağız. PostgreSQL Seri tanımlamamıza izin veren sözde tür otomatik artan sütunlar tablolarda. Ve ayrıca görüyoruz örnekler arasında PostgreSQL Seri sözde türü .
PostgreSQL Seri sözde türü nedir?
PostgreSQL'de, olarak bilinen belirli bir tür veritabanı nesne oluşturucumuz var. Seri alışılmış olan bir Tamsayı dizisi oluştur olarak sıklıkla kullanılanlar Birincil anahtar bir tabloda.
Sıra, aşağıdakilerin yardımıyla oluşturulabilir: SERİ sözde türü Aşağıdaki komutta görebileceğimiz gibi yeni bir tablo oluştururken:
CREATE TABLE table_name( ID SERIAL );
Aşağıdakileri sağlarsak PostgreSQL aşağıdakileri yapar: SERİ sözde türü -e İD kolon:
- Öncelikle PostgreSQL bir dizi nesnesi oluşturacak ve ardından dizi tarafından oluşturulan bir sonraki değeri, belirli bir sütunun önceden tanımlanmış değeri olarak belirleyecektir.
- Bundan sonra PostgreSQL, NOT NULL kısıtlaması -e Kimlik sütunu bir dizi her zaman bir tam sayı ürettiğinden boş olmayan değer .
- Sonunda PostgreSQL, dizinin sahibini Kimlik sütunu; çıktı olarak, tablo veya tablo oluşturulduğunda sıra nesnesi kaldırılır. Kimlik sütunu Düşürüldü.
Not: Aşağıdaki komutların her ikisi de birbirine benzer olduğundan, Seri sözde türünü belirtmek için her iki komutu da kullanabiliriz.
CREATE TABLE table_name( ID SERIAL );
CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID;
PostgreSQL Seri sözde türü aşağıdaki gibi üç türe ayrılmıştır:
Tüm bunları içeren aşağıdaki tabloya sahibiz: Seri sözde tip PostgreSQL tarafından desteklenen spesifikasyon:
İsim | Depolama Boyutu | Menzil |
---|---|---|
KÜÇÜKSERİ | 2 bayt | 1 ila 32767 |
SERİ | 4 bayt | 1 ila 2147483647 |
BÜYÜK SERİ | 8 bayt | 1 ila 9223372036854775807 |
PostgreSQL Seri sözde türünün sözdizimi
PostgreSQL'in sözdizimi Seri sözde tip aşağıdaki gibi:
variable_name SERIAL
PostgreSQL SERİ türü örnekleri
Nasıl yapıldığını anlamak için farklı örnekler görelim. PostgreSQL Seri sözde türü çalışır .
Not: SERIAL türü dolaylı olarak sütun üzerinde bir dizin oluşturmadığından veya sütunu birincil anahtar sütunu yapmadığından, SERIAL sütunu için PRIMARY KEY kısıtlamasını tanımlayabiliriz.
CREATE komutu yardımıyla yeni bir tablo oluşturuyoruz ve INSERT komutunu kullanarak bazı değerleri ekliyoruz.
Aşağıdaki örnekte, şunu kullanıyoruz: YARATMAK oluşturmak için komut Arabalar masanın içine Organizasyon veritabanı:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Çıktı
Arabalar Aşağıdaki ekran görüntüsünde gösterildiği gibi, yukarıdaki komutlar yürütüldükten sonra tablo başarıyla oluşturuldu:
birleştirme java dizesi
Bir kere Arabalar Tablo oluşturulduktan sonra INSERT komutunu kullanarak tabloya bazı değerler ekleyebiliriz. Ve şunu kullanabiliriz: VARSAYILAN INSERT komutundaki anahtar kelimeyi kullanın veya sütun adını atlayın (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Çıktı
Yukarıdaki komutu uyguladıktan sonra aşağıdaki mesajı alacağız ve değer başarıyla Arabalar masa:
VEYA Kullanmak VARSAYILAN Anahtar Kelime Sütun adıyla (Araba_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Çıktı
Yukarıdaki komutu uyguladığımızda aşağıdaki mesajı alacağız; değer başarıyla eklendi Arabalar masa:
Yukarıdaki ekran görüntüsünde görebileceğimiz gibi PostgreSQL, Arabalar ile masa Araba_kimliği sütun değerleri 1 ve 2 .
Oluşturup ekledikten sonra Arabalar tablonun değerlerini kullanacağız SEÇME komut tüm satırları döndürür Arabalar masa:
SELECT * FROM Cars;
Çıktı
Yukarıdaki komutu başarıyla uyguladıktan sonra aşağıdaki sonucu elde edeceğiz:
Şunu kullanabiliriz: pg_get_serial_sequence() bir dizi adını almak için işlev SERİ Aşağıdaki sözdiziminde görebileceğimiz gibi belirli bir tablodaki sütun:
pg_get_serial_sequence('table_name','column_name')
Almak için Mevcut değer Dizi tarafından oluşturulan bir dizi adını currval() fonksiyonuna aktarabiliriz.
Aşağıdaki örnekte kullandık eğrilik() tarafından üretilen geçerli değeri döndüren işlev Arabalar masa Car_id_seq nesne:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Çıktı
Yukarıdaki komutu uyguladıktan sonra aşağıdaki çıktıyı alacağız:
Şunu kullanabiliriz: GERİ DÖNÜYOR Car_id Tabloya yeni bir satır eklediğimizde dizi tarafından oluşturulan değerleri almak istiyorsak, INSERT komutuna yan tümceyi ekleyin.
Aşağıdaki komut yeni bir satır eklemek için kullanılır. Arabalar tablo ve için oluşturulan kayıtları döndürür Araba_kimliği kolon.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Çıktı
Yukarıdaki komutu çalıştırdığımızda aşağıdaki çıktıyı elde edeceğiz. Araba_kimliği gibi 3 :
Not:
- Yukarıda anladığımız gibi, sıra üreteci işlem işlem açısından güvenli değildir; bu da her kullanıcının farklı bir değer alacağı anlamına gelir iki paralel veritabanı varsa bağlantılar bir diziden sonraki değeri almaya çalışır.
- Ve eğer o kullanıcının sıra numarası boşta kalacak ve sıralamada boşluk yaratacaktır. bir kullanıcı işlemi geri alabilir .
Örnek2
Öğrenmek için bir örnek daha görelim Seri sözde tip detayda.
Böylece yeni bir tablo daha oluşturacağız. sebzeler CREATE komutunun yardımıyla benzer bir tabloya dönüştürün. veri tabanı yani Organizasyon ile Veg_id olarak sütun SERİ sözde tip.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Çıktı
sebzeler Aşağıdaki ekran görüntüsünde gösterildiği gibi yukarıdaki komutlar yürütüldükten sonra tablo başarıyla oluşturuldu:
Bir kere sebzeler tablo oluşturulduysa, INSERT komutunu kullanarak içine bazı değerler ekleyeceğiz ve Veggies_id aşağıdaki komutta gösterildiği gibi sütun:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Çıktı
Yukarıdaki komutu uyguladığımızda aşağıdaki mesajı alacağız: değer başarıyla sebzeler masa.
Veya şunu da kullanabiliriz: Varsayılan anahtar kelimeyi kullanır ve Veggie_id aşağıdaki komutta gösterildiği gibi sütun:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Çıktı
Yukarıdaki komutu yürüttükten sonra aşağıdaki mesajı alacağız; bu mesaj, aşağıdaki komutu kullanabileceğimizi söylüyor: Varsayılan anahtar kelime ya da sütun adını yoksay benzer bir çıktı elde edeceğiz:
Bu nedenle, biraz daha değer ekleyeceğiz Arabalar aşağıdaki komutun yardımıyla tablo:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall');
Çıktı
Yukarıdaki komutu çalıştırdıktan sonra, değerin başarılı bir şekilde eklendiğini gösteren aşağıdaki mesajı alacağız. sebzeler masa.
Oluşturup ekledikten sonra sebzeler tablonun değerlerini kullanacağız SEÇME tüm satırları döndürme komutu sebzeler masa:
SELECT * FROM Vegetables;
Çıktı
Yukarıdaki komutu başarıyla uyguladıktan sonra aşağıdaki çıktıyı alacağız:
Genel Bakış
İçinde PostgreSQL Seri sözde türü bölümünde çoğunlukla bir dizi oluşturmak için kullanılan Seri sözde tür işlevselliğini öğrendik. otomatik artışlar Belirli bir tablo için sütun değeri.