返回顶部
首页 > 资讯 > 数据库 >MySQL8.0之不可见列的示例分析
  • 666
分享到

MySQL8.0之不可见列的示例分析

2023-06-15 03:06:10 666人浏览 安东尼
摘要

小编给大家分享一下MySQL8.0之不可见列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!01 创建不可见列创建不可见列:CREATE TAB

小编给大家分享一下MySQL8.0之不可见列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

01 创建不可见列

创建不可见列:

CREATE TABLE `t2` (  `id` int NOT NULL AUTO_INCREMENT,  `name` varchar(20) DEFAULT NULL,  `age` int DEFAULT NULL INVISIBLE,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

   可以看到,我们的sql里面创建了一个表t2的字段有id、name和age,其中,age字段设置了不可见属性。

   当然,我们可以使用alter table的语法来创建一个不可见列,给t2表中,添加一个score的不可见字段

Mysql> alter table t2  add  score int invisible;Query OK, 0 rows affected (0.05 sec)Records: 0  Duplicates: 0  Warnings: 0

create table like 的语法能不能完美兼容invisible字段呢?答案是可以的。

mysql> show create table t1\G*************************** 1. row ***************************Table: t1Create Table: CREATE TABLE `t1` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`age` int DEFAULT NULL ,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec)mysql> create table t3 like t1;Query OK, 0 rows affected (0.09 sec)mysql> show create table t3\G*************************** 1. row ***************************Table: t3Create Table: CREATE TABLE `t3` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`age` int DEFAULT NULL ,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec)

而create table as的语法,默认是不保留invisible列的,如果想保留这个列,请采用下面的方法:

02 不可见列基本操作

    我们创建一个t1的表,包含id、name、age3个字段,其中,age字段是invisible的,下面来看几个基本操作:

mysql> insert into t1 values (1,'zhangsan',10);ERROR 1136 (21S01): Column count doesn't match value count at row 1mysql> insert into t1 (id,name,age) values (1,'zhangsan',10); Query OK, 1 row affected (0.01 sec)mysql> select * from t1;+----+----------+| id | name     |+----+----------+|  1 | zhangsan |+----+----------+1 row in set (0.00 sec)

   首先我们往表t1中插入1条记录,它包含3个字段,发现报错,提示列的数量不对应;

    然后我们在插入的时候,补充对应的字段,则发现插入正常了。

    但是在使用select * 语法进行查询的时候,发现查询的结果中,只有id 和name两个列,对于age这个invisible的列,默认是不显示的。

     当然,我们可以显示使用select来查看这个列:

mysql> select id,name,age from t1;+----+----------+------+| id | name     | age  |+----+----------+------+|  1 | zhangsan |   10 |+----+----------+------+1 row in set (0.00 sec)

03 不可见列元信息

    可以通过infORMation_schema来查看某个列是否是不可见列,或者desc + table_name 的命令也可以。如下:

HERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 't1';+------------+-------------+-----------+| TABLE_NAME | COLUMN_NAME | EXTRA     |+------------+-------------+-----------+| t1         | i           |           || t1         | j           |           || t1         | k           | INVISIBLE |+------------+-------------+-----------+mysql> desc test.t1;+-------+-------------+------+-----+---------+----------------+| Field | Type        | Null | Key | Default | Extra          |+-------+-------------+------+-----+---------+----------------+| id    | int         | NO   | PRI | NULL    | auto_increment || name  | varchar(20) | YES  |     | NULL    |                || age   | int         | YES  |     | NULL    | INVISIBLE      |+-------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)

04 用作主键id

   看下面这个例子,我们设置主键id为不可见列,这样我们将更多的精力放在表的数据内容相关的字段上,而不必去关心id列,将它隐藏起来:

mysql> use testReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> create table t4 (id int not null auto_increment primary key invisible,name varchar(20),age int );Query OK, 0 rows affected (0.07 sec)mysql> insert into t4 values ('zhangsan',10),('lisi',15);Query OK, 2 rows affected (0.01 sec)Records: 2  Duplicates: 0  Warnings: 0mysql> select * from t4;+----------+------+| name     | age  |+----------+------+| zhangsan |   10 || lisi     |   15 |+----------+------+2 rows in set (0.00 sec)

   这种方法有一个很大的好处:假设业务设计的表没有主键,这种表结构DBA肯定不允许,那么DBA就可以在不修改业务逻辑的情况下,将主键设置成一个不可见列,来解决这个表的问题。

