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

  介绍

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

01创建不可见列

创建不可见列:

CREATE  TABLE 《终结者2》,(   “id”,才能int  NOT  NULL  AUTO_INCREMENT,   “名字”,才能varchar (20), DEFAULT 空,   “年龄”,才能int  DEFAULT  NULL 不可见,   PRIMARY 才能;KEY  (id)   ),引擎=InnoDB  DEFAULT  CHARSET=utf8mb4 整理=utf8mb4_0900_ai_ci

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

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

mysql>, alter  table  t2 , add , score  int 看不见;   Query 好吧,,0,rows  affected (0.05,秒)   记录:0,,重复:,0,,警告:,0

创建表像的语法能不能完美兼容看不见字段呢?答案是可以的。

mysql>, show  create  table  t1 \ G   * * * * * * * * * * * * * * * * * * * * * * * * * * *,1只row  * * * * * * * * * * * * * * * * * * * * * * * * * * *   表:t1   Create 表:,Create  TABLE  t1, (   “id”, int  NOT  NULL  AUTO_INCREMENT,   “名字”,varchar (20), DEFAULT 空,   “年龄”,int  DEFAULT  NULL /* ! 80023, INVISIBLE  */,   PRIMARY  KEY  (id)   ),引擎=InnoDB  AUTO_INCREMENT=2, DEFAULT  CHARSET=utf8mb4 整理=utf8mb4_0900_ai_ci   1,row  set 拷贝;(0.00,sec)      mysql>, create  table  t3  like  t1;   Query 好吧,,0,rows  affected (0.09,秒)      mysql>, show  create  table  t3 \ G   * * * * * * * * * * * * * * * * * * * * * * * * * * *,1只row  * * * * * * * * * * * * * * * * * * * * * * * * * * *   表:t3   Create 表:,Create  TABLE “t3”, (   “id”, int  NOT  NULL  AUTO_INCREMENT,   “名字”,varchar (20), DEFAULT 空,   “年龄”,int  DEFAULT  NULL /* ! 80023, INVISIBLE  */,   PRIMARY  KEY  (id)   ),引擎=InnoDB  DEFAULT  CHARSET=utf8mb4 整理=utf8mb4_0900_ai_ci   1,row  set 拷贝;(0.00,sec)

而创建表的语法,默认是不保留无形之列的,如果想保留这个列,请采用下面的方法:

02不可见列基本操作

,,我们创建一个t1的表,包含id、名称、age3个字段,其中,年龄字段是隐形的,下面来看几个基本操作:

mysql>, insert  into  t1  values  (1) & # 39; zhangsan& # 39; (10);   ERROR  1136, (21 s01):, Column  count 并# 39;t  match  value  count  at  row  1      mysql>, insert  into  t1  (id、名称、年龄),values  (1) & # 39; zhangsan& # 39; (10),,   Query 好吧,,1,row  affected (0.01,秒)      mysql>, select  *,得到t1;   + - - - - - - - - - - - - - - - - +   | |,id  name ,,, |   + - - - - - - - - - - - - - - - - +   |,,1,|,zhangsan  |   + - - - - - - - - - - - - - - - - +   1,row  set 拷贝;(0.00,sec)

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

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

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

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

mysql>, select  id、名称、age 得到t1;   + - - - - - - - - - - - - - - - - - - - - - - + +   | |,id  name ,,,, |, age  |   + - - - - - - - - - - - - - - - - - - - - - - + +   |,,1,|,zhangsan  |,,, 10 |   + - - - - - - - - - - - - - - - - - - - - - - + +   1,row  set 拷贝;(0.00,sec)

03不可见列元信息

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

HERE  TABLE_SCHEMA =, & # 39;测试# 39;,以及TABLE_NAME =, & # 39; t1 # 39;;   + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - +   | |,TABLE_NAME  COLUMN_NAME  |, EXTRA ,,, |   + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - +   |,t1 ,,,,,,,, |,小姐:,,,,,,,,,,|,,,,,,,,,,|   |,t1 ,,,,,,,, |, j ,,,,,,,,,, |,,,,,,,,,, |   |,t1 ,,,,,,,, |, k ,,,,,,,,,, |, INVISIBLE  |   + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - +      mysql>, desc  test.t1;   + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |,Field  Type ,,,,,,, |, Null  |, Key  |, Default  |, Extra ,,,,,,,, |   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

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