Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć sekwencję w MySQL

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ń aktualizacji
mysql> 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ś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 sposoby na zastąpienie wartości NULL inną wartością w MySQL

  2. Jak odzyskać klaster MySQL Galera z asynchronicznego urządzenia podrzędnego?

  3. MySQL:Czym jest odwrócona wersja LIKE?

  4. Różnica między FIELD() i FIND_IN_SET() w MySQL

  5. Jaka jest różnica między MySQL a SQL?