①检索所有比“王华”年龄大的学生姓名、年龄和性别。SQL语句:

解析:

第一步:先找到王华的年龄

SELECT AGE FROM S WHRE SN = "王华";

第二步:将第一步的结果作为条件进行筛选,比他年龄大的人的信息

SELECT SN,AGE,SEX

FROM S

WHRE AGE > (SELECT AGE FROM S WHRE SN = "王华");

知识点:单行子查询

②有一个User用户表,现要删除整张表(指完全删除表数据和表结构),下面正确的MySQL语句是:

A.DELETE TABLE User;                                         B.DROP TABLE User;

C.TRUNCATE TABLE User;                                    D.DELETE FROM User ;

解析:题目中要求是删除整张表(包括表数据和表结构)。B选项符合要求

知识点:本题主要考查DELETE、DROP、TRUNCATE三者的区别:

DELETE:

语法:DELETE FROM 表名 WHERE 筛选条件

TRUNCATE:

语法:TRUNCATE TABLE 表名; #不允许加条件,不加where

DROP:

DROP TABLE 表名称  #删除表数据和结构

DROP DATABASE     #用于删除数据库:

三者区别:

  1. 数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。

  2. 执行速度方面:drop > truncate > delete。

  3. 删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。

  4. 添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。

  5. 重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列

③比赛结果result表内容如下:
Date                     Win
2017-07-12               胜
2017-07-12               负
2017-07-15               胜
2017-07-15               负
如果要生成下列结果, sql语句是:
比赛日期            胜     负
2017-07-12          1      1
2017-07-15          1      1

解析:

要显示的是比赛日期、胜、负,将胜或者负统计成得分求和,并按日期进行分组

故SQL语句为:

SELECT DATE AS 比赛日期, SUM(CASE WHEN '胜' then 1 else 0 end)  AS 胜,SUM(CASE WHEN '负' then 1 else 0 end)  AS 负

FROM  result

GROUP BY DATE;

知识点:

1.别名:select 原名 as 别名 from 表名;

2.聚合函数:常用的聚合函数SUM(总和)、MAX(最大值)、MIN(最小值)、AVG(平均值)、COUNT(计数);

3.流程控制函数语法:

case

when 条件1 then 要显示的值1或语句1

when 条件2 then 要显示的值2或语句2

else 要显示的值n或语句n

end

4.GROUP BY :将表中的数据分成若干组,需要将SELECT后面的字段名(除了聚合函数)都包含上【select后面的字段,必须是group by后出现的字段】。

④在gameList表中(player_id, event_date)是主键,如何显示每个玩家(player_id)首次登录的设备号(device_id),并同时显示玩家ID(player_id)?

解析:

需要展示每个玩家(player_id)首次登录的设备号(device_id)并同时展示id,则需要通过子查询的方式获得最小的时间,然后按照id进行展示。

第一步:通过子查询的方式找到每个玩家首次登录的设备号,这里将每个玩家按照时间分等级

SELECT  * ,

RANK() OVER(

      PARTITION BY player_id

      ORDER BY event_date

    )  AS rank_date

FROM gamelist;

这时就会变成:

player_id device_id event_date games_played rank_date
111 21 2020-01-02 6 1
111 21 2020-03-01 5 2
212 33 2020-09-03 1 1
322 11 2020-01-21 0 1
322 44 2020-03-02 5 2

第二步:然后按照id进行展示

SELECT player_id, device_id

FROM(第一步 )t

WHERE t.rank_date=1

结果:

SELECT player_id, device_id

FROM(SELECT * ,rank() over (partition by player_id order by event_date ) as rank_date from gamelist )t

WHERE t.rank_date=1

player_id device_id
111 21
212 33
322 11

知识点:

