Mysql-数据分析端

基于python+vue+mysql的Hadoop的租房数据分析系统 租房数据分析系统是一个基于Hadoop的大数据平台,通过采用B/S架构,Django框架以及MySQL数据库技术,旨在为用户提供全面的租房信息和数据支持。该系统具备丰富的功能,包括管理员端的系统首页、个人中心、用户管理、房屋信息管理、租房数据管理和系统管理,以及前台端的首页、房屋信息、租房数据、房屋资讯和个人中心等模块。通过这些功能,用户可以方便地查找合适的房源,了解租金走势和热门区域等信息,同时管理员可以对用户和房屋信息进行有效管理,保证系统的正常运行和数据的安全性。该系统利用Hadoop技术处理和分析大 阅读详情

第零章:前言

主要适用MySql数据库语法,用于数据分析

代码非最优!

SQL查询语句语法结构和运行顺序:

语法结构:select--from--where--group by--having--order by--limit

运行顺序:from--where--group by--having--order by--limit--select

SQL语言框架:

第一章:数据介绍

<world>

name-国家名称,continent-所在洲,area-地域面积,population-人口,gdp,capital-首都,tid-域名,flag-国旗

(该表用于基础筛选练习)

<nobel>

yr-年份,subject-科目,winner-获奖者

(该表用于基础筛选练习)

<covid>

name-国家名,whn-统计截止时间,confirmed-确证人数,deaths-累计死亡,recovered-累计治愈

<ge>

yr-年份,firstName-候选人名字,LastName-候选人姓氏,constituency-所在选区编号,party-所属党派,votes-投票数

<teacher,dept>

<teacher>

id-教师编号,dept-科目编号,name-教师名字,phone-电话,mobile-手机号码

<dept>

id-科目编号,name-科目名

(涉及多表连接)

<game,goal,eteam>

<game>

id-赛事id,mdate-赛事举办时间,stadium-赛事举办地点,team1,team2-参加比赛的两个队伍名

<goal>

player-一名进球球员的姓名,gtime-进球时间,teamid-所在队伍id,matchid-当时赛事的编号

<eteam>

id-队伍编号,teamname-队伍名,coach-教练名

(涉及多表连接)

<movie,casting,actor>

<movie>

id-电影编号,title-电影标题,yr-首映年份,director-导演,budget-制作费用,gross-票房收入

<casting>

movieid-电影编号,actorid-演员编号,ord-角色次序(1是第一主角,以此类推)

<actor>

id-演员编号,name-演员姓名

(涉及多表连接)

第二章:基础语法和运行原理

主知识点1:select&from

使用例题网址:SELECT from WORLD Tutorial - SQLZoo

(1)select 和 from 基本作用

select 字段名(决定这一段查询最后展示的字段)

from 表名(指定这段查询语句涉及的数据来源)

例题一:在<world>表中查询字段<name>,<continent>,<population>

SELECT name, continent, population FROM world

该例题展现从表中选取字段整列时的行为格式,注意在字段间用英文逗号隔开,在行为间用空格隔开。

字段用“*”就是全选

返回多个代码时,在每一个查询段使用“;”号。

(2)查询时修改表头名称

查询字段时可以修改名称:

select name as(这个去掉,仅使用空格也行)'国家',population '人口',continent '大洲' from world

(3)查询时去重

select distinct continent from world:

此时输出格式就是输出continent里的大洲类型(因为去重了)而不是输出整列。

逻辑就是在select字段时在字段前面加上“distinct”代表对该字段去重。

去重逻辑剖析:

如果你以下输入两个指令,你就会发现前一个可以输出,后一个报错:

select distinct name,continent from world

select name,distinct continent from world

这是因为在去重的逻辑中,第一个指令是尝试去重了name和continent两个字段,即只要有两行的name和continent字段都一样,那么就会去掉其中一个。

但是第二个指令仅仅是尝试去重了continent字段,而输出结果和name对应不上导致sql输出不了该表格。

所以使用distinct一定是在select后,而不是在字段前

(4)select的计算字段

例题:计算人均GDP

select gdp/population 人均gdp from world

类似的四则运算,只要字段内容是数值型都可以进行

类似的还可以直接使用函数进行类似的运算,格式与四则运算一致

主知识点2:where

(1)精确查询

where 表达式。走在select和from的后面,虽然select后可以直接进行简单四则运算查询,但是要查询更多条件得用where

a47595f016a2444c91960ee2f24877ef.png

in后用()

如果条件是字符串,使用 “  ''  ”。

(2)模糊查询(模糊查询才会用通配符)

常见于一个不确定的要求,比如要查一个首字母C尾字母为ia的国家:

where name like'C%ia'

使用like,like的权重可以和“=”划等号不过:

where area like'2%'(表示用like查询时,后面的条件必须用英文''括进)

可得出所有数字首位是2的地域大小行。

