sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar en sekvens i MySQL

Ibland kan du behöva generera sekvens i MySQL. Eftersom MySQL inte har en inbyggd funktion för att skapa sekvens, behöver du generera den via SQL-fråga. Så här skapar du en sekvens i MySQL med hjälp av MySQL-sekvensfrågan.

Hur man skapar en sekvens i MySQL

Här är stegen för att skapa sekvens i MySQL. Det finns olika sätt att generera sekvens i MySQL.

Skapa sekvens med AUTO_INCREMENT

Du kan helt enkelt lagra din MySQL-sekvens i en kolumn med AUTO_INCREMENT-attributet under tabellskapandet. Låt oss säga att du vill skapa tabell order(id, order_date, summa) och lagra sekvensen i id kolumn.

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 |
+----+------------+--------+

I tabellen ovan definierar vi id kolumn som vår primärnyckel och inkluderar AUTO_INCREMENT-alternativet för att automatiskt öka och lagra primärnyckelvärden i den.

Observera att MySQL tillåter dig att bara ha en AUTO_INCREMENT kolumn per tabell och det också som primärnyckel.

I INSERT-frågan ovan tillhandahåller vi endast värden för order_date och belopp kolumner men inte id kolumn men MySQL genererar automatiskt en sekvens för den.

Bonus Läs:Hur man jämför två tabeller i MySQL

Skapa sekvens utan att använda AUTO_INCREMENT

Låt oss säga att du vill skapa en annan sekvenskolumn utan att använda AUTO_INCREMENT. I så fall måste du använda UPDATE-satsen för att matematiskt beräkna och fylla i denna sekvenskolumn.

Låt oss till exempel lägga till en sekvens kolumn till ovanstående tabell för att lagra en ny sekvens.

mysql> alter table orders 
add column sequence int;

Bonus Läs:Hur man kopierar tabell i MySQL

Därefter använder vi UPDATE-satsen för att skapa sekvens i MySQL. Vi kommer att skapa en sekvens som är två gånger id kolumnvärde

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 |
+----+------------+--------+----------+

Bonus Läs:Hur man får senaste månadsdata i MySQL

Vi kan också skapa en icke-linjär sekvens genom att uppdatera formeln som används i UPDATE-satsen. Här är SQL-frågan för att generera en sekvens av kvadratvärden (y x y) av id kolumn

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 gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Hur hanterar jag SQL-kolumnnamn som ser ut som SQL-nyckelord?

  2. Hur man uppdaterar vy i MySQL

  3. SQL Server Update Databas Statistics

  4. Hur man tar bort Not Null Constraint i MySQL