• 数据库知识


    1、count(1),count(*),count(列名)的区别和联系?

            当表的数据量很大时候,count(1)比count(*) 更加消耗时间,如果count(1)是聚索引那么count(*)会更快一些,因为count(*)会自动优化指定哪一字段。 综上所述,count(1)和count(*)基本没有区别!

            count(1)会统计表中的所有记录数,包含NULL,count会统计该字段在表中的出现次数,忽略了NULL的情况。

            三者区别:count(*)包含了所有的列,相当于所有的行,统计结果不忽略NULL

                              count(1)包含了忽略所有的列,用1表示代码行,统计结果不忽略NULL

                              count会统计该字段出现的次数,统计结果忽略NULL

    执行效率上面:如果目标列名是主键count > count(1) = count(*)

                             如果目标列名非主键count(1) = count(*) > count

                             如果表多列都没主键count(1) > count(*) > count(列名)

    最佳查找方法是:SELECT COUNT(主键列)

    2、DROP、TRUNCATE、DELETE的区别?

    DROP用来删除数据库和表格

    TEUNCATE用来删除表格里的数据,但是不能回滚

    DELEDE用来删除表格里的数据,可以回滚

    3、内连接和外连接的区别?

    内连接包括等值连接和自然连接,内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行;外连接有左外连接和右外连接,可以由以下关键字指定:LEFT JOIN,RIGHT JOIN,INNER JOIN

    4、SQL编码题:
    4.1 查询学号1003-1010的学生信息(通过BETWEEN关键字实施)

    1. SELECT *
    2. FROM student
    3. WHERE student.StudentNo BETWEEN 1002 AND 1010;

    4.2 查询邮箱为空的学员信息.(通过<=>关键字实施)

    SELECT * FROM student WHERE student.Email <=> NULL;


    4.3 根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列,取前三名

    1. SELECT result.StudentNo ,AVG(result.StudentResult)
    2. FROM result
    3. GROUP BY (result.StudentNo)
    4. HAVING AVG(reesult.StudentResult) >= 80
    5. ORDER BY (AVG(result.StudentResult)) DESC
    6. LIMIT 0, 3;

  • 相关阅读:
    Java8 Stream 从入门到精通 一
    HCNP Routing&Switching之MAC地址防漂移
    使用IDEA创建springboot
    C++:C++编程语言学习之数据类型&常量&变量的简介、案例应用之详细攻略
    线程和进程、浏览器中的JavaScript线程、JavaScript的宏任务和微任务
    OpenAI未至,Open-Sora再度升级!已支持生成16秒720p视频
    springboot2.0+springcloud 版本冲突解决方案
    GoLang之ACM控制台输入输出
    善于使用二阶思维
    .Net 中间件 - 新开源代码生成器 -ReZero
  • 原文地址:https://blog.csdn.net/m0_70349048/article/details/132921330