①有一张订单表orders,包含如下数据:

现要查找order_num不为NULL的所有数据,SQL语句是:SELECT * FROM orders WHERE order_num IS NOT NULL;

解析:

在MySQL中不能使用 = NULL 或  != NULL 等比较运算符在列中查找 NULL 值 。

要用IS NULL 或 IS NOT NULL才会进行NULL值或非NULL值得查找。

知识点:MySQL的NULL值处理方法

②一张学生成绩表score,部分内容如下:
name       course     grade
张三        操作系统      67
张三        数据结构      86
李四        软件工程      89
用一条SQL 语句查询出每门课都大于80 分的学生姓名,SQL语句为:

解析:

从部分表就可以看出一个学生有多门课,先找出成绩小于等于80的学生姓名,然后再在表里排除这些小于等于80的学生

select distinct name from score where name not in(select name from score where grade <= 80);

或者:

Select name from score group by name having min(grade) > 80;     最低一科的分数都要大于80=每门课都大于80

③下列关于SQL Server中使用存储过程的优点叙述不正确的是(D)

存储过程的优点:
A.执行速度快
存储过程只在创造时进行编译,已经通过语法检查和性能优化,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
B.允许组件式编程
经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。
存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。
C.减少网络流量
一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。
D.提高系统安全性
可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,避免非授权用户对数据的访问,保证数据的安全。

存储过程缺点:
A.移植性差。依赖于数据库厂商,难以移植(当一个小系统发展到大系统时,对数据库的要求也会发生改变);
B.难以调试、维护。业务逻辑大的时候,封装性不够,难调试难以维护;
C.服务器不能负载均衡。复杂的应用用存储过程来实现,就把业务处理的负担压在数据库服务器上了。没有办法通过中间层来灵活分担负载和压力.均衡负载等。

Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1004' , '张三' , '2000-08-06' , '男');
('1005' , NULL , '2001-12-01' , '女');
('1006' , '张三' , '2000-08-06' , '女');
('1007' , ‘王五’ , '2001-12-01' , '男');
('1008' , '李四' , NULL, '女');
('1009' , '李四' , NULL, '男');
('1010' , '李四' , '2001-12-01', '女');

执行

select t1.*,t2.*
from (
select * from student_table where sex = '男' ) t1 
left  join 
(select * from student_table where sex = '女')t2 
on t1.birth = t2.birth and t1.name = t2.name ; 
的结果行数是(3)?
题中语句的结果表为:

解析:

本题的关键是左右表中的birth、name都不为NULL时才会匹配上,无法匹配t2中一个字段为NULL或两个字段都为NULL的记录。

Mysql(版本8.0.25)中表student_table(id,name,birth,sex),插入如下记录:
('1004' , '张三' , '2000-08-06' , '男');
('1005' , NULL , '2001-12-01' , '女');
('1006' , '张三' , '2000-08-06' , '女');
('1007' , ‘王五’ , '2001-12-01' , '男');
('1008' , '李四' , NULL, '女');
('1009' , '李四' , NULL, '男');
('1010' , '李四' , '2001-12-01', '女');

执行

select count(t2.birth) as c1
from (
select * from student_table where sex = '男' ) t1 
full  join 
(select * from student_table where sex = '女') t2 
on t1.birth = t2.birth and t1.name = t2.name ; 
的结果行数是()?
会报错:Mysql(版本8.0.25)不支持full join,执行报错【1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'full  join 】

牛客网-SQL专项训练11的更多相关文章

  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. 牛客网多校训练第二场D Kth Minimum Clique

    链接:https://ac.nowcoder.com/acm/contest/882/D来源:牛客网 Given a vertex-weighted graph with N vertices, fi ...

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

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

  5. 牛客网sql练习

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

  6. 牛客网多校训练第四场C sequence

    (牛客场场有笛卡尔树,场场都不会用笛卡尔树...自闭,补题心得) 题目链接:https://ac.nowcoder.com/acm/contest/884/C 题意:给出两个序列a,b,求max{mi ...

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

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

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

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

  9. 牛客网2018暑期训练 第三场 a题

    #include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][m ...

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

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

随机推荐

  1. Python使用os模块创建带时间戳的文件

    直接上源码: import os import time # 定义函数名:在py文件路径下创建cache的txt文件 def txt(name, text): # os.getcwd() 获取当前的工 ...

  2. C语言中的强制转换

    许久没有遇到的问题   C语言真是博大精深,越使用它,就越发感觉到它的威力和恐怖,最近在做算法的时候,遇到了一个强转的错误,把人折腾的够受,这次要好好梳理一下了,希望下次不能再犯此类的问题. 强制转换 ...

  3. JavaXMail发送邮件功能实现

    原文:JavaXMail发送邮件功能实现 | Stars-One的杂货小窝 好久之前实现的邮件发送功能,一直没整理出来,考虑到之后有个项目需要,先整理一波 提示: 本文代码例子是使用Kotlin语言编 ...

  4. RTMP、X264与交叉编译

    RTMP.X264与交叉编译 ​ 与HTTP(超文本传输协议)同样是一个基于TCP的Real Time Messaging Protocol(实时消息传输协议).由Adobe Systems公司为Fl ...

  5. 面试官:Kafka和ES选主有什么区别?

    Kafka 和 ES 都是用来处理大数据的中间件,一个是消息中间件的代表(Kafka),另一个是大数据搜索引擎的代表(ES).它们在 Java 领域的使用非常广泛,在大数据方面就更不用说了,但它们的选 ...

  6. 记录--vue3的宏到底是什么东西?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有 ...

  7. 性能测试系列:Jmeter使用记录

    jmeter配置环境变量vi /etc/profileexport PATH=$PATH:/tmp/jmeter/apache-jmeter-5.4.1/binsource /etc/profile ...

  8. 【Java面试题】SpringMVC

    九.SpringMVC 63)SpringMVC 的流程 a.用户向服务器发送请求,请求被 SpringMVC 前端控制器 DispatchServlet 捕获: b.DispatcherServle ...

  9. Vue3 Diff 之 patchKeyedChildren 动态示例

    在学习全网学习各路大神的关于Vue3 Diff算法分析文章的时候,一定离不开关键方法 patchKeyedChildren. patchKeyedChildren 处理的场景比较多,大致有 5 个主要 ...

  10. #动态规划#CF889E Mod Mod Mod

    题目传送门 分析 这道题有一个很妙的地方就是将一段前缀整体一起做. 设 \(dp[i][j]\) 表示\(x\) 被前 \(i\) 个数取模后答案最大,并且 \(j\) 为取得此答案的最大值 最后再对 ...