作者回复: 对的 这个解释也正确
作者回复: 相同点:可变长度,字符类型数据
不同点:varchar(n)是n个字节,非Unicode字符。(英文字母占1个字节,中文占2个字节)
而nvarchar(n)是n个字符,Unicode字符。(英文字母或者中文都是占用2个字节)
举个例子,varchar(10)代表10个字节,所以可以是10个英文字母,也可以是5个汉字。
而nvarchar(10)代表10个字符,这10个字符可以是10个字母,也可以是10个汉字(英文字母或者中文 都是占用2个字节)
作者回复: COMMIT这里会进行强制提交,也就是程序员来控制当存在错误的时候,是否进行强制提交。所以第一个张飞会提交成功,数据表的结果是:关羽、张飞。你也可以看下看下第一个留言的同学的解答
作者回复: 如果出现异常,这时强制提交的话, 会将操作成功的进行提交
作者回复: OLAP更偏数据分析,业务端,比如 Apache Kylin
作者回复: 对事务ACID的理解是这样的,不过在程序中是需要自己来控制的,如果遇到了错误,还继续执行COMMIT的话,也会让事务中正确的部分进行提交。所以你可以跑一遍代码,运行结果应该是 关羽,张飞。
作者回复: 原子是这个特点,不过在代码操作的时候,如果在一个事务中遇到的错误,还是可以强制进行COMMIT的,这时会把这个事务中成功执行的部分进行提交。你可以运行下 文章中给到的代码
作者回复: 感谢
作者回复: 慢慢来
作者回复: 对 但是多张表连接顺序不同,导致的计算量也是不同的,所以即使都会有笛卡尔积,也还是存在个优化问题
作者回复: SELECT DISTINCT player_id, player_name, count(*) as num #顺序5
FROM player JOIN team ON player.team_id = team.team_id #顺序1
WHERE height > 1.80 #顺序2
GROUP BY player.team_id #顺序3
HAVING num > 2 #顺序4
ORDER BY num DESC #顺序6
LIMIT 2 #顺序7
作者回复: 哈哈 这时专栏里的一个同学举的例子,我觉得不错,挺好的说明了通配符的使用
作者回复: 对的 答案正确,是关羽,张飞