第零章:前言
主要适用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
in后用()
如果条件是字符串,使用 “ '' ”。
(2)模糊查询(模糊查询才会用通配符)
常见于一个不确定的要求,比如要查一个首字母C尾字母为ia的国家:
where name like'C%ia'
使用like,li