注:下文中所使用表格student和course完整数据如下:
![4199d086be3060568eb310b146d50b29.png](https://img-blog.csdnimg.cn/img_convert/4199d086be3060568eb310b146d50b29.png)
![cf1c7893fa04a70f46de687034799ed3.png](https://img-blog.csdnimg.cn/img_convert/cf1c7893fa04a70f46de687034799ed3.png)
一、MySQL常用到语句--基础查询语句
SELECT <列名1>,<列名2>,<列名3>... FROM <表名>;
tips1:查询学生表示例:
![823aa72b5fe1ff7cf0f23d40621090cd.png](https://img-blog.csdnimg.cn/img_convert/823aa72b5fe1ff7cf0f23d40621090cd.png)
二、指定查询条件
指定条件查询,是在SELECT * FROM 之后增加条件,即WHERE语句。
SELECT <列名1>,<列名2>,<列名3>... FROM <表名> WHERE 条件1 AND 条件2...;
tip2:关于上面语句的运行顺序,首先运行FROM,其次是WHERE,最后是SELECT。所以,优化FROM和WHERE条件可以提高查询速度,缩短运行时间。
运行顺序如下所示:
![c41fe2c35fa7b2b7dfcb0c2a0f910136.png](https://img-blog.csdnimg.cn/img_convert/c41fe2c35fa7b2b7dfcb0c2a0f910136.png)
三、运算符的使用
在查询语句中经常使用到运算符,主要分以下三种:算术运算符(+,-,*,/)、比较运算符(=,<>,>,>=,<,<=)、逻辑运算符(not,and,between,or,in)。
算术运算符示例:
![09bc177079603b7880f58f56f9f455e7.png](https://img-blog.csdnimg.cn/img_convert/09bc177079603b7880f58f56f9f455e7.png)
比较运算符示例:
![322b2b0f0c62582df02324b17ede06ea.png](https://img-blog.csdnimg.cn/img_convert/322b2b0f0c62582df02324b17ede06ea.png)
逻辑运算符示例:
![dcc342c8bf5dc691702682c9b1a790b1.png](https://img-blog.csdnimg.cn/img_convert/dcc342c8bf5dc691702682c9b1a790b1.png)
四、模糊查询
很多时候限定条件不能精确匹配,就需要使用模糊查询,即LIKE 和 '%' , '_'组合使用。
模糊查询示例:
![fe311046fcc0ef0571edac9f5679b247.png](https://img-blog.csdnimg.cn/img_convert/fe311046fcc0ef0571edac9f5679b247.png)
以上三种模糊查询,语句1和3结果一致,由于student表中没有名字为“猴”的学生,故语句2结果为空。
五、SQLzoo练习 https://sqlzoo.net/wiki/SELECT_basics
![971f7005b195528d50f09403d3c88261.png](https://img-blog.csdnimg.cn/img_convert/971f7005b195528d50f09403d3c88261.png)
1、SELECT basics
(1)显示德国的人口;
SELECT population
FROM world
WHERE name='Germany';
![d1649061751f9fab0afbda64e72968a8.png](https://img-blog.csdnimg.cn/img_convert/d1649061751f9fab0afbda64e72968a8.png)
(2)查询面积>5000000的每个国家人均国内生产总值;
SELECT name, gdp/population
FROM world
WHERE area > 5000000;
![a7f96888469253127cf1d9f584397cb4.png](https://img-blog.csdnimg.cn/img_convert/a7f96888469253127cf1d9f584397cb4.png)
(3)显示'Ireland','Iceland','Denmark'的国家名称和人口;
SELECT name,population
FROM world
WHERE name IN ('Ireland','Iceland','Denmark');
![80be73b21aa2e71456dab1a5981b12cc.png](https://img-blog.csdnimg.cn/img_convert/80be73b21aa2e71456dab1a5981b12cc.png)
(4)查询国家面积为200000和250000之间的国家名称和面积;
SELECT name,area
FROM world
WHERE area BETWEEN 200000 AND 250000;
![05500c671520ee1b7c49baf7562e44f6.png](https://img-blog.csdnimg.cn/img_convert/05500c671520ee1b7c49baf7562e44f6.png)
2、SELECT from world
(1)显示具有至少2亿人口的国家名称;
SELECT name
FROM world
WHERE population>200000000;
![992ede2362c5c0339ea45200c54edd86.png](https://img-blog.csdnimg.cn/img_convert/992ede2362c5c0339ea45200c54edd86.png)
(2)找出有至少200百万(2亿)人口的国家名称,及人均国内生产总值;
SELECT name,gdp/population
FROM world
WHERE population>=200000000;
![e3e2339f65f651dddc201e77fd15c037.png](https://img-blog.csdnimg.cn/img_convert/e3e2339f65f651dddc201e77fd15c037.png)
(3)显示'South America'南美洲大陆的国家名字和以百万为单位人口数。 将人口population 除以一百万(1000000)得可得到以百万为单位人口数;
SELECT name,population/1000000
FROM world
WHERE continent='South America';
![f302c1059fca0a8958c8d8899fd1f864.png](https://img-blog.csdnimg.cn/img_convert/f302c1059fca0a8958c8d8899fd1f864.png)
(4)显示法国,德国,意大利(France, Germany, Italy)的国家名称和人口;
SELECT name,sum(population)
FROM world
WHERE name in ('France','Germany','Italy')
GROUP BY name;
![f1c9406a1eb679b89d383a89f4758ce9.png](https://img-blog.csdnimg.cn/img_convert/f1c9406a1eb679b89d383a89f4758ce9.png)
(5)显示包含单词“United”为名称的国家;
SELECT name
FROM world
WHERE name like '%United%';
![ec61547dd92ba9f7d38ca269b2440490.png](https://img-blog.csdnimg.cn/img_convert/ec61547dd92ba9f7d38ca269b2440490.png)
(6)成为大国的两种方式:如果它有3百万平方公里以上的面积,或拥有250百万(2.5亿)以上人口。展示大国的名称,人口,面积;
SELECT name,population,area
FROM world
WHERE area>3000000 OR population>250000000;
![81dad4ddbeba74051cc826820848f727.png](https://img-blog.csdnimg.cn/img_convert/81dad4ddbeba74051cc826820848f727.png)
(7)美国、印度、和中国(USA, India, China)是人口又大,同时面积又大的国家。排除这些国家。展示以人口或面积为大国的国家,但不能同时两者,展示国家名称,人口和面积;
SELECT name,population,area
FROM world
WHERE name NOT IN ('USA','India','China')
AND ((area>3000000 and population<250000000) OR (area<3000000 and population>250000000));
![ea7b9e6df255efb2f5dbb56ef8ff753e.png](https://img-blog.csdnimg.cn/img_convert/ea7b9e6df255efb2f5dbb56ef8ff753e.png)
(8)除以为1000000(6个零)是以百万计。除以1000000000(9个零)是以十亿计。使用 ROUND 函数来展示的数值到小数点后两位。对于南美显示以百万计人口,以十亿计2位小数GDP;
SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2)
FROM world
WHERE continent='South America';
![1c14d5232495c0056fca4a41f6bd84f4.png](https://img-blog.csdnimg.cn/img_convert/1c14d5232495c0056fca4a41f6bd84f4.png)
(9)显示国家有至少一个万亿元国内生产总值(万亿,也就是12个零)的人均国内生产总值。四舍五入这个值到最接近1000。显示万亿元国家的人均国内生产总值,四舍五入到最近的$1000;
SELECT name,ROUND(gdp/population,-3)
FROM world
WHERE gdp>1000000000000;
![c0c37980dc1afc29ef72b61b9858fe67.png](https://img-blog.csdnimg.cn/img_convert/c0c37980dc1afc29ef72b61b9858fe67.png)
总结:以上练习题目分别用到“=”,“>”,“>=”,“IN”,“BETWEEN”,“LIKE”,“AND”,“OR”,“ROUND”等运算符。