首页 > 试题广场 >

按顺序执行完上面这六条SQL语句之后,运行select c

[单选题]

阅读下面的一系列SQL语句:

create table table1(column1 int)

insert into table1 values(91)

create view view1 as select * from table1 where column1<=100 with check option

insert into view1 values(95)

insert into view1 values(110)

insert into table1 values(101)

按顺序执行完上面这六条SQL语句之后,运行select  count(*) from table1的值是( )?

  • 1
  • 2
  • 3
  • 4
with check option表明通过视图进行DML(insert,Update,delete)时,只有满足where语句条件,才会正确执行,这道题。我用MySQL亲测,答案是3
发表于 2017-05-10 10:43:49 回复(0)
答案有错,应该是3 通过表直接插入数据是不受check option控制的,所以,91和101插入成功。 通过视图修改表数据时,只有满足where条件的才会插入成功,所以95插入成功,110 插入失败。
发表于 2018-07-03 23:33:13 回复(1)
table1有91这个元组,
然后对视图进行插入就是对基表进行相应的插入,所以95也成为table1的一个元组,
再加上最后一行对table1的插入,101成为第三个元组,
不应该是3吗???
请大神指教!!!!!!!!!!!
发表于 2017-05-16 12:09:32 回复(5)
发表于 2019-05-06 14:22:50 回复(0)
发表于 2018-11-11 17:32:00 回复(0)
上次做了一个与这个一样的题,它给的答案是3,以前我选择的也是2,这次毫不犹豫选择了3,没想到居然又是2。。答案啊。。
发表于 2017-10-12 11:28:42 回复(0)
with check option表明通过视图进行DML(insert,Update,delete)时,只有满足where语句条件,才会正确执行;
所以执行 
    insert into view1 values(110);
    insert into table1 values(101);
是插入失败的  数据库提示
mysql> insert into view1 values(110);
ERROR 1369 (HY000): CHECK OPTION failed 'test_db.view1'
mysql> insert into view1 values(101);
ERROR 1369 (HY000): CHECK OPTION failed 'test_db.view1'
mysql> select  count(*) from table1;

也就是 最后两个insert并没有成功执行,所以结果是2
mysql> select  count(*) from table1;
+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec)

发表于 2017-05-10 20:58:52 回复(4)
答案为2,想说下亲测的怎么亲测为3的,纳闷-----
发表于 2017-09-23 15:39:08 回复(0)
懵**,再看一下,有道友说的对,最后一条是表不是视图,不影响,尴尬咯
发表于 2019-02-20 16:41:50 回复(0)
最后一个是向表中插入数据,不受视图检索约束的影响。
发表于 2018-11-08 17:25:31 回复(0)

110不满足条件

发表于 2018-09-19 10:42:58 回复(0)
MYSQL验证截图
编辑于 2018-08-26 11:20:47 回复(1)