MySQL之虚拟列

MySQL之虚拟列,第1张

从MySQL 5.7开始,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column

CREATE TABLE t1 (c1 INT)

ALTER TABLE t1 ADD COLUMN c2 INT GENERATED ALWAYS AS (c1 + 1) STORED

CREATE TABLE t1 (c1 INT, c2 INT GENERATED ALWAYS AS (c1 + 1) STORED)

1、主键索引不能包含virtual generated column 如:

mysql>create table t(a int, b int , c int as (a / b), primary key(c))

ERROR 3106 (HY000): 'Defining a virtual generated column as primary key' is not supported for generated columns.

2、Virtual Generated Column不能作为外键

3、不能使用非确定函数,如:

mysql>alter table a ADD p3 DATE GENERATED ALWAYS AS (curtime()) virtual

ERROR 3763 (HY000): Expression of generated column 'p3' contains a disallowed function: curtime.

4、无法删除源列,如:

mysql>alter table t100w drop k1

ERROR 3108 (HY000): Column 'k1' has a generated column dependency.

5、非法数据,如:

mysql>create table t( x int, y int, z int as( x / 0))

Query OK, 0 rows affected (0.22 sec)

mysql>insert into t(x,y) values(1,1)

ERROR 1365 (22012): Division by 0

测试sql:

SELECT test_vv FROM t100w limit 10000#虚拟列无索引

虚拟列函数:

(concat( k1 ,_utf8mb4'-', k2 ))

1、打开navicat工具,连接上mysql服务器,选择完数据库之后,选择一个表右击选择设计表(这里为了演示测试,随便选择一个表即可)。

2、在设计表页面,可以看到当前表的所有字段信息,我们选择的学生表有一个id字段,目前该表没有主键字段。

3、如图,在最后一列右击选择主键,即可将该字段设置为主键,也可以直接点击鼠标左键,可以快速添加和取消主键。

4、设置完主键之后,可以看到一把锁的标志,并且有一个1字,因为一个表可以给多个字段添加主键,则为联合主键,这样就显示为主键1,主键2等。

5、主键设置完成之后,还没有自增,选择id字段之后,在下方,如图,勾选自动递增,这样id在每次插入记录之后都会自增一个值。

6、设置完成主键和自增之后,点击保存,关闭当前窗口,然后选择表名右击选择对象信息。

7、在DLL页面中,可以看到刚刚添加的主键和自增的DLL语句,这里就是创建表的DLL语句。

8、上面有提到联合主键,其实一个表可以给多个字段设置主键,这样可以组成联合主键,对于特定的业务,联合主键也是必须的。

设置主键的思路:业务字段做主键、自增字典做主键、手动赋值字段做主键。

多表查询:分散在多个不同的表里的数据查询出来的 *** 作。

外键:从表中用来引用主表中数据的那个公共字段。

连接有2种类型的连接:内连接(inner join)和外连接(outer join)

内连接:查询结果只返回符合连接条件的记录。

外连接:查询结果返回某一个表中的所有记录,以及另一个表中满足连接条件的记录。

其中左连接:left join,返回左表中的所有记录,以及右表中符合连接条件的记录。

右连接:right join,返回右表中的所有记录,以及左表中符合连接条件的记录。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8549280.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存