Sekwencja SQL

Sekwencja SQL
Czy kiedykolwiek korzystałeś z instrukcji automatycznego wzrostu lub szeregów w bazie danych? Jeśli tak, to masz sekwencję SQL. Chociaż sekwencje i kolumny tożsamości są nieco inne, mają wspólne cechy.

Sekwencja odnosi się do zestawu unikalnych wartości całkowitych, które są generowane na żądanie. Są powszechną funkcją w wielu silnikach bazy danych. Wynika to z faktu, że różne scenariusze wymagają każdego rekordu w bazie danych, aby mieć unikalny identyfikator.

Omówmy koncepcję sekwencji SQL w tym samouczku.

Jak działają sekwencje SQL

Nie ma uniwersalnego sposobu opisania, jak działają sekwencje. Wynika to z faktu, że różne silniki bazy danych implementują je inaczej.

Dowiedzmy się, jak to działa.

Sekwencje w MySQL

Sekwencje w MySQL są zaimplementowane przez ustawienie atrybutu auto_increment w kolumnie. W większości przypadków ta kolumna jest również wybrana jako klucz podstawowy, ponieważ każda wartość w kolumnie musi być unikalna.

Możemy zilustrować, jak używać sekwencji w MySQL, jak pokazano w zapytaniu poniżej:

-- Mysql
Utwórz Tabela Table_name (
Klucz podstawowy kolumnowy int auto_increment,
kolumn_name2 varchar (100),
);

Powyższe zapytanie tworzy kolumnę z sekwencją SQL za pomocą słowa kluczowego Auto_Increment. Zauważ, że ustawiamy również ograniczenie klucza podstawowego na kolumnie.

Chociaż dodawanie sekwencji w MySQL jest tak łatwe, jak ilustrowano powyżej, należy zwrócić uwagę na kilka punktów:

  1. Kolumna sekwencji w MySQL musi być indeksowana. Oznacza to ustawienie kolumny jako klucza podstawowego lub unikalnego.
  2. Kolumna nie może zawierać wartości zerowych. Możesz to rozwiązać, ustawiając ograniczenie nie zerowe w kolumnie. W niektórych przypadkach MySQL może wyraźnie określić ograniczenie nie zerowe, gdy dodano ograniczenie auto_increment.
  3. Wartości w kolumnie sekwencji zaczynają się od 1 i zwiększają o 1 dla każdego rekordu dodanego do tabeli.
  4. Myisam i Innodb nie obsługują ponownego użycia usuwanych numerów sekwencji. Stąd MySQL przypisze następującą wartość do następnej wstawionej sekwencji, jeśli usuniesz rekord. Na przykład, jeśli usuniesz 10, MySQL nie użyje ponownie tej wartości. Zamiast tego przypisuje 11 do następnego rekordu.
  5. MySQL pozwala zresetować wartość automatycznego wzrostu.

Sekwencja w PostgreSQL

W PostgreSQL sekwencje to obiekty zdefiniowane przez użytkownika związane ze schematem, w którym są tworzone.

Aby utworzyć sekwencję w PostgreSQL, użyj składni, jak pokazano poniżej:

-- PostgreSQL
Utwórz sekwencję [jeśli nie istnieje] Nazwa sekwencji
jako data_type
Przyrost przez [increment_value]
MinValue [minumum_value] | Brak Minumum_Value
MaxValue [Maximum_Value] | Brak maksimum_value
Zacznij [od] Start
Pamięć podręczna
Brak cyklu
należące do [Table_name.Kolumna_nazwa] Brak

Okej, co to wszystko znaczy? Pozwól nam podzielić go na mniejsze sekcje, które możemy zrozumieć.

Utwórz sekwencję

Pierwsza część to sekwencja tworzenia. To pozwala stworzyć nową sekwencję, jeśli nie istnieje. Nazwa sekwencji może być wszystkim, co chcesz.

Jako data_type

Klauzula AS pozwala określić typ danych dla sekwencji. PostgreSQL umożliwia typy SmallIt, Int i Bigint. Jeśli nie chcesz identyfikować typu danych, możesz pominąć tę klauzulę, a PostgreSQL domyślnie BigINT.

