Maison > base de données > tutoriel mysql > Qu'est-ce que MySQL GENERATE COLUMN et comment l'utiliser lors de la création d'une table ?

Qu'est-ce que MySQL GENERATE COLUMN et comment l'utiliser lors de la création d'une table ?

王林
Libérer: 2023-09-12 18:29:12
avant
1334 Les gens l'ont consulté

什么是 MySQL GENERATED COLUMN 以及如何在创建表时使用它?

Fondamentalement, les colonnes générées sont une fonctionnalité qui peut être utilisée dans une instruction CREATE TABLE ou ALTER TABLE et constituent un moyen de stocker des données sans réellement envoyer les données via une clause INSERT ou UPDATE dans SQL. Cette fonctionnalité a été ajoutée dans MySQL 5.7. Les colonnes générées fonctionnent dans les champs de table. Sa syntaxe est la suivante -

Syntaxe

column_name data_type [GENERATED ALWAYS] AS (expression)
[VIRTUAL | STORED] [UNIQUE [KEY]]
Copier après la connexion

Ici, précisez d'abord le nom de la colonne et son type de données.

  • Ajoutez ensuite la clause GENERATED ALWAYS pour indiquer que la colonne est une colonne générée.
  • Ensuite, utilisez l'option appropriée pour indiquer le type de colonne générée - VIRTUELLE ou STOCKÉE. Par défaut, MySQL utilise VIRTUAL si vous ne spécifiez pas explicitement le type de colonne générée. Après

, précisez l'expression entre accolades après le mot-clé AS. Les expressions peuvent contenir des littéraux, des fonctions intégrées sans paramètres, opérateurs ou références à une colonne de la même table. Si une fonction est utilisée, elle doit être scalaire et déterministe.

Enfin, si vous stockez la colonne générée, vous pouvez définir une contrainte unique pour celle-ci.

Exemple

Dans cet exemple, nous créons une table nommée Employee_data qui contient les détails de l'employé ainsi que les colonnes générées comme indiqué ci-dessous -

mysql> Create table employee_data(ID INT AUTO_INCREMENT PRIMARY KEY, First_name VARCHAR(50) NOT NULL, Last_name VARCHAR(50) NOT NULL, FULL_NAME VARCHAR(90) GENERATED ALWAYS AS(CONCAT(First_name,' ',Last_name)));
Query OK, 0 rows affected (0.55 sec)

mysql> DESCRIBE employee_data;
+------------+-------------+------+-----+---------+-------------------+
| Field      | Type        | Null | Key | Default | Extra             |
+------------+-------------+------+-----+---------+-------------------+
| ID         | int(11)     | NO   | PRI | NULL    | auto_increment    |
| First_name | varchar(50) | NO   |     | NULL    |                   |
| Last_name  | varchar(50) | NO   |     | NULL    |                   |
| FULL_NAME  | varchar(90) | YES  |     | NULL    | VIRTUAL GENERATED |
+------------+-------------+------+-----+---------+-------------------+
4 rows in set (0.00 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Yashpal','Sharma');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Krishan','Kumar');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Rakesh','Arora');
Query OK, 1 row affected (0.08 sec)

mysql> Select * from employee_data;
+----+------------+-----------+----------------+
| ID | First_name | Last_name | FULL_NAME      |
+----+------------+-----------+----------------+
| 1  | Yashpal    | Sharma    | Yashpal Sharma |
| 2  | Krishan    | Kumar     | Krishan Kumar  |
| 3  | Rakesh     | Arora     | Rakesh Arora   |
+----+------------+-----------+----------------+
3 rows in set (0.00 sec)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal