《牛客刷题》sql错题集

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 《牛客刷题》sql错题集

1.

查询语句select stuff('lo ina',3, 1, 've ch')结果为?

答案:love china

解析:

STUFF(原字符, 开始位置, 删除长度, 插入字符)

从指定的起点处开始删除指定长度的字符,并在此处插入另一组字符

 

2.

写一段SQL,已知衬衫表SHIRTABLE,请你实现通过窗口函数实现,根据不同的衬衫种类shirt_type,按照销售单价shirt_price从低到高的顺序创建排序表()

答案:

1. SELECT shirt_name, shirt_type, shirt_price,
2. 
3. RANK() OVER (PARTITION BY shirt _type ORDER BY shirt_price) AS ranking
4. 
5. FROM SHIRTABLE

解析:

RANK()函数是一个Window函数,它为结果集的分区中的每一行分配一个排名。

分区中具有相同值的行将获得相同的排名。 分区中第一行的等级是1RANK()函数将绑定行的数量添加到绑定等级以计算下一行的等级,因此,等级可能不是连续的。

RANK()函数的语法如下所示:

1. RANK() OVER (
2.     [PARTITION BY partition_expression, ... ]
3. ORDER BY sort_expression [ASC | DESC], ...
4. )

在这个语法中:

  • 首先,PARTITION BY子句划分应用该函数的结果集分区的行。
  • 其次,ORDER BY子句指定应用该函数每个分区中行的逻辑排序顺序。

RANK()函数对于求解前N个和后N个报表很有用。

 

3.

快件信息表waybillinfo(id, waybillno, zonecode, optype, update_time)中存储了快件的所有操作信息,请找出在'中山公园'网点,异常派送(optype='异常派件')次数超过3次的快件(waybillno),正确的sql为()

答案:

1. select waybillno from waybillinfo where zonecode='中山公园' and optype='异常派件'
2. group by waybillno having count(*) > 3

解析:

1.having只用来在group by之后,对group by的结果进行筛选,不能单独用

2.分组结果统计需要用group by,每个快件整体作为一组

 

4.

Mysql中表student_table(id,name,birth,sex),插入如下记录:

('1003' , NULL , '2002-05-20' , '男');

('1004' , '张三' , '2000-09-06' , '男');

('1005' , '李四' , '2001-12-01' , '女');

('1006' , NULL , '2001-12-02' , '女');

修改name字段为NULL的记录,是男生时设置name='男生姓名',是女生时设置name='女生姓名',如下SQL正确的是()?

答案

update student_table set name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名' end) where name is null ;

解析:

【修改name字段为NULL的记录】需要把where条件写在最后;

case when的正确语法是: case when ... then ... when ... then ... else ... end,case和end不能缺少

 

5.

Mysql中表student_table(id,name,birth,sex),插入如下记录:

('1004' , '张三' ,'2000-08-06' , '男');

('1009' , '李四', '2000-01-01', '男');

('1010' , '李四', '2001-01-01', '男');

('1006' , '王五', '2000-08-06' , '女');

('1008' , '张三', '2002-12-01', '女');

('1012' , '张三', '2001-12-01', '女');

('1011' , '李四', '2002-08-06' , '女');

执行

select t1.*,t2.*

from (

select * from student_table where sex = '男' ) t1

join

(select * from student_table where sex = '女')t2

on  t1.name = t2.name ;

的结果行数是()?

答案:4条

解析:

题目中的join与inner join同义,相同的key匹配上时会产生笛卡尔积!查询结果如下:

 

6.下列关于视图说法错误的是?

答案:删除视图用DELETE VIEW

解析:

由题意得,视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据符合题意,BC也符合视图的语法,而删除视图应该使用DROP VIEW进行,故选D

 

7.

如果事务T对数据D已加S锁,则其他事务对数据D( )

答案:可以加S锁,不能加X锁

解析:

共享锁【S锁】

又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

排他锁【X锁】

又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。

 

8.在关系数据库设计中,设计关系模式(二维表)是数据库设计中的哪个阶段?( )

答案:逻辑设计阶段

解析:

 

9.

查询显示雇员的姓名和姓名中是否含有字母A的信息,满足如下条件

如果字符A在姓名的首位,则显示'字符A在首位'

如果字符A在姓名的末位,则显示'字符A在末位'

如果字符A在姓名中不存在,则显示'没有字符A'

其他情况显示'字符A在中间'

下列操作语句正确的是:(      )

答案:

1. select ename, case  charindex(‘A‘,ename)
2. when 1 then ‘字符A在首位‘
3. when len(ename) then
4. ‘字符A在末位‘
5. when 0 then ‘没有字符A‘
6. else ‘字符A在中间‘
7. end 名称类别   from emp;

解析:

通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置i(有效位置范围为1<= i <= length(input)),否则返回0。

注意位置是从1开始

基本语法如下:


CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )


expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000 。

expressionToSearch :用于被查找的字符串。

start_location:开始查找的位置,为空时默认从第一位开始查找。

 

10

数据库设计里,视图(View)可以使得我们为一个或多个数据表定义一个特殊的表现形式,视图在行为上与数据表没啥特别区别,可以使用基本的select,insert,update等命令修改数据,但对于update操作,也有一些限制,下面那些是受限的原因()

答案:

初始View定义的Select语句里如果包含了GROUP BY,DISTINCT,LIMIT或HAVING等命令时

如果视图里数据来自多张字表时

解析:

视图包含下列结构是不可以更新的

1:集合运算符 union,union all, intersect,minus

2:distinct关键字

3:group by,order by,connect by,或者start with

4:子查询

5:分组函数

6:需要更新的列不是视图定义的

7:具有连接查询(可以更新键值保存表的数据)

8:违反基表的约束条件;连接视图是指基于多表连接查询创建的视图(一般不容易修改,但通用instead of触发器可以实现修改的功能)

 

11

 

关于ACID下面说法正确的是?

可用性。整个操作中的所有动作是保证高可用性,系统必须提供要求的稳定性,以保证事务的提交。

一致性。在事务开始之前和结束后,数据库的约束保持不变。

隔离性。两个同时运行的事务的执行是互不影响,中间结果不可交叉访问。

持久性。在事务提交以后,该事务所作的更改持久保存在存储介质之中,不会被回滚。

答案:BD

解析:

1.Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成 功,要么全部失败。

2.Consistency(一致性):事务完成时,数据必须处于一致状态,数据的完整性约束没有被破坏,事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没    有执行过一样。

3. Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性 和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

4.Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。

目录
相关文章
|
6月前
|
SQL 存储 关系型数据库
《牛客笔试选择题》sql错题集
《牛客笔试选择题》sql错题集
80 0
|
5月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
110 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
60 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
371 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
467 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
304 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。