首页 > 数据库 >面试常考的sql题

面试常考的sql题

时间:2022-11-14 11:32:38浏览次数:32  
标签:常考 --- 面试 Score sql idTable where id SELECT

问题:​​sql2000 自动增长id,怎样更新重用被删除过的id​​

方法:

---创建临时表
create table #(id int)

---插入10条记录
declare @id int
set @id = 1
while @id<= 10
begin
insert # values(@id)
set @id = @id + 1
end

---删除其中id为1和5的记录
delete # where id IN(1,5)

---重置id(从1开始递增1)
update t
set id = (select count(1) from # where id <= t.id)
from # t

 

 问题:用一条SQL语句 查询出每门课都大于80分的学生姓名

方法:

CREATE TABLE [dbo].[Score](
[student] [varchar](10) NOT NULL,
[class] [varchar](10) NOT NULL,
[score] [decimal](9, 2) NULL,
CONSTRAINT [PK_Score] PRIMARY KEY CLUSTERED
(
[student] ASC,
[class] ASC
)
)

select distinct Student from Score a where not exists(select 1 from Score where score<=80 and student=a.student)

 

问题:一张表(表名:OrderDistribution)中有个id标识列,int型,种子为1,以增量值1递增,但最大id不超过100,经常有增删改查操作。用一条SQL语句 查询出被删掉的id。

方法:

WITH idTable AS(
SELECT ROW_NUMBER()over(order by getdate()) AS id
from sys.all_columns
)
SELECT b.id FROM dbo.OrderDistribution a RIGHT JOIN idTable b ON a.id=b.id
WHERE b.id<=100 AND a.id IS NULL

------或者

WITH idTable AS(
SELECT TOP 100 ROW_NUMBER()over(order by getdate()) AS id
from sys.all_columns
)
SELECT b.id FROM dbo.OrderDistribution a RIGHT JOIN idTable b ON a.id=b.id
WHERE a.id IS NULL

 

数据库设计 之 表关系设计

表关系(关联):1-1 1-n m-n

1-n通过外键实现

1-1不常见, 适用场景?如分离扩展字段,临时属性,等

m-n 需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。如学生成绩表,一些mapping表


当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--​​buguge




标签:常考,---,面试,Score,sql,idTable,where,id,SELECT
From: https://blog.51cto.com/u_15708799/5848613

相关文章

  • 肖sir__面试第一天课程__项目流程(2)
    项目流程:一、面试官的问法:(1)你们公司的测试流程是什么?(2)给你一个需求你会怎么做?(3)你讲下你的工作?(4)谈谈你们是如何去测试?等回答:1)讲H模型  讲解简化文字流程:内容如......
  • Ubuntu下MySQL安装和配置
    1安装sudoaptinstallmysql-server2设置密码2.1打开mysqlsudomysql//使用root账户不需要密码就可进入mysql2.2设置密码//切换到mysql这个数据库mysql>use......
  • 第三章 关系数据库标准语言SQL
    3.1SQL概述(略)3.2学生-课程数据库3.3数据定义数据库>模式>表、视图和索引一个数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模......
  • 使用雪花id或uuid作为Mysql主键,被老板怼了一顿!
    前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采......
  • sql script 保障一处报错,整个script 不执行
    begintranbegintry script..........endtrybegincatchprintERROR_MESSAGE()ROLLBACKtranendcatchcommit......
  • 说说Vue响应式系统中的Watcher和Dep的关系-面试进阶
    引言在这里我先提出两个问题(文章末尾会进行解答):在Vue的数据响应系统中,Dep和Watcher各自分担什么任务?Vue的数据响应系统的核心是Object.defineproperty一定是最好的吗?有......
  • MySQL误删恢复方法1
    MySQL不同于oracle,没有闪回查询这类概念,但网上流传几个闪回的开源工具如binglog2sql、MyFlash,可以使用binglog日志进行误操作数据的恢复。笔者以前测试过binglog2sql,发......
  • MySQL误删恢复方法2
    实际工作中总会发生数据误删除的场景,在没有备份情况下,如何快速恢复误删数据就显得非常重要。本文基于MySQL的binlog日志机制,当日志格式设置为“binlog_format=ROW”时,记录......
  • SQL numeric数据类型
    作用:存储小数,但是和编程语言的float等不同,即使数据是3.00,存储时也会存储两位小数点后的数字。float类型当你给定的数据是整数的时候,那么它就以整数给你处理。0.00而实......
  • mysql中的found_rows() 与 row_count()函数
    1.found_rows()found_rows()用于查询同一连接下,上一条执行select查询返回的行数,包括show语句返回的行数。中间可以插入执行dml语句,返回依然是上一条select语句返回的行......