sql语句真题

1,20年
首先第一问,注意check后面最好用between连接,也可以用and连接.

对于第二问,注意select 后面的属性,如果重名需要加上表的名字

对于第三问,group by 按orders表中的商品编号来分组,而不是商品表中的.
并且在下午题中一般用到的是count(星号)来记录元组个数.

对于第四题,首先想到的是用 not in 来做,但是问题是,最后没有括号,也就没做子查询.这里是用except来做的.

2,21年
第一问注意,check这里用or进行分隔,而不能用逗号

第三问注意,删除为:delete
并且应该先删除pc表中的,再删除contest表中的,因为pc参照contest表,后删pc表会报错.

3,19年
首先第一问,注意这里创建表时,对于外码可以用:
on delete cascade 或者on delete set null

第二问,这里注意对count()函数需要进行重命名.并且这里也用到了union函数,intersect,except

第三问,为触发器.首先,可以改变视图名称.referencing 定义出nrow和orow,这里在插入操作中用到nrow,删除操作中用到orow,在更新操作中可能两者都会用到.
并且还可以定义为for each row 或者 for each statement

下面的更新语句,注意如果引用student表(触发器建立在student表上),我们应该用orow,或nrow.不再引用student表了

对于第四问,应该是,对schno进行排序,而不是分组.

4,18年题
首先,第一问,在于需要用default getdate()来默认为系统时间.

第二问,用到回滚操作.rollback,并且触发器里一般是要
将nrow和修改表进行连接.

第三问,注意创建视图,视图名后面需要跟(属性),这里的属性与select语句的属性保持一致.
select 语句用聚合函数,sum来求和.并且从这道题可以看到,在select后面修改了名称,后面用的时候,不可用total(新名称)

第四问,这个exists是看后面查出来的东西是否为true,如果是真就输出主查询的这一行,这里主查询中实现了对车型号的查询,在子查询中就需要实现,对于查出不良次数大于等于2的人.
这里如果我们只查询人,就不能保证是在同一次租赁中产生的,所以需要借贷号也相同.

5,17年题
这道题最明显的特征就是:前面使用了聚合函数,那么分组时候,就把聚合函数前面所有的属性都加上.
第二问,from后面只有一个表,所以可以不写表名.

注意having后面的count(星号)不能丢掉.

这里涉及取反操作,那么就可以用,not in 或者except 或者是 not exists.

6,16年题

对于这道题,首先第一问中的约束条件,check需要约束一个范围,所以还是要用到between.
然后设置的时候需要用到,amount=amount+更新值.

注意select语句是先执行where后执行group by 所以,前面将两个表连接在一起,后面就不存在按谁分组的冲突.因为where以及让两个属性列相同的.group by 一般是select后面除去聚合函数的部分.

回顾历年真题,取反问题中,也不会出现group by 的情况.

第二次做,
21年题,注意先删除引用的再删除主表中的

20年题,注意可以用select后面重命名的名称.oamount desc

19年题,注意视图名后的列表与select语句后的属性,需要完全相等,所以需要重命名.

18年题,注意默认的写法不是用check,直接DEFAULT getdate()就好了.
并且,这里涉及四个表连接,需要用到每个表.所以是users.uid.

SQL中几个关键字 的执行顺序为:
(1)FROM
(2)WHERE
(3)GROUP BY
(4)having
(5)聚合函数
(6)Select
(7) ORDER BY
Having在select前面,having后面不可以用在select里面的重命名

16年题,注意check后面也不一定是属性名,也可能是一个函数.

对于17年题,可能在触发器触发的时候,sales表已经进行了插入.所以可以再引用sales表.

对于14年题,注意计算价格还需要使用时间,和group by having之间不需要分号或逗号.

对于13年题,注意时间的表示方法就是(2012/1/1)不能写年月日形式,并且注意对于连接的两个表有相同的属性列,需要带有表名.

12年题,注意constraint的用法,用来定义约束性条件.
另外,工资>AVG(工资)的写法是不正确的.因为where执行在聚集函数之前,select执行在聚集函数之后,所以可以在select中执行聚集,但不可以在where中执行聚集.
还有when then else 的用法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值