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 -
column_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]]
Ici, précisez d'abord le nom de la colonne et son type de données.
, 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.
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)
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!