sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear una secuencia en MySQL

A veces es posible que necesite generar una secuencia en MySQL. Dado que MySQL no tiene una función integrada para crear secuencias, debe generarla a través de una consulta SQL. A continuación se explica cómo crear una secuencia en MySQL utilizando la consulta de secuencia de MySQL.

Cómo crear una secuencia en MySQL

Estos son los pasos para crear una secuencia en MySQL. Hay varias formas de generar secuencias en MySQL.

Crear secuencia usando AUTO_INCREMENT

Simplemente puede almacenar su secuencia MySQL en una columna usando el atributo AUTO_INCREMENT durante la creación de la tabla. Digamos que desea crear la tabla pedidos (id, order_date, cantidad) y almacenar la secuencia en id columna.

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

En la tabla anterior, definimos id columna como nuestra clave principal e incluir la opción AUTO_INCREMENT para incrementar y almacenar automáticamente los valores de la clave principal en ella.

Tenga en cuenta que MySQL le permite tener solo una columna AUTO_INCREMENT por tabla y eso también, como clave principal.

En la consulta INSERT anterior, proporcionamos solo valores para order_date y cantidad columnas pero no id columna, pero MySQL genera automáticamente una secuencia para ella.

Lectura adicional:Cómo comparar dos tablas en MySQL

Crear secuencia sin usar AUTO_INCREMENT

Supongamos que desea crear otra columna de secuencia sin usar AUTO_INCREMENT. En ese caso, deberá usar la instrucción UPDATE para calcular matemáticamente y completar esta columna de secuencia.

Por ejemplo, agreguemos una secuencia columna a la tabla anterior para almacenar una nueva secuencia.

mysql> alter table orders 
add column sequence int;

Lectura adicional:Cómo copiar una tabla en MySQL

A continuación, usamos la instrucción UPDATE para crear una secuencia en MySQL. Crearemos una secuencia que sea dos veces id valor de columna

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

Lectura adicional:Cómo obtener los datos del último mes en MySQL

También podemos crear una secuencia no lineal actualizando la fórmula utilizada en la instrucción UPDATE. Aquí está la consulta SQL para generar una secuencia de valores cuadrados (y x y) de id columna

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 facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!