模糊查询的通配符:%(表示任意数量的字符)_(表示一个字符)

得出名称第二个为t的所有国家:

where name like'_t%'

(3)多条件查询

例题:选择国家中含有三个a且面积达到600000以上的。

select name,area
from world
where name like'%a%a%a%' and area>600000

例题:选择国家中含有三个a且面积达到600000以上或者人口数达到13000000000以上且面积达到5000000以上的。

select name,area
from world
where name like'%a%a%a%' and area>600000
or
population>130000000 and area>5000000

【and比or的优先级要高】

多条件查询可以自己写,当然也可以用“in”或者“between...and...”替代

其中between...and...替代的是(or,or,or)and(or,or,or)的工作

in替代的是or,or,or的工作

主知识点3:order by

(1)无条件order by

select...from....where...order by 字段名 asc|desc(升序|降序)

在查询语句中的作用是排序,字段名后不写默认就是升序

order by讲求先后顺序,即若将查询结果先按降序的年份排,再按升序的姓名排

order by yr desc,name asc

这里年份是数值所以是数值降序,姓名是字符所以是按照原表的顺序排列

这里的逻辑是,先按照年份排序时,会有年份相同的组成一个分区,此时,第二次排序就在这个分区内进行。

(2)有条件order by

order by 字段 in('xx','xx'...)这里即会默认in后的为1,其他为0,而在排序时,1总是在0的后面,使用这个用法可以解决一下例题:将物理学奖和化学奖排在最后面,然后按照奖项排序

order by subject in('chemistry','physics'),subject

主知识点4:limit

limit n~返回数据前n行

limit x,n~返回从x+1行(包括该行)开始返回n行

比如从第四行开始返回到第7行

limit 3,4

[limit 仅可在MySQL中使用]

主知识点5:聚合函数&group by

AVG()~ 返回一列的平均值 COUNT()~返回一列的行数  MAX()~返回一列的最大值 MIN()~返回一列的最小值 SUM()~返回一列的求和值

以上称为聚合函数,标准语法是与group by 连接在一起使用(也可以自己用)

格式:

select..from...where

group by 字段名1

order by

limit

所谓group by就和sumif一样,在聚合时需要提供一个聚合的依据,这个依据就是group by后面跟着的这个字段:

例子:查询每个大洲(continent)和大洲内的国家(name)数量

select continent,count(name) from world

group by continent

就以continent为count的分组依据,输出continent一列和count(name)一列

如果没有加入group by分组依据,会默认输出count所有国家的一行,此时因为行行不对而报错。

【没有加group by的聚合函数是不分组聚合,即全部聚合】

例子2:查询2013至2015年每年每个科目的获奖人数,结果按年份从大到小,人数从大到小排序

select yr,subject,count(winner)
from nobel
where yr between 2013 and 2015
group by yr,subject【如果只有subject则yr只有2013,如果只有yr则subject只有physics(即只输出每个对应的第一个)】
order by yr desc,count(winner) desc

主知识点6:having&简单运行原理

  • select 字段名
  • from 表名
  • [where 表达式]
  • [group by 字段名]
  • [having 表达式]
  • [order by 字段名 asc|desc]
  • [limit [位置偏移量,]行数]

①只有使用了group by后才可以,才会使用having语句。

②having本质上是对group by分组的筛选。

③having表达式和where基本一致,但是可以使用聚合函数。

例子:查询总人口数至少为3亿的大洲和其平均gdp,其中只有gdp高于200亿且人口数大于6000万或者gdp低于80亿且首都中含有三个a的国家的计入计算,最后按国家数从大到小排序,只显示第一行

select continent,avg(gdp) '平均gdp'
from world
where
gdp>20000000000 and population>60000000
or
gdp<8000000000 and capital like'%a%a%a%'
group by continent
having sum(population)>=300000000
order by count(name) desc
limit 1

这是一道比较复杂(但是逻辑简单)的复合代码题,下面进行代码解释,首先拆解题目要求:①显示“大洲”和“平均gdp”②条件1是“gdp高于200亿且人口数大于6000万或者gdp低于80亿且首都中含有三个a的国家”③条件2是“大洲的总人口数至少为3亿”④条件1比条件2要优先,因为要首先确定计算入,才能计算比较总。⑤排序是“按国家数从大到小排序”⑥限制是“只显示第一行”

对于①,我们比较老实地交付就是select一个continent和一个avg(gdp) from world

对于②因为是先头条件(④),所以用where来写

由于我们先头有一个平均gdp使用了聚合函数,所以这里要用group by

对于③,条件2自然用group by后面跟着的having对group by后地继续进行筛选。

对于⑤,排序按照国家数,那也就是按照count(name) desc去做。

对于⑥,就是limit 1即只显示前1行

主知识点7:部分常见函数

四舍五入函数:

round(x,y)-将x按照精确到小数点后y位进行四舍五入,y为负值,保留左边对应相位,其余为0【round(1283,-1)→1280(-2)→1200...】

