介绍
小编给大家分享一下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 nullMySQL8.0之不可见列的示例分析