mysql语法太难记住了_MYSQL语法实例(仅学习)
MySQL是一种DBMS,data base management system,数据库软件,基于客户机-服务器运行
Navicat For MySQL:一款简单好用的数据库可视化软件。
SQL:structured query language,结构化查询语句,专门用来与数据库通信
一、检索数据
| YR | CITY | CONTINENT | | ---- | ------- | ------------- | | 2000 | Sydney | Australia | | 2004 | Athens | Europe | | 2008 | Beijing | Asia | | 2012 | London | Europe | | 2016 | Rio | South America |
SELECT cityFROM games;#限制查询的数量SELECT cityFROM gamesLIMIT 3;#限制查询位置SELECT cityFROM gamesLIMIT 2,2; #指示MySQL返回从行2开始的2行,第一个数为开始的位置,第二个位置为要检索的行数
注:SQL不区分大小写,但对SQL关键字使用大写,对所有列、表名使用小写,这样方便代码阅读和调试。
二、排序检索
1.按字母顺序排列
SELECT cityFROM gamesORDER BY city;
2.按指定方向排列
SELECT yr,cityFROM gamesORDER BY yr DESC; #降序排列
3.寻找最近一届奥运会的举办年份、城市和所在大陆?
SELECT yr,city,continentFROM gamesORDER BY yr DESCLIMIT 1;
三、过滤数据
搜索条件(search criteria),也称为过滤条件(filter condition)
SELECT *FROM gamesWHERE city='Beijing';
常见的 WHERE 子句操作符:
# = 等于 <>不等于 !=不等于 ==大于等于 BETWEEN...AND两者之间 IS NULL检索NULL值
用在 WHERE 子句的逻辑操作符:AND
OR
IN
NOT IN
LIKE
通配符:%通配符代表搜索模式中给定位置的0个、1个或多个字符
_通配符只能匹配单个字符而不是多个字符
注:
- 搜索字段里包含单引号,可以用双引号代替
四、使用函数处理数据
SELECT COUNT(city)FROM gamesGROUP BY continent;#LEFT(s,n) 从字符串s左侧开始截取n个字符>>LEFT('Hello world',4)'Hell'#RIGHT(s,n) 从字符串s右侧开始截取n个字符>>RIGHT('Hello world',4)'orld'#CASE 不同条件返回不同的值,如果所有条件都不允许返回NULLSELECT name,population,
CASE WHEN population<1000000 THEN 'small'
WHEN populaiton<10000000 THEN 'medium'
ELSE 'large'
ENDFROM world;#COALESCE 返回首个不是空值的参数COALESCE(x,y,z) = x if x is not NULLCOALESCE(x,y,z) = y if x is NULL and y is not NULLCOALESCE(x,y,z) = z if x is NULL and y is NULL and z is not NULLCOALESCE(x,y,z) = NULL if x and y and z are all NULL#CONCAT 连接两个或多个字符串>>CONCAT('data',' ','analysis')'data analysis'#TRIM(s) 移除字符串收尾部位的空格>>TRIM('Hello world ')'Hello world'
SQLZOO练习
一、SELECT基础
主要考察WHERE 语句的使用:IN、LIKE、BETWEEN...AND、DISTINCT
SELECT 语句的运算:area*3、population/area、len(name)
二、SELECT world表
主要考察SELECT 语句的运算:gap/population, ROUND函数
WHERE 语句的使用:IN、OR、XOR、LEFT函数
三、SELECT nobel表
难题1:Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.
解析:难在第二句话,如何把化学奖和物理学奖放在最后。再把问题分解,我们可以实现把化学奖和物理学奖单独提取出来,但是如何不改变原始数据只变动顺序?
解决:subject IN ('Chemistry','Physics') 其实有返回值0或1,可以利用这个返回值排序。
SELECT winner, subjectFROM nobelWHERE yr=1984ORDER BY subject IN ('Chemistry','Physics'),subject,winner
难题2:Pick the code that shows the amount of years where no Medicine awards were given. 没有颁发医学奖的年数。
解析:首先有几个坑。1)没有颁发医学奖,如果只是用WHERE subject !='Medicine' ,那么极有可能把所有年份都拎出来了,因为不可能某一年的诺贝尔奖什么奖都没发(包括医学奖)。2)因为每年颁很多奖,筛选出来的年份极有可能重复。
解决:逆向思维,既然无法干净利索地把没有办法医学奖的年份挑出来,那么可以把获得医学奖的年份拿出来,再进行排除(这样我们只要在yr 这一个列中操作)
SELECT COUNT(DISTINCT yr)FROM nobelWHERE yr NOT IN (SELECT DISTINCT yr FROM nobel WHERE subject='Medicine');
四、SELECT嵌套
主要考察SELECT嵌套在 WHERE 语句中
SELECT嵌套在 SELECT 语句中
# 查找全球人口最多的国家SELECT name,populaitonFROM worldWHERE population >= ALL(SELECT population FROM world WHERE population>0)# 查找每个洲面积最大的国家SELECT continent,name,areaFROM world xWHERE area >= ALL(SELECT area FROM world y WHERE x.continent=y.continent AND area>0)# 查找每个洲字母排序第一的国家SELECT continent,nameFROM world xWHERE name <= ALL(SELECT name FROM world y WHERE x.continent=y.continent)# 查找所有国家人口都小于2500万的大洲及其国家SELECT continent,name,populationFROM world xWHERE 25000000 >= ALL(SELECT population FROM world y WHERE x.continent=y.continent)# 查找同一个大洲内,GDP是其他所有国家三倍的国家SELECT name, continentFROM world xWHERE gdp >= (SELECT gdp*3 FROM world y WHERE x.continent=y.continent AND x.name!=y.name)# 查找欧洲国家及其人口,其中人口以占德国人口的百分比展示SELECT name, CONCAT(ROUND(population*100/(SELECT populaiton FROM world WHERE name='Germany')),'%') AS populationFROM worldWHERE continent='Europe'
五、SUM 和 COUNT函数
主要考察SUM函数、COUNT函数在 WHERE 语句中的使用
HAVING 语句的使用
# 查找总人口超过一亿的大洲SELECT continentFROM worldGROUP BY continentHAVING sum(population) > 100000000
六、JOIN操作
JOIN两张表 SELECT * FROM table1 JOIN table2 ON id1=id2
# 查找在对战德国的比赛中进球的球员SELECT DISTINCT playerFROM game JOIN goal ON matchid=idWHERE (team1='GER' OR team2='GER') AND teamid!='GER';# 列出有波兰队参赛的比赛时间和进球数量SELECT matchid, mdate, COUNT(player) AS goalFROM game JOIN goal ON matchid=idWHERE (team1='POL' OR team2='POL')GROUP BY mdate,matchid;# 列出每场球各球队进球的数量SELECT mdate, team1, SUM(CASE WHEN teamid=team1 THEN 1 ELSE 0 END) score1, team2, SUM(CASE WHEN teamid=team2 THEN 1 ELSE 0 END) score2FROM game JOIN goal ON matchid=idGROUP BY mdate,matchid,team1,team2;# 列出在Stadion Miejski (Wroclaw)球馆比赛并进球的球员、队名、进球时间(对阵意大利队除外)SELECT DISTINCT player, teamid, gtimeFROM game JOIN goal ON matchid=idWHERE stadium = 'Stadion Miejski (Wroclaw)' AND ((teamid=team1 AND team2!='ITA') OR (teamid=team2 AND team1!= 'ITA'))
七、更多JOIN操作
JOIN三张表
# 查找John Travolta出演超过2部电影的年份和电影数SELECT yr,COUNT(title)FROM movie JOIN casting ON movie.id=movieid JOIN actor ON actorid=actor.idWHERE name='John Travolta'GROUP BY yrHAVING COUNT(title)>2# 列出有Julie Andrews参演的电影的名字和主角# 不同于由Julie Andrews主演的电影名称SELECT title, actor.nameFROM movie JOIN casting ON movie.id=movieid JOIN actor ON actorid=actor.idWHERE movieid IN (SELECT movieid FROM castingWHERE actorid IN (
SELECT id FROM actor
WHERE name='Julie Andrews')) AND ord=1
八、活用NULL值IS NULL
INNER JOIN 会过滤掉包含NULL值的列
OUTER JOIN 左右都管
LEFT JOIN 管左不管右
RIGHT JOIN 管右不管左
mysql语法太难记住了_MYSQL语法实例(仅学习)相关推荐
- mysql条件变量单引号_mysql语法
mysql 语句 1.rpm -qa | grep mysql //检查是否有mysql的安装包 2.rpm -e mysql // 普通删除模式 3.rpm -e --nodeps mysql // ...
- 【刘晓燕语法长难句】 简单句
简单句 一.什么是英语句子? 二.英语句子的基本结构(主谓.主谓宾.主系表) 三.句子的成分(词性的问题) 1. 谓语 1.1 谓语的成分 1.2 一句话当中动词能不能多? 练习 1.3 一句话当中动 ...
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第二章——并列句全解 2021年12月17日——2022年2月5日
[贪玩巴斯]带你一起攻克英语语法长难句-- 第二章--并列句全解 2021年12月17日--2022年2月5日 并列句 1.什么是并列句? 2.并列连词以及与其同义的逻辑关系词 1.常见的并列连词 2 ...
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第五章——尾声的凯旋:状语和状语从句 ——2022年2月25日-3月17日
[贪玩巴斯]带你一起攻克英语语法长难句-- 第五章--尾声的凯旋:状语和状语从句 --2022年2月25日 1.形容词和副词(包括短语) 1.1 形容词(短语) 2.2 副词(短语) 2.什么是状语? ...
- mysql 定义唯一约束_在MySQL中,定义唯一约束的基本语法格式是【】
在MySQL中,定义唯一约束的基本语法格式是[] 答:NOT NULL 中国制定全面抗战路线的会议是( ) 答:洛川会议 中国大学MOOC:\精确制导武器包括和()两大类武器.\; 答:\精确制药\& ...
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第三章——名词(短语)和名词性从句{主语、宾语、表语和同位语}全解 ——2022年2月6日-16日
[贪玩巴斯]带你一起攻克英语语法长难句-- 第三章--名词(短语)和名词性从句{主语.宾语.表语和同位语}全解 --2022年2月6日-16日 1.名词(短语)能做什么成分? 2.解释同位语是什么? ...
- 语法长难句-----简单句
语法长难句 简单句 基本含义 英语句子必须具备主语.谓语 主语一定是谓语动作的发出者 宾语一定是谓语动作的承受者或接受者 句子的基本结构 主谓 eg: He dead. 主谓宾 谓语:实义动词 主系表 ...
- 刘晓燕-语法长难句-第一章简单句(不简单)
刘晓燕语法长难句(全篇) 第一章 简单句 第二章 并列句 第三章 名词(短语)和名词性从句 第四章 定语和定语从句 第五章 状语和状语从句 第六章 特殊结构 第七章 写作 第八章 长难句 文章目录 刘 ...
- SQL全方位攻略:5. SQL “方言”大比拼:Oracle、MySQL、PostgreSQL限制检索行数语法详解(分页查询)
系列文章目录 SQL全方位攻略:1.数据库介绍 SQL全方位攻略:2.SQL介绍 SQL全方位攻略:3.SQL标准 SQL全方位攻略:4. 标准SQL和SQL"方言" 文章目录 系 ...
最新文章
- 《Clojure数据分析秘笈》——1.6节从JDBC数据库读取数据
- mysql where 拼接_分一个mysql拼接where语句的Directive,并请教一个问题
- 项目中遇到的ORA error 及解决办法 ---ora-07445
- Nacos(八)之Docker
- JavaScript中的运算符
- python 3.6 MJ小工具
- C# DataGridView属性设置
- PHP框架自动加载类文件原理
- tcp关闭连接:挥手讨论
- 使用 JS 实现一个简单的日历
- bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业(区间DP)
- 【leetcode】动态规划优秀题目
- Excel如何安装VBA?
- 微软官网操作系统下载方法
- nginx 前端小图标配置
- 镭神16线激光雷达跑SC-LeGo-LOAM算法
- Unity 打包 Android API 26
- 如何查看华为笔记本的型号与硬件配置 ?
- 【安卓开发】数据库Room框架的学习和使用
- 2020最新版最简单github上传项目
热门文章
- 省市区sql语句之:(三)区2
- 同时买票是怎么实现的_那些没买票还能上高铁的人是怎么做到的?网友:居然还有这种操作...
- php维语,关于维语书写 - 维吾尔语 | Uyghur | ئۇيغۇرچە - 声同小语种论坛 - Powered by phpwind...
- 三甲医院his系统源码_南京同行交流 | 三甲医院医疗大数据集成平台建设及打造可持续发展的数字底座架构设计...
- 【入门数据分析】英国某电商的销售分析
- APP积分商城的前后置条件是什么?
- 基于JavaWeb的企业会议管理系统
- 解决手机连上笔记本wifi几分钟后就上不了网
- Spring5的WebClient使用详解
- 【OJ每日一练】1199 - 计算并联电阻的阻值