
从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,返回右表中的所有记录,以及左表中符合连接条件的记录。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)