数据库知识

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关键字实施)

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

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

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


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

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

数据库知识_第1张图片

你可能感兴趣的:(数据库)