SQL刷题记录
文章平均质量分 87
行秋即离
若你困于无风之地
展开
-
SQL刷题
答案解析SQL的学法顺序:select–from–where–group by–having–order by执行顺序:from–where–group by–having–select–order by,但是如果有其他的关键字的时候,运行的结果是下面这个结果from–join–on–where–group by–avg,sum–having–select–distinct–order by答案解析1)drop是完全删除表,包括结构2)delete是删除表数据,保留表的结构,而且可以加whe.原创 2021-03-04 22:26:09 · 774 阅读 · 1 评论 -
python怎么和SQL连接上
一、安装方法:因为我用的是anaconda集成环境,打开anaconda prompt:二、使用操作#!/usr/bin/env pytho# -*- coding:utf-8 -*-import pymysql # 创建连接conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1', charset='utf8')# 创建游标cursor = conn.cursor()转载 2020-12-02 13:57:10 · 2660 阅读 · 0 评论 -
SQL和SQL server的区别
sql server和mysql的区别主要体现在下面这些方面:一、本质区别是它们所遵循的基本原则SQL服务器的狭隘的、保守的存储引擎,与MySQL服务器的开放的、可扩展的存储引擎是不同的。你虽然可以使用SQL的Sybase引擎,但MySQL可以提供更多的选择,如MyISAM,Heap, InnoDB等。MySQL并不完全支持陌生的关键词,所以它就比SQL服务器少一些相关的数据库。同时,MySQL也缺乏某些存储程序的功能,如MyISAM引擎联支持交换的功能。二、发行费用上:MySQL不全是免费,但很便宜转载 2020-12-02 11:50:24 · 1560 阅读 · 0 评论 -
SQL刷题:超过5名学生的课
如题解答方法一:使用GROUP BY子句和子查询思路:先通过计算统计每门课程的学生数量,再从中选择超过5名学生的课程先使用GROUP BY和COUNT获得没每门课程的学生数量:SELECT class, COUNT(DISTINCT student)FROM courses GROUP BY class;这里使用DISTINCET语句是为了防止在同一门课程中的学生被重复计算得到下面的结果使用上面查询结果的临时表进行子查询,筛选数量超过5门课程SELECT class FROM(S原创 2020-12-02 11:36:30 · 1622 阅读 · 0 评论 -
SQL刷题:查询返回符合条件的结果
如题解答方法一:使用WHERE子句和OR逻辑判断根据定义,满足下面的其中一个条件:条件1:面积超过300万条件2:人口超过2500万先使用下面语句获得满足条件1的大国家:SELECT name, population, area FROM world WHERE area >3000000;然后使用下面的语句获得满足条件2的国家SELECT name, population, area FROM world WHERE population > 25000000;使用O原创 2020-12-02 11:03:01 · 1512 阅读 · 0 评论 -
SQl刷题:查找比之前高的温度
如题解答方法一:使用JOIN和DATEDIFF()子句使用DATEDIFF来比较两个日期类型的值,因此我们可以通过将weather与自身结合,然后使用DATEDIFF()比较SELECT weather.id AS 'id' FROM weather JOIN weather w ON DATEDIFF(weather.date, w.date) = 1 AND weather.Temperature > w.Temperature总结(1)JOIN链接SQL JOIN 子句用于把原创 2020-12-02 10:51:11 · 273 阅读 · 0 评论 -
SQL刷题:从不充钱的游戏玩家
如题原创 2020-12-02 10:22:58 · 161 阅读 · 0 评论 -
SQL刷题:查找重复的电子邮箱
如题方法一:使用GROUP BY和临时表算法重复的电子邮箱存在多次,要计算每一封电子邮件存在的次数,我们可以使用下面的代码:SELECT Email, COUNT(Email) AS NUM FROM Person GROUP BY Email;将上面的结果作为临时表存在,全部代码如下:SELECT Email FROM(SELECT Email, COUNT(Email) AS NUM FROM PersonGROUP BY Email) AS statistic WHERE NUM &g原创 2020-12-01 22:47:33 · 1857 阅读 · 0 评论 -
SQL刷题:超过经理收入的员工
如题解析第一种方法:使用WHERE语句过滤这张表格里面含有每个雇员经理的信息,我们也需要从这个表里面获取两次信息SELECT * FROM Employee AS a, Employee AS b;从两个表里使用 Select 语句可能会导致产生 笛卡尔乘积 。在这种情况下,输出会产生 4*4=16 个记录。然而我们只对雇员工资高于经理的人感兴趣。所以我们应该用 WHERE 语句加 2 个判断条件。SELECT * FROM Employee AS a, Employee AS b WHERE原创 2020-11-30 22:38:54 · 244 阅读 · 0 评论 -
SQl刷题:第二高数据
如题方法一:使用子查询和LIMIT语句使用不同的薪资降序排列,然后使用LIMIT子句获得第二高的薪资SELECT DISTINCT Salary AS SecondHighestSalaryFROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1;由于存在可能没有第二高的工资,我们将其作为临时表SELECT (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFF原创 2020-11-30 22:12:31 · 380 阅读 · 0 评论 -
SQL刷题:组合两张表
如题:过程:因为上面的表中, Address 中的 personId 是表 Person 的外关键字,所以我们可以连接这两个表来获取一个人的地址信息。但是,并不是每一个人都是有信息的,所以我们应该用 outer join而不是inner join代码:SELECT FirstName, LastName, City, StateFrom Person LEFT JOIN Address on Person.PersonId = Address.PersonId;注意:如果没有某个人的地址信息原创 2020-11-30 21:36:41 · 336 阅读 · 0 评论