什么是 MySQL GENERATED COLUMN 以及如何在创建表时使用它?
技术百科
王林
发布时间:2023-09-12
浏览: 次 基本上生成的列是一项可在 CREATE TABLE 或 ALTER TABLE 语句中使用的功能,并且是一种存储数据的方式,而无需通过 SQL 中的 INSERT 或 UPDATE 子句实际发送数据。 MySQL 5.7 中添加了此功能。生成的列在表域内工作。其语法如下 -
语法
column_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]]
这里,首先指定列名及其数据类型。
- 然后添加 GENERATED ALWAYS 子句以指示该列是生成的列。
- 然后,使用相应的选项指示生成列的类型 - VIRTUAL 或 STORED。默认情况下,如果您没有显式指定生成列的类型,MySQL 将使用 VIRTUAL。
之后,在 AS 关键字后面的大括号内指定表达式。表达式可以包含文字、不带参数的内置函数、运算符或对同一表中任何列的引用。如果使用函数,则它必须是标量和确定性的。
最后,如果存储生成的列,则可以为其定义唯一约束。
示例
在此示例中,我们创建一个名为employee_data 的表,其中包含员工的详细信息以及生成的列,如下所示 -
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)
# 是一种
# 则可
# 可在
# 为其
# 在此
# 创建一个
# 所示
# 或对
# 不带
# 数据类型
# 运算符
# mysql
# sql
# table
# 子句
# column
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- mac怎么安装字体_MAC添加第三方字体与字体册管
- Win11怎么查看显卡显存_查询Win11显卡详细
- Windows10蓝屏SYSTEM_SERVICE
- php本地部署后session无法保存_sessi
- Win11怎么开启HDR模式_Windows 11
- Python集合操作技巧_高效去重解析【教程】
- Win11时间不对怎么同步_Win11自动校准互联
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Win10如何更改网络连接_Windows10以太
- MySQL 中使用 IF 和 CASE 实现查询字
- php中self::能调用子类重写的方法吗_静态绑
- Win11更新后变慢怎么办_Win11系统更新后卡
- Win10怎么关闭自动更新错误重启 Win10策略
- 如何在 Go 中创建包含 map 的 slice(
- mac怎么退出id_MAC退出iCloud账号与A
- 如何在Golang中处理URL参数_Golang
- c# 在高并发下使用反射发射(Reflection
- Windows服务持续崩溃怎样修复_系统服务保护机
- Python如何创建带属性的XML节点
- 如何在 ACF 中正确更新嵌套多层 Group 字
- Win11怎么连接投影仪_Win11多显示器投屏设
- C#如何序列化对象为XML XmlSerializ
- 如何用正则与预处理高效拦截带干扰符的恶意域名
- Win11 explorer.exe频繁崩溃_修复
- Win11时间怎么同步到原子钟 Win11高精度时
- php转mp4怎么保留字幕_php处理带字幕视频转
- Win11怎么关闭触控板_Win11笔记本禁用触摸
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- Windows10电脑怎么查看硬盘通电时间_Win
- MAC如何安装Git版本控制工具_MAC开发环境配
- Go 中 defer 语句在 goroutine
- Win11搜索栏无法输入_解决Win11开始菜单搜
- 如何在Golang中优化文件读写性能_使用缓冲和并
- c++怎么用jemalloc c++替换默认内存分
- Windows怎样拦截WPS弹窗广告_Window
- php在Linux怎么部署_LNMP环境搭建PHP
- 如何在Golang中写入JSON文件_保存结构体数
- c++怎么设置线程优先级与cpu亲和性_c++ 多
- c++中的Tag Dispatching是什么_c
- C++如何获取CPU核心数?(std::threa
- c++ stringstream用法详解_c++字
- C++ static_cast和dynamic_c
- LINUX下如何配置VLAN虚拟局域网_在LINU
- 如何在Golang中修改数组元素_通过指针实现原地
- Win11怎么关闭专注助手 Win11关闭免打扰模
- Win11怎么设置快速访问主页_Windows11
- Windows如何拦截腾讯视频广告_Windows
- Win11怎么设置应用分屏_Windows11贴靠
- LINUX怎么查看进程_LINUX ps命令查看运
- Win11怎么更改系统语言为中文_Windows1

---------+-----------+----------------+
| 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)
QQ客服