百分比函数:

concat(round(expr*100,2),'%')-concat,round组合函数,用于表示某个比率expr的百分比形式。其中round的作用是生成这个比率expr的一百倍后保留两位小数的结果,concat的作用是将round生成的数值和%结合在一起。

粘合函数:

concat(a,b,c)-将a,b,c变为abc,需要注意的是,其中的abc可以是一个字符也可以是一个数据列,组合时将不被削去其数据列属性。:where capital like concat('%',name,'%')可以在capital和name中,筛选出capital一列的数据带有name中字符的行。

替换函数:

replace(s,s1,s2)-使用s2替换s中的所有s1

返回函数:

left(s,n)/right(s,n)/substring(s,n,len)-返回字符串s一部分n的函数

left-返回s中最左边n个字符,right-返回s中最右边n个字符,substring-返回s中从第n个字符起取长度为len的字符串(即取n到n+len的子字符串)。

substring中,n可以为负值,即从s的倒数开始算,特别注意:‘abcdefg’取substring(-2,3)输出不是fed而是fg,这意味着从s的倒数开始算,但是取的时候还是正着取。包括right取的时候也是正着取。

转换数据类型函数:

cast(x as type)-将值x的类型转换为type,其中type可以为char(n),date,time,datetime,decimal等数据类型。

时间函数:

year/month/day(date)-分别获取date中的年月日数据

date_add/sub(date,interval expr type)-其中add是加,sub是减。expr是值,指偏移多少。type=second,minute,hour,day,week,month,quarter(季度),year。返回修改后的date值。:date_add(whn,interval 2 day)=在whn的时间基础上将所有数据加两天。

datediff(date1,date2)-计算date1和2之间间隔的“天数”。(左边date1减右边date2,所以也有负号)

date_format(date,format)-将日期和时间格式化,格式化的意思就是说,按照date中所给的信息,我按照format所给规则重写其格式。其中,format格式如下:

babe151aa19747bfa51ed28f0cf0e7e9.png

条件判断函数:

if

【if(expr,v1,v2)】指表达式expr为true返回v1,否则返回v2

case when

【case expr when v1 then r1 [when v2 then r2] ...[else rn] end】指case中的expr满足vn则返回rn

没有expr就直接看v,vn满足则返回rn,不满足则继续看vn+1

示例:

SELECT
    name,
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        WHEN score >= 60 THEN 'D'
        ELSE 'F'
    END as grade
FROM students;

SELECT name, score
FROM students
ORDER BY 
    CASE 
        WHEN score >= 90 THEN 1
        WHEN score >= 80 THEN 2
        WHEN score >= 70 THEN 3
        WHEN score >= 60 THEN 4
        ELSE 5
    END;

SELECT name, score
FROM students
WHERE 
    CASE 
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        WHEN score >= 60 THEN 'D'
        ELSE 'F'
    END = 'A';
 

第三章:高级语句

Ⅰ窗口函数

over(partition by 字段名1 order by 字段名2 asc|desc)

其中partition by指定分区依据,order by指定排序依据。

先根据某个字段名1,将所有字段分组后,再按照字段名2,在各个分组内部进行排序。光是over了还不够,因为over实际上没有输出任何值,它只是按照规则在虚框中排了个表,所以over还需要衔接以下几个词才能作为窗口函数输出具体数值:

rank(),dense_rank(),row_number()

rank()-将输出虚框表中从上到下对应的排名,相同排名数值相同,若第一第二名相同排名则记为1,第三名记为3。

dense_rank()-将输出从上到下对应的排名,相同排名数值相同,若第一第二名相同排名则记为1,第三名记为2。

row_number()-将输出虚框中从上到下对应的排名,相同排名数值相同,若第一第二名相同排名则记为随机的1和2,第三名记为3。

以上是在虚框中排完名之后成立了一个新行rank,听候后续指导的差遣。所以写排序窗口函数的时候一般这样写:

select

yr,party,votes,

rank()over(partition by yr order by votes desc) as rank
from ge
where constituency='S14000024'
order by party,yr

这样输出的结果就是筛选出constituency为S1400024的,先按照party排序(将相同party排到一起),再按照party的年份排序,默认为升序。输出年份yr,政党party,得票数votes和对应的“每年的得票数排名”rank。

另外,除了排序窗口的三个函数以外,还有两个“偏移分析函数”:

LAG(),LEAD()

LAG(字段名,偏移量,默认值)-在over排序好虚框之后,我想要查看这个虚框中,这个数据其向上偏移对应“偏移值”后对应“字段名”的数据,如果它没有上一行,则输出“默认值”。

LEAD(字段名,偏移量,默认值)-在over排序好虚框之后,我想要查看这个虚框中,这个数据其向下偏移对应“偏移值”后对应“字段名”的数据,如果它没有下一行,则输出“默认值”。

