牛客网-SQL专项训练24
①下列选项关于游标的作用叙述正确的是(D)
解析:
游标是一种从包括多条数据记录的结果集中每次提取一条记录以便处理的机制,可以看做是查询结果的记录指针。游标与视图类似,也是基于基表的临时表对象,也能够通过对游标中数据的修改反映到基表中。而游标不能对数据进行修改的情况是在定义游标时添加了insensitive关键字,使游标模式变为只读。
A:游标允许定位在结果集的特定行;
B:从结果集的当前位置检索一行或一部分行;
C:支持对结果集中当前位置的行进行数据修改。
②语句GRANT、REVOKE实现了结构化查询语言的哪类功能(C)
解析:
数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. 数据查询语言DQL:数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
2 .数据操纵语言DML:主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE
3. 数据定义语言DDL:
数据库定义语言(DDL,Data Definition Language)是负责数据的模式定义与数据的物理存取构建,主要包括CREATE建表语句,ALTER 更新表结构语句,DROP 删除语句,DECLARE 创建游标。DDL操作是隐性提交的!不能rollback
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权,REVOKE取消授权
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK,回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
3) COMMIT [WORK]:提交,提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT;
(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON;
5.事务控制语言,(TCL,Transaction Control Language)包括SAVEPOINT 设置保存点,它是事务处理中设置临时的占位符,可以对它发布回退;ROLLBACK 回滚,撤销指定的SQL语句;COMMIT提交,将未储存的SQL写入数据库表。
③下列关于数据库系统三级模式结构的表述正确的是(B)
解析:
A选项:外模式是面向数据库用户或应用程序的局部数据视图;
C选项:模式并不涉及数据的物理存储细节;
D选项:模式/内模式映像保证了数据库具有较高的物理独立性。
④有一张emloyees表:
请根据name排名(按升序排序),找到排名为奇数对应的name值,结果如下(输出结果不用排序):
下面MySQL语句正确的是:
解析:
首先对name 进行排序(按升序),然后找到排名为奇数的name行
A选项:
知识点:窗口函数的排序操作、位运算、两表连接JOIN函数
SQL中有三种排序函数
1、row_number() over(order by 列名)
2、rank() over(order by 列名)
3、dense_rank() over(order by 列名)
row_number():不考虑数据的重复性,按照顺序一次打上标号
如:1 2 3 4
rank():是并列顺序,会跳过重复的序号
如:1 2 2 4,会跳过3,不是连续的排名
dense_rank():是连续排序,考虑数据的重复性,不会跳过重复的序号
如:1 2 2 3 序号连续
over(partition by shirt _type order by shirt_price) 按照shirt_price升序排序,order by是个默认的开窗函数,按照shirt _type分区。
按位与判断奇偶数:
temp & 1:
- 当 temp 为奇数时,temp的二进制末位就为1, temp & 1 返回 1;
- 当 temp 为偶数时,temp的二进制末位就为 0 ,temp & 1 返回 0 。
- mod(tar,2) = 1 //代表此时 tar为奇数
- mod(tar,1) = 0 //tar 为偶数
⑤Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1002' , null , '2000-12-21' , '男');
('1003' , NULL , '2000-05-20' , '男');
('1004' , '张三' , '2000-08-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');
解析:
题目是要找除张三以外的其他数据
A选项:<>无法对null做筛选,所以只有1001和1005这两条数据;
C选项:length无法对null做筛选,且使用的是 or,故有三条数据1001,1004,1005
D选项:length无法对null做筛选,使用的是and,故只有两条数据1001,1005
⑥SELECT COALESCE(NULL,fat,2)AS name1,COALESCE(pig,test,test)AS name2 FROM NAMETABLE;以上SQL执行后name1和name2分别为:fat,pig。
解析:
主要考察COALESCE函数,通常我们取COALESCE中第一个非NULL的值。
COALESCE ( expression,value1,value2……)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了