以上是“MySQL8.0之不可见列的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL8.0之不可见列的示例分析

本文链接: https://lsjlt.com/news/277468.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL8.0之不可见列的示例分析
    小编给大家分享一下MySQL8.0之不可见列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!01 创建不可见列创建不可见列:CREATE TAB...
    99+
    2023-06-15
  • MySQL8.0新特性之支持原子DDL语句的示例分析
    小编给大家分享一下MySQL8.0新特性之支持原子DDL语句的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL ...
    99+
    2024-04-02
  • MySQL8.0里GROUP BY有变化的示例分析
    这篇文章的内容主要围绕MySQL8.0里GROUP BY有变化的示例分析进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收...
    99+
    2024-04-02
  • MySQL之高可用架构的示例分析
    小编给大家分享一下MySQL之高可用架构的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL高可用MySQL的高可用也是同样的思路,首先要有多个MySQL实例提供服务,其次就是当某个实例挂掉时,可以自动切换流...
    99+
    2023-06-22
  • JVM系列之内存模型的示例分析
    这篇文章主要介绍JVM系列之内存模型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 内存模型和运行时数据区这一章学习java虚拟机内存模型(Java Virtual machine menory mod...
    99+
    2023-06-15
  • MySQL 8.0 之不可见列的基本操作
    目录01 创建不可见列02 不可见列基本操作03 不可见列元信息04 用作主键id01 创建不可见列 创建不可见列: CREATE TABLE `t2` (   ...
    99+
    2022-05-27
    MySQL 8.0 不可见列
  • JVM系列之从汇编角度分析NullCheck的示例分析
    这篇文章主要介绍了JVM系列之从汇编角度分析NullCheck的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一个普通的virtual call我们来分析一下在方法中...
    99+
    2023-06-15
  • ligerUI中ListBox列表框可移动的示例分析
    这篇文章将为大家详细讲解有关ligerUI中ListBox列表框可移动的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前台页面:<script t...
    99+
    2024-04-02
  • MySQL高可用之keepalived方案的示例分析
    这篇文章主要为大家展示了“MySQL高可用之keepalived方案的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL高可用之keepalive...
    99+
    2024-04-02
  • Python数据分析之绘图和可视化的示例分析
    小编给大家分享一下Python数据分析之绘图和可视化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言matplotlib是一个用于创建出版质量图表...
    99+
    2023-06-15
  • jQuery常见面试题之DOM操作的示例分析
    这篇文章主要为大家展示了“jQuery常见面试题之DOM操作的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery常见面试题之DOM操作的示例分析...
    99+
    2024-04-02
  • Bootstrap列表组的示例分析
    这篇文章主要介绍Bootstrap列表组的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基础列表组基础列表组,看上去就是去掉了列表符号的列表项,并且配上一些特定的样式。在Bo...
    99+
    2024-04-02
  • Linux阵列RAID的示例分析
    这篇文章将为大家详细讲解有关Linux阵列RAID的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一、 RAID详解 二、 mdadm工具介绍 三、 创建一个RAI...
    99+
    2023-06-12
  • php中队列的示例分析
    小编给大家分享一下php中队列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是队列?相对于栈来说,队列是一种先进先出(FIFO)的顺序逻辑结构。什么...
    99+
    2023-06-20
  • json序列化的示例分析
    这篇文章主要为大家展示了“json序列化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“json序列化的示例分析”这篇文章吧。json序列化(javaBean转Json的细节)Java对...
    99+
    2023-06-29
  • Javascript之React的示例分析
    这篇文章主要介绍Javascript之React的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言React核心的单向数据流、一切皆数据的state、不会改变的props,...
    99+
    2024-04-02
  • Underscore之Array的示例分析
    这篇文章主要为大家展示了“Underscore之Array的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Underscore之Array的示例分析”这...
    99+
    2024-04-02
  • webpack之devtool的示例分析
    这篇文章主要介绍webpack之devtool的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于Devtool该选项控制是否以及如何生成源映射。官网上给出的可选值有:其中一...
    99+
    2024-04-02
  • vuex之store的示例分析
    这篇文章将为大家详细讲解有关vuex之store的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Vuex的时候,通常会实例化Store类,然后传入一个对象,包...
    99+
    2024-04-02
  • underscore之function的示例分析
    小编给大家分享一下underscore之function的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!因为unders...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作