Przyrost przez

Ta klauzula określa wartość dodaną do bieżącej sekwencji w celu utworzenia nowej wartości sekwencji. Na przykład, jeśli sekwencja wynosi 1,2,3,4,5, wartość przyrostu wynosi 1.

Jeśli chcesz zacząć od góry i zejść w miarę dodawania rekordów, określ wartość ujemną do przyrostu według klauzuli.

Domyślnie PostgreSQL użyje wartości przyrostu 1.

MinValue

Ta klauzula określa minimalną wartość dla sekwencji. Jeśli nie zostanie określona żadna wartość, PostgreSQL użyje wartości domyślnej.

MAKSYMALNA WARTOŚĆ

Klauzula MAXVALUE ustawia maksymalną wartość dla sekwencji.

ZACZYNAĆ Z

Ta klauzula ustawia wartość startową dla sekwencji. Jeśli nie zostanie określona żadna wartość, wartość minuta jest używana do sekwencji rosnących, a Maxvule jest używana do sekwencji malejących.

PAMIĘĆ PODRĘCZNA

Ta klauzula zdefiniuje, ile liczb sekwencji ma być zaproszonych i przechowywanych w pamięci. To pozwala na szybszy dostęp. Domyślnie PostgreSQL użyje wartości 1, stąd brak pamięci podręcznej.

CYKL

Klauzula cykliczna pozwala określić opakowanie, gdy wartości maksymalne lub min są osiągane w sekwencji. PostgreSQL użyje odpowiednio Min i MaxValue, gdy limit zostanie osiągnięty, jeśli cykl nie jest określony.

POSIADANY PRZEZ

Ta opcja określa, z którą kolumnę tabeli jest powiązana. Stąd, jeśli kolumna lub tabela jest upuszczona, sekwencja jest również usuwana.

Jeśli sekwencja nie jest powiązana z żadną tabelą lub kolumną, możesz ustawić własność None.

Aby utworzyć prostą sekwencję w PostgreSQL, uruchom zapytanie:

Utwórz sekwencję my_seq
przyrost o 1
Minvalue 1
MaxValue 1000
Rozpocznij 1
należący do My_Table.my_column

Powyższe zapytanie tworzy nową sekwencję powiązaną z My_Column w tabeli My_Table.

Możesz zbadać więcej o sekwencjach PostgreSQL w poniższym zasobie:

https: // www.PostgreSQL.Org/Docs/Current/SQL-Createsequence.html

Sekwencje na serwerze SQL

Podobnie jak PostgreSQL, sekwencje na serwerze SQL to obiekty zdefiniowane przez użytkownika. Dlatego używają blisko podobnej składni do sekwencji w PostgreSQL. Jedyną różnicą jest składnia.

Przykładowy składnia jest jak pokazano poniżej:

Utwórz sekwencję [Schema_name.] Nazwa SECENTENCJA
[Jako Integer_Type]
[Zacznij od start_value]
[Przyrost przez increment_value]
[MinValue [min_value] | No MinValue]
[MaxValue [max_value] | No MaxValue]
[Cykl | Bez cyklu]
[Cache [cache_size] | Bez pamięci podręcznej];

Zamiast braku, SQL Server nie używa cyklu i pamięci podręcznej.

Możesz zbadać więcej o sekwencjach serwera SQL w poniższym zasobie:

https: // dokumenty.Microsoft.com/en-us/sql/t-sql/instrukcje/create-sekwencyjna-transakcja-sql?Widok = SQL-SERVER-VER15

Uwaga: Użytkownicy Oracle Database, sprawdź poniższy zasób

https: // dokumenty.wyrocznia.com/cd/b12037_01/serwer.101/B10759/instrukcje_6014.HTM

Wniosek

Ten szczegółowy artykuł obejmował sekwencje SQL i sposób, w jaki możemy je używać w naszych bazach danych. Bądź na bieżąco z kolejnymi samouczkami.