写偏移分析函数的时候一般这样写:

select name,
date_format(whn,'%Y-%m-%d') as date,
confirmed as comfirmed_today,
lag(confirmed,1)over(partition by name order by whn) as confirmed_yesterday,
confirmed-lag(confirmed,1)over(partition by name order by whn) as confirmed_new
from covid
where name in ('France','Germany') and month(whn)='1'
order by name,whn

这段的意思就是说,查找法国和德国分别在一月份新冠按日期从上到下的每天确诊人数,昨天确诊人数以及新增(今天较昨天)确诊人数。

可以看到这段用confirmed-lag(confirmed,1)作为新增确诊是有效的,说明了over的“对应性”。即通过地名分组,按照地名中的时间排升序,返回该升序中上一个行对应的confrimed值,与该confirmed值序列一一对应。

这里还要再举个例子,说明窗口函数的性质:

例题:

查询意大利每周新增确诊数(显示每周一的数值 weekday(whn) = 0)

最后显示国家名,标准日期(2020-01-27),每周新增人数

按照截至时间排序

答案1:

select name,
date_format(whn,'%Y-%m-%d') as date,
confirmed,
confirmed-lag(confirmed,1)over(partition by name order by whn) as confirmed_new_weekly
from covid
where name='Italy' and weekday(whn)=0
order by date

输出结果:

可以看到正确的数据格式。

(错误)答案2:

select name,
date_format(whn,'%Y-%m-%d') as date,
confirmed,
confirmed-lag(confirmed,7)over(partition by name order by whn) as confirmed_new_weekly
from covid
where name='Italy' and weekday(whn)=0
order by date

输出结果:

答者错误地认为,当lag中输入的是向上调7,应该会输出原confirmed-上7天confirmed的数据,然而它就搞不出来了。

说明:窗口函数是在源代码运行从【select→from→where→group by→having】之后得到的表中再进行复制从而操作的,而不是在原表中复制进而进行操作的。

因此,在运行窗口函数之前,你就得将窗口函数所对应表搞清楚。

Ⅱ表连接

inner/left/right join(内连接,左连接和右连接)

一般格式:

select 字段名

from 表名1 inner/left/right join 表名2 on 表名1.字段名=表名2.字段名

将两表连接在一起,使用笛卡尔积连接法,例如左边有AA,右边有AA,则生成的表内有四个A(1*2=2,2*2=4)。没对应的部分(如左表有B,右表无B)显示为null。

如果是inner,在连接之后,就不允许两表中存在任何null值,left就不允许左边存在null,right就不允许右边存在null。

例题1:查询有球员名叫Mario进球的队伍1(team1),队伍2(team2)及球员姓名

[

<game>

id-赛事id,mdate-赛事举办时间,stadium-赛事举办地点,team1,team2-参加比赛的两个队伍编号

<goal>

player-一名进球球员的姓名,gtime-进球时间,teamid-所在队伍id,matchid-当时赛事的编号

<eteam>

id-队伍编号,teamname-队伍名,coach-教练名

]

select team1,team2,player

from game right join goal on game.id=goal.matchid

where player like'%Mario%'

例题2:查询队伍1(team1)的教练是“Fernando Santos”的球队名称(teamname)、比赛日期(mdate)和赛事编号(id)

select teamname,mdate,game.id
from eteam inner join game on eteam.id=game.team1
where coach='Fernando Santos'

可以看到所使用的on后面的连接字段不一致,字段基本是表与表之间的连接键。

小试牛刀:

查询每场比赛,每个球队的得分情况,列出举办时间(mdate)、队伍1(team1)、队伍1得分(score1)、队伍2(team2)、队伍2得分(score2)。并按照举办时间(mdate)、赛事编号(matchid)、队伍1(team1)和队伍2(team2)排序。

select

mdate,team1,sum(case when game.team1=goal.teamid then 1 else 0 end) score1,team2,sum(case when game.team2=goal.teamid then 1 else 0 end) score2

from game left join goal on game.id = goal.matchid

group by mdate,team1,team2

order by mdate, matchid, team1, team2

这是一道相对复杂的综合题。下面是它的逻辑解析:

首先按照它的要求列出举办时间,队伍名和队伍得分。

select mdate,team1,score1,team2,score2

可以看到在表中是不存在所谓的score字段的,为此,我们需要进行组合运算得出score的真实值。

首先,我们对两份数据的两份表进行连接,由于game的赛事id是总括而goal的赛事id是跟随记录进球的,所以会出现game的数据随着被goal扩展的情况,因此在去空时选择去左边的空:

from game left join goal on game.id=goal.matchid

其次,要得出score的真实值,就得知道在每场比赛中,都是哪个队伍赢下了比赛,在goal表中,明确记录了一场比赛中的teamid,该teamid明确对应了一场比赛matchid和一次进球。我们就可以知道,通过以比赛,team1,team2聚合,我们将分类好team1和team2的teamid进行计数,就可以得出单次比赛的得分,通过以上逻辑修改score1和score2的定义,并添加聚合条件。

