Czasami może być konieczne wygenerowanie sekwencji w MySQL. Ponieważ MySQL nie ma wbudowanej funkcji do tworzenia sekwencji, musisz wygenerować ją za pomocą zapytania SQL. Oto jak utworzyć sekwencję w MySQL za pomocą zapytania sekwencji MySQL.
Jak tworzyć sekwencję w MySQL
Oto kroki, aby utworzyć sekwencję w MySQL. Istnieje wiele sposobów generowania sekwencji w MySQL.
Utwórz sekwencję za pomocą AUTO_INCREMENT
Możesz po prostu zapisać sekwencję MySQL w kolumnie, używając atrybutu AUTO_INCREMENT podczas tworzenia tabeli. Załóżmy, że chcesz utworzyć tabelę zamówienia(id, data_zamówienia, kwota) i zapisz sekwencję w id kolumna.
mysql> create table orders(id int AUTO_INCREMENT PRIMARY KEY, order_date date, amount int); mysql> insert into orders(order_date, amount) values('2020-08-01', 250), ('2020-08-02',125), ('2020-08-03',300); mysql> select * from orders; +----+------------+--------+ | id | order_date | amount | +----+------------+--------+ | 1 | 2020-08-01 | 250 | | 2 | 2020-08-02 | 125 | | 3 | 2020-08-03 | 300 | +----+------------+--------+
W powyższej tabeli definiujemy id kolumna jako nasz klucz podstawowy i zawiera opcję AUTO_INCREMENT, aby automatycznie zwiększać i przechowywać w niej wartości klucza podstawowego.
Pamiętaj, że MySQL pozwala mieć tylko jedną kolumnę AUTO_INCREMENT na tabelę i to również jako klucz podstawowy.
W powyższym zapytaniu INSERT podajemy tylko wartości dla data_zamówienia i kwota kolumny, ale nie id kolumna, ale MySQL automatycznie generuje dla niej sekwencję.
Przeczytaj bonus:Jak porównać dwie tabele w MySQL
Utwórz sekwencję bez użycia AUTO_INCREMENT
Załóżmy, że chcesz utworzyć kolejną kolumnę sekwencji bez użycia AUTO_INCREMENT. W takim przypadku będziesz musiał użyć instrukcji UPDATE, aby matematycznie obliczyć i wypełnić tę kolumnę sekwencji.
Na przykład dodajmy sekwencję kolumnę do powyższej tabeli, aby zapisać nową sekwencję.
mysql> alter table orders add column sequence int;
Przeczytaj bonus:Jak skopiować tabelę do MySQL
Następnie używamy instrukcji UPDATE do tworzenia sekwencji w MySQL. Utworzymy sekwencję, która jest dwukrotnie większa niż id wartość kolumny
Zestaw zamówień aktualizacjimysql> update orders set sequence=2*id; mysql> select * from orders; +----+------------+--------+----------+ | id | order_date | amount | sequence | +----+------------+--------+----------+ | 1 | 2020-08-01 | 250 | 2 | | 2 | 2020-08-02 | 125 | 4 | | 3 | 2020-08-03 | 300 | 6 | +----+------------+--------+----------+
Przeczytaj bonus:Jak uzyskać dane z ostatniego miesiąca w MySQL
Możemy również utworzyć nieliniową sekwencję, aktualizując formułę używaną w instrukcji UPDATE. Oto zapytanie SQL generujące sekwencję wartości kwadratowych (y x y) o id kolumna
mysql> update orders set sequence=id*id; mysql> select * from orders; +----+------------+--------+----------+ | id | order_date | amount | sequence | +----+------------+--------+----------+ | 1 | 2020-08-01 | 250 | 1 | | 2 | 2020-08-02 | 125 | 4 | | 3 | 2020-08-03 | 300 | 9 | +----+------------+--------+----------+
Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!