MySQL 8.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 필드는 보이지 않는 속성을 설정했습니다.
물론, 우리는altertable의 문법을 사용하여 보이지 않는 열을 만들 수 있으며, t2표에 score의 보이지 않는 필드를 추가할 수 있다

mysql> alter table t2  add  score int invisible;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0
createtable like의 문법은 invisible 필드를 완벽하게 호환할 수 있습니까?답은 괜찮아요.

mysql> show create table t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int DEFAULT NULL /*!80023 INVISIBLE */,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 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: t3
Create Table: CREATE TABLE `t3` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int DEFAULT NULL /*!80023 INVISIBLE */,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
create table as의 문법은 기본적으로 invisible 열을 보존하지 않습니다. 이 열을 보존하려면 다음 방법을 사용하십시오.

02 보이지 않는 열 기본 작업


id,name,age 3개 필드를 포함하는 t1 테이블을 만듭니다. 그 중에서age 필드는 invisible입니다. 다음은 몇 가지 기본 동작을 보겠습니다.

mysql> insert into t1 values (1,'zhangsan',10);
ERROR 1136 (21S01): Column count doesn't match value count at row 1

mysql> 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에 기록을 하나 삽입했는데 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 보이지 않는 열원 정보


정보를 통해_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 test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 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: 0

mysql> select * from t4;
+----------+------+
| name     | age  |
+----------+------+
| zhangsan |   10 |
| lisi     |   15 |
+----------+------+
2 rows in set (0.00 sec)
이런 방법은 매우 큰 장점이 있다. 만약에 업무 설계의 시계에 메인 키가 없다고 가정하면 이런 시계 구조의 DBA는 틀림없이 허락하지 않을 것이다. 그러면 DBA는 업무 논리를 수정하지 않는 상황에서 메인 키를 보이지 않는 열로 설정하여 이 시계의 문제를 해결할 수 있다.
이상은 MySQL 8.0의 보이지 않는 열의 기본 조작에 대한 상세한 내용입니다. 더 많은 MySQL 8.0의 보이지 않는 열에 대한 자료는 저희 다른 관련 글을 참고하세요!

좋은 웹페이지 즐겨찾기