sum(case when team1=teamid then 1 else 0 end) score1,sum(case when team2=teamid then 1 else 0 end) score2

...

group by mdate,team1,team2

因为用于显示的mdate,team1和team2都是非聚合字段,聚合字段只有score1和score2。

最后,按照要求排序:

order by mdate, matchid, team1, team2

Ⅲ子查询

子查询本身就是一段完整的查询语句,然后用英文括号()包裹嵌套在主查询语句中,子查询也可以根据需求进行多层嵌套。

由于子查询并非函数而是之前函数在更高维度上的运用,所以该小节并不包含对任何函数的解释,而仅仅用例题呈现子查询的用法和子查询的特征以供参考。

<world>

name-国家名称,continent-所在洲,area-地域面积,population-人口,gdp,capital-首都,tid-域名,flag-国旗

例题1:(where嵌套子查询)查询出gdp高于欧洲每个国家的所有国家名,有一些国家gdp值可能为NULL,请排除这些国家。

运行逻辑:

高于欧洲每个国家gdp的国家名,言下之意就是在欧洲国家这个子表中找到最高的gdp,然后在主表中进行筛选。

(select gdp from world where continent='Europe')

以上就是欧洲gdp单独列出来的表格

将这个表格中的gdp进行聚合

(select max(gdp) from(select gdp from world where continent='Europe'))

以上就是欧洲gdp中最大gdp的数值,那么要求输出高于这个数值的所有国家名并去掉gdp为null的值:

select name

from world

where gdp>(select max(gdp) from(select gdp from world where continent='Europe') as Europe_gdp) and gdp is not null

两种手段我们都可以得到结果:China,United state,Japan。

<ge>

yr-年份,firstName-候选人名字,LastName-候选人姓氏,constituency-所在选区编号,party-所属党派,votes-投票数

例题2:(from嵌套子查询)查询2017年所有在爱丁堡的选区当选议员所在选区(constituency)及其团队(party),已知爱丁堡选区编号为S14000021至S14000026,当选议员即各选区得票数最高的候选人

运行逻辑:

在窗口函数的学习中我们写了这样的一串代码:

select

yr,party,votes,

rank()over(partition by yr order by votes desc) as rank
from ge
where constituency='S14000024'
order by party,yr

它可以拿来进行修改得到我们想要的关于所谓“2017年爱丁堡所有选区分别的得票情况及其团队”

select
party,constituency,
rank()over(partition by constituency order by votes desc) as rank
from ge
where constituency in('S14000024','S14000026') and yr=2017
order by constituency,rank

在得到这个表之后,要记住它包含了团队,选区以及rank信息,年份和选区已经帮我们筛好了,此时,我们只要将rank筛选为1就可以得到各选区(不能在窗口函数里直接设置rank=1,原因详见窗口函数运行顺序)的实际当选名单

select constituency,party
from (

select
party,constituency,
rank()over(partition by constituency order by votes desc) as rank
from ge
where constituency in('S14000024','S14000026') and yr=2017
order by constituency,rank

) as rk
where rk.rank=1

在这里你会发现和where嵌套不同的地方,那就是我在输入这个子查询的同时加上了“as rk”作为子查询的定义,这是必要的一步,不能省略。

子查询还有很多练习题可供进行“多重嵌套”的练习,也算一种逻辑升级的考验,但是其基本逻辑跟以上大差不差,因此就不多赘述,读者可以自行找补。

Ⅳ云端数据库配置

①配置的步骤随时间不同,以最新的工作流为准。

②创建后申请外网地址复制保存在某处,打开datagrip,打开数据源和驱动程序,选择支持的数据库类型,以及对应的数据库驱动程序文件【MySQL就是mysql-connector-java-8.0.22.jar】

③点击创建的数据库,将外网地址输入到“主机”中,输入创建时对应的用户和密码。点击测试连接,若连接成功即可。

④在创建的数据库中,可以找到在官网中创建的构架(没有创建就在官网创建),直接导入本地数据(从文件导入数据)即可。若有其他修改需求可以在展开界面自定义。

⑤进入sublime(汉化教程自行搜索),点击视图→侧边框→显示打开的文件

⑥可以输入一些sql代码了。sublime默认是text格式,所以需要自行修改为.sql格式

⑦现在可以将sublime中的代码复制粘贴到datagrip中进行测试了。

其实云端数据库各家公司的活不一样,所以可以先去了解了解。

第四章:巩固和实践

在上述的知识点梳理之后,还需要做的一件事就是在题库里夯实基础

牛客网SQL真题:https://www.nowcoder.com/ta/sql

在这里的真题对应上面所有的知识点,只要你知识点有学透,题就会做