Rank()函数:为结果集分区中每一行分配一个排名,行等级由一加上前面的等级指定【相同的数字排序一样,下一个不一样的数字则跳跃:1,2,2,4...】。
RANK() OVER(
        PARTITION BY 表达式      ##将结果集划分为分区
        ORDER BY 表达式 [ASC|DESC] ##对分区内的进行排序
⑤某打车公司要将驾驶里程(drivedistanced)超过5000里的司机信息转存到一张称为seniordrivers 的表中,他们的详细情况被记录在表drivers 中,SQL语句为:
解析:从drivers表中将信息转存到seniordrivers 的表,只转存满足条件:drivedistanced >= 5000
SQL语句:
SELECT * INTO seniordrivers  FROM drivers WHERE drivedistanced >= 5000;
知识点:
(1)INSERT INTO 语句用于向一张表中插入新的行;
(2)SELECT INTO 语句从一张表中选取数据插入到另一张表中。常用于创建表的备份复件或者用于对记录进行存档。

牛客网-SQL专项练习1的更多相关文章

  1. MySql面试题、知识汇总、牛客网SQL专题练习

    点击名字直接跳转到链接: Linux运维必会的100道MySql面试题之(一) Linux运维必会的100道MySql面试题之(二) Linux运维必会的100道MySql面试题之(三) Linux运 ...

  2. 牛客网Sql

    牛客网Sql: 1.查询最晚入职的员工信息  select * from employees where hire_date =(select max(hire_date) from employee ...

  3. 牛客网sql刷题解析-完结

    查找最晚入职员工的所有信息 解题步骤: 题目:查询最晚入职员工的所有信息        目标:查询员工的所有信息 筛选条件:最晚入职           答案: SELECT *--查询所有信息就用* ...

  4. Java基础之引用(String,char[],Integer)总结于牛客网的专项练习题

    1.String的引用: 下列代码执行后的结果为: public class Test { public static void main(String[] args) { StringBuffer ...

  5. 牛客网sql练习

    一建表语句 /* Navicat MySQL Data Transfer Source Server : test Source Server Version : 50717 Source Host ...

  6. 牛客网sql实战参考答案(mysql版):16-21

    16.统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资.结果给出ti ...

  7. 牛客网sql实战参考答案(mysql版):1-15

    1.查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment) CREATE TABLE `employees ...

  8. 牛客网数据库SQL实战解析(51-61题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  9. 牛客网数据库SQL实战解析(41-50题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  10. 牛客网数据库SQL实战解析(31-40题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

随机推荐

  1. bat 执行 窗口jar包

    bat 执行 窗口jar包 @echo off start javaw -jar .\yourname.jar exit

  2. pcm5102芯片解析之基本概念

    一 前记 1 在音频领域深耕,那就要不断的前行.最近有几个项目需要用到pcm5102这颗料,藉此机会,针对这个料进行深入的研究一下.做一一些简要的分析. 二 概念 音频芯片的指标,其实,很多年都没啥变 ...

  3. [原创] KCP 源码分析(上)

    KCP 协议是一种可靠的传输协议,对比 TCP 取消了累计确认(延迟 ACK).减小 RTO增长速度.选择性重传而非全部重传.通过用流量换取低时延. KCP 中最重要的两个数据结构IKCPCB和IKC ...

  4. socket编程流程

    字节序转换(hton) #include <netinet/in.h> unsigned long int htonl(unsigned long int hostlong); unsig ...

  5. 记一个很好用的轻量级翻译软件 copytranslator

    软件下载主页: https://gitee.com/ylzheng/CopyTranslator/wikis/windows 可以设置始终置顶,监听剪切板,翻译起来非常方便

  6. 为什么数字化未来取决于3D实时渲染

    什么是实时3D? 如果你曾经看过2D图纸并将3D产品可视化,你就会知道这是多么具有挑战性.实时3D允许观众观看3D图像或场景并与之交互,例如在视频游戏中,这些图像或场景看起来是实时移动的. 实时3D成 ...

  7. Android Graphics 多屏同显/异显

    " 亏功一篑,未成丘山.凿井九阶,不次水泽.行百里者半九十,小狐汔济濡其尾.故曰时乎,时不再来.终终始始,是谓君子." 01 前言 随着Android智能驾舱系统的普及各种信息交互 ...

  8. KingbaseES 咨询锁

    传统的事务性锁,读/写会自动加锁,读/写完成后会自动解锁(加解锁机制在细节上复杂),这是一种隐式的锁机制.对于加锁后的并发控制,也就是默认的写不阻塞读,是通过MVCC机制解决的.这种锁完全不需要人为干 ...

  9. 终于来了!FastGPT 正式兼容 GPT 应用

    终于来了!FastGPT 正式兼容 GPT 应用 FastGPT V4.7 正式加入了工具调用功能,可以兼容 GPTs 的 Actions.这意味着,你可以直接导入兼容 GPTs 的 Agent 工具 ...

  10. linux系统执行 ifconfig命令ens33没有显示ip地址解决办法

    问题背景 安装虚拟机(以ubuntu为例)因为重启或更新等原因导致,无法通过ssh连接到虚拟机,本地cmd窗口ping虚拟机ip发现无法ping通 启动本地虚拟机 发现ens33 位置没有显示 ip地 ...