①SQL语句中与Having子句同时使用的语句是:group by
解析:
SQL语法中,having需要与group by联用,起到过滤group by后数据的作用。
②下列说法错误的是?C
解析:
在使用insert语句插入数据时,表达式的数据类型和表格中对应各列的数据类型必须一一对应。
③Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1003' , NULL , '2002-05-20' , '男');
('1004' , '张三' , '2000-09-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');
解析:
case when的正确语法是: case when ... then ... when ... then ... else ... end,case和end不能缺少!故直接排除B、C选项
而A选项:SQL语句中条件判断if的语法是:if(表达式成立,返回值,否则返回值),[ 修改name字段为NULL的记录 ]是应该把条件where语句写在最后。
④
SELECT product_name,sale_price FROM PRODUCT AS P WHERE EXISTS (SELECT * FROM SHOPPRODUCT AS SP WHERE SP.shop_id = ‘00C’ AND SP.product_id = P.product_id); 其中PRODUCT表示商品表,SHOPPRODUCT指商店在售商品表,其中shop_id字段表示商店id,product_id表示产品id。 以上这段sql主要是完成了哪个操作?A解析:
从商品表中查询,条件是两个表通过id进行关联,shop_id = ‘00C’,并且存在于在售商品表中,最后显示商品的名字和价格。即选出了‘00C’商店目前在售的商品和价格。与A选项最符合。
⑤Mysql中表student_table(id,name,birth,sex),分别查询男生、女生的最大、最小出生日期,如下SQL正确的是(D)?
解析:
BC选项最大的错误是确实group by sex
我在AD中纠结,仔细观察发现A选项分别求男生、女生的最大和最小年龄,男生先求的最小而女生先求的最大,再union all,结果就会以第一个子表的字段顺序为准显示出来,所以女生的max_birth会作为min_birth显示出来,结果与题意不符。故答案为D