按照顺序把题库里的题全部刷一遍,要做到看到题目就能有思路,还能准确无误地写出代码,这样基本上能搞定80%以上的实际数据需求和SQL笔试题。

剩下的20%需要更加复杂的业务场景、数据和需求才能继续提升!

第五章:Excel连接数据库

前置:

①依次安装以上驱动(可以根据excel的位数来选择win32或是win64)【可以在关于excel中找到位数】

②控制面板>>>系统和安全>>>管理工具>>>ODBC数据源64/32位

③用户DSN>>>添加>>>选择"MySQL ODBC 8.0 Unicode Driver",填写参数,点击test进行测试

使用ODBC从MySQL获取数据:

①打开Excel,数据选项卡>>>获取数据>>>自其他源>>>从ODBC,数据源名称选择配置ODBC时写的名称(这里为mysqldata)

②点击高级选项,输入SQL代码来指定读取的数据

③点击加载,从MySQL数据库中获取数据到Excel

第六章:Tableau连接数据库

前置和excel的前置一致

从MySQL获取数据:

选择连接到服务器,选择Mysql,填写数据库参数即可。

11. 【MySQL】DML 查询电影名称 有三个表:电影表,演员表,电影演员关系表(一个演员演出多部电影,一部电影由多个演员演出)请编写一个查询,查询电影编号为22的电影名称。备注:注意表名小写。 阅读详情

相关推荐

基于Django和MySQL的旅游数据分析系统设计与实现

数据分析是现代业务决策的基础,而旅游行业的海量数据往往分散在票务、客流和资讯等多个渠道,如何高效汇聚与呈现成为关键。Django作为Python生态中成熟的Web框架,采用MTV架构将数据模型、业务逻辑和页面展示解耦,配合MySQL关系型数据库,能够快速搭建稳定可靠的数据管理后台。通过ORM进行分组聚合查询,结合pandas完成数据清洗,再以可视化图表呈现分析结果,可以形成一套从数据采集到决策支持的全链路解决方案。这种技术组合在景区客流统计、城市热度对比、票务定价分析等场景中具有广泛适用性。本文以云南旅游数

weixin_29913663的博客 295

牛客网SQL 练习二

首先,通过left join将employees表和dept_emp表连接起来,连接条件是employees表中的emp_no与dept_emp表中的emp_no相等。首先,使用子查询A1,从salaries表中选择emp_no和salary列,并通过left join将salaries表与employees表连接起来,连接条件是salaries表中的emp_no与employees表中的emp_no相等。首先,从dept_emp表、dept_manager表和salaries表进行连接。

weixin_61524392的博客 1615

Simplorer-Maxwell联合仿真速度太慢?我用这3个技巧把仿真时间砍半(附SVPWM周期与步长设置避坑)

本文详细介绍了Simplorer-Maxwell联合仿真性能优化的3个关键技巧,包括仿真步长与周期的科学配置、基于任务调度的加速技术以及模型简化与精度平衡。特别针对SVPWM参数设置提供了避坑指南,帮助工程师在不牺牲精度的情况下将仿真时间缩短50%以上,适用于电机驱动系统开发等场景。

weixin_29189381的博客 466

头歌MySQL-基于电影、演员及票房应用的数据查询(Select)

熟悉本实训数据库的内容;查询电影的主要信息。相关知识为了完成本关任务,你需要掌握:SELECT单表简单条件查询。背景本实训采用的是电影网站的一个裁剪版的数据库,数据库中表,表结构以及所有字段的说明如下:表1 celeb(名人表:演员/导演)中国演艺人员,出生地为出生的省份(含台湾)或特别行政区(香港,澳门),出生地不详的,填写"中国";外国演员或导演,出生地是国名,如:日本,泰国;

2301_78805623的博客 1022

开发板的使用

一、开发板使用学习大纲。 1、开发板组成、核心板资源,底板资源。 2、开发板连接、调试工具、串口参数配置。 3、开发板启动过程。 4、文件传输 1)使用串口传输。 上传/下载 2)使用网口传输。 上传/下载 5、临时/永久配置开发板IP地址。 6、开发板启动脚本。 二、开发板的组成。 核心板: CPU处理器: 芯片:S5P6818(三星) 内核: ARM cortex-A53 -> 八核处理器 运行内存:512MB*2=1G nandflash:4G 底板: 电源线:5V 串口...

qq_45633736的博客 2659

centos 添加新硬盘,对根目录扩容

本地安装了虚拟机,系统为centos7,使用过程中,渐渐地发现磁盘容量不够用了,于是在虚拟机中新增了一块硬盘。 进入系统内查看: sdb是新增的硬盘,大小为40g。 接下来有两种方式,一种是普通方式直接挂载。https://blog.youkuaiyun.com/qq_39314099/article/details/106200322 这样的话只有在挂载点的目录下操作才能使用到这个新硬盘,不是很理想。 还有一种方式lvm,逻辑卷管理的方式。 LVM简单介绍: 它是 Linux 下对磁盘分区进行管

qq_39314099的博客 1万+

mysql 练习1 电影演员

mysql 练习 https://sqlzoo.net/wiki/More_JOIN_operations 1 select id,title from movie where yr = 1962 2 select yr from movie where title=‘Citizen Kane’ 3 select id,title ,yr from movie where title like ‘%Star Trek%’ 4 select id from actor where name= ‘Glenn C

qq_44500040的博客 988

信号编辑软件ZX/SignalEditing

信号编辑软件ZX/SignalEditing

weixin_45661395的博客 957

MYSQL ——select查询

需要注意的是,尽管可以查询指定列的数据,但是这并不意味着仅查询这些列的效率一定比查询所有列的效率高。因此,在实际应用中,需要慎重考虑筛选条件和聚合函数的使用,以便获得更好的查询性能。因此,在编写 SQL 语句之前,需要对数据库结构有一定的了解,并根据具体需求来设计表结构、索引、视图等数据库对象。此外,在查询过程中还需要遵循数据库的约束条件,例如表关系、数据类型等,以保证查询结果的正确性。是非常方便的查询方式,但是并不推荐在实际应用中频繁使用,因为它可能会返回大量的数据,从而影响查询性能和网络带宽。

lsj614的博客 6132

SPICE模型入门到精通

文章目录前言一、SPICE是什么?二、1. 前言 由于笔者的毕业设计与功率半导体器件建模相关,需要用到SPICE软件来建模,在这记录一下从零开始的SPICE学习历程~ 一、SPICE是什么? 电子产品的设计一般先从功能框图开始,然后细化到原理图,还要经过很调试验证过程,最终才能完成。调试和验证的过程复杂而繁琐,在设计集成电路时更是如此,在制造之前急需验证集成电路的功能。 根据电路理论,人们可以建立起节点方程和回路方程,通过解这些方程组成的方程组就可以得到结果,也就是说可以通过计算来获得电路的工作情况。但

qq_42031914的博客 7万+

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

数据分析认知课(三):传统行业与供应链数据分析的“势”、“道”、“术

数据分析认知课(三):传统行业与供应链数据分析的“势”、“道”、“术

Smartloe的博客 432

西门子200 SMART与博图WinCC通讯全攻略:从PC Access到S7-200协议避坑指南

本文详细解析了西门子S7-200 SMART PLC与博途WinCC上位机通讯的两种主流方案:基于PC Access SMART的OPC通讯和利用博途内置S7-200协议驱动直连。文章深入对比了两种架构的优缺点、配置步骤,并提供了从网络层到软件层的深度排错指南与性能优化建议,帮助工程师高效、稳定地实现系统集成。

gg901的博客 810

18张高清数据分析全知识地图,强烈建议收藏

本文介绍了数据分析在实际工作中用到的基本上大部分内容及其相关知识点,大家可以收藏仔细阅读慢慢看~

libaiup的博客 799

华为OD机试 新系统真题 【最小代价完成论文评审】

华为OD机试 新系统真题【最小代价完成论文评审】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小代价完成论文评审】多语言题解。

qq_45776114的博客 443

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LFM2.5-1.2B-Thinking与MySQL集成:智能数据分析系统构建

本文介绍了如何在星图GPU平台上自动化部署【ollama】LFM2.5-1.2B-Thinking镜像,构建自然语言驱动的智能数据分析系统。该轻量级推理模型可理解业务语义、生成思考轨迹并精准转换为SQL,在MySQL环境中实现‘用中文查数据、自动生成图表’的典型应用场景,显著提升业务人员自助分析效率。

weixin_30021053的博客 414

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

基于Django的B站数据分析可视化系统

本文介绍了一个基于Python Django框架开发的B站数据分析与可视化系统。该系统通过Scrapy爬虫采集B站热门视频数据,利用MySQL存储数据,并采用Hadoop进行大数据处理分析。前端使用Vue.js+ElementUI构建可视化界面,展示视频播放量、弹幕数、点赞数等指标。系统主要功能包括用户管理、热门视频多维分析、热度预测、评论收藏等,并提供了丰富的可视化图表。该系统实现了前后端分离架构,为B站视频数据分析提供了完整的解决方案,具有实际应用价值。

Python毕设指南 1054

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

springboot基于Web端及微信小程序的会议室预约管理系统

一、系统概述该系统旨在解决会议室资源分配冲突、优化会议室使用效率,并提供便捷的会议室预订体验。通过Web端和微信小程序,用户可以随时随地查看会议室状态、预约会议室、接收会议通知等,大大提高了工作效率和会议室资源的利用率。二、系统架构与技术特点1.开发语言与框架:2.1.后端开发使用Java语言,Java以其强大的后端处理能力、出色的事务管理和高并发性能,成为构建企业级应用的首选语言。

qq_1406299528的博客 752

大数据毕业设计python基于Hadoop的租房数据分析系统

租房数据分析系统是一个基于Hadoop的大数据平台,通过采用B/S架构,Django框架以及MySQL数据库技术,旨在为用户提供全面的租房信息和数据支持。该系统具备丰富的功能,包括管理员端的系统首页、个人中心、用户管理、房屋信息管理、租房数据管理和系统管理,以及前台端的首页、房屋信息、租房数据、房屋资讯和个人中心等模块。通过这些功能,用户可以方便地查找合适的房源,了解租金走势和热门区域等信息,同时管理员可以对用户和房屋信息进行有效管理,保证系统的正常运行和数据的安全性。

q_1262330535的博客 1106

【2025最新】基于SpringBoot+微信小程序的智能推荐校园社区服务微信PC端管理系统源码+MyBatis+MySQL

【2025最新】基于SpringBoot+微信小程序的智能推荐校园社区服务微信PC端管理系统源码+MyBatis+MySQL,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

k13579_97531的博客 1072

python基于Hadoop的租房数据分析系统的设计与实现

技术,旨在为用户提供全面的租房信息和数据支持。该系统具备丰富的功能,包括管理员端的系统首页、个人中心、用户管理、房屋信息管理、租房数据管理和系统管理,以及前台端的首页、房屋信息、租房数据、房屋资讯和个人中心等模块。通过这些功能,用户可以方便地查找合适的房源,了解租金走势和热门区域等信息,同时管理员可以对用户和房屋信息进行有效管理,保证系统的正常运行和数据的安全性。技术处理和分析大量租房数据,为用户提供准确的市场分析和决策参考,帮助用户更好地了解租房市场的情况。数据库工具:Navicat11。

QQ79278590的博客 1006

基于Hadoop租房数据分析系统(Python+Django+lw+系统源码 +调试)

租房数据分析系统是一个基于Hadoop的大数据平台,通过采用B/S架构,Django框架以及MySQL数据库技术,旨在为用户提供全面的租房信息和数据支持。该系统具备丰富的功能,包括管理员端的系统首页、个人中心、用户管理、房屋信息管理、租房数据管理和系统管理,以及前台端的首页、房屋信息、租房数据、房屋资讯和个人中心等模块。通过这些功能,用户可以方便地查找合适的房源,了解租金走势和热门区域等信息,同时管理员可以对用户和房屋信息进行有效管理,保证系统的正常运行和数据的安全性。

资深软件开发者,专注于Java/Python后端技术栈 1800

基于Python的旅游数据分析和可视化系统源码设计与文档

在文旅行业数字化运营需求激增、传统旅游数据管理存在 “维度割裂、分析效率低、可视化交互差、决策支撑弱” 的痛点背景下,基于 Python 的旅游数据分析和可视化系统,能整合多源旅游数据并实现深度挖掘,为景区运营、文旅企业、游客决策提供精准数据支撑。从数据处理层面,依托 Python 的 Pandas、Requests 库爬取 / 整合多源数据(景区客流、门票销量、游客消费、出行轨迹、点评舆情、交通数据),完成数据清洗、去重、标准化,结合 NumPy 实现基础统计分析,解决人工整理数据耗时久、维度单一的问题;

博主自己就是程序员、避免中介对接,从事软件开发多年,累计开发或辅导多名同学, 有丰富的项目开发和文档编写经验、同学们有任何项目问题都可以联系我~ 732

微信小程序知识付费平台,公众号App+SAAS+讲师端,多端部署

三勾知识付费系统基于thinkphp8+element-plus+uniapp打造的面向开发的知识付费系统,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。功能包含直播课堂、付费视频/音频、会员系统、课程分销、课程拼团、商城系统等。能够快速积学员、学员数据分析、智能转化客户、有效提高销售、吸引流量、网络营销、品牌推广的一款应用,且更适合企业二次开发。

Javashop_jjj的博客 476

智能跑腿小程序源码:全功能用户端与骑手端集成,开源可定制

随着同城服务市场的扩展,春哥团队的一款基于PHP+MySQL的同城跑腿小程序源码系统脱颖而出,它整合了用户端、骑手端和运营后台,支持一键接单和多种服务模式。该系统以开源和私有化部署为亮点,助力跑腿团队构建高效、安全的业务平台。

春哥开源研究所的博客 174

基于SpringBoot+微信小程序的智能推荐校园社区服务微信PC端管理系统设计与实现【Java+MySQL+MyBatis完整源码】

开源免费分享基于SpringBoot+微信小程序的智能推荐校园社区服务微信PC端管理系统设计与实现【Java+MySQL+MyBatis完整源码】可提供说明文档 可以通过*AIGC**技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

qq_41985346的博客 523
上一篇: Python数据分析与挖掘实战
下一篇: 京东评论词云图解决方案
code_ent
博客等级 码龄4年 316粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值