思维导图
一.基本的查询语句
1.1 语句(select from)
select <列名1>,<列名2>
from <表名>
1.2 语句类型
1.2.1 查询全部列 (*)
select *
from <表名>
1.2.2 为列设定别名 (as)
select <列名1>, as <新列名1>,<列名2>, as <新列名2>,
from <表名>
1.2.3 删除重复数据 (distinct)
select distinct <列名1>,<列名2>
from <表名>;
1.3 书写规则
- 语句以英文;结尾
- 语句不区分大小写
- 列名不加单引号,不能有空格
- 符号只能用英文符号
二.指定查询条件(where 结合运算符)
2.1 语句
select <列名1>,<列名2>,…
from <表名>
where 查询条件
2.2 SQL运行顺序
顺序:from→where→select
select子句最后运行,其他子句按书写顺序运行
三.注释和SQL语句注意事项
3.1 注释
单行注释
-- 查询全部列
多行注释
/*
查找姓名是
猴子学生的学号
*/
3.2 SQL语句注意事项
- 子句中间不能空行
- 标点符号必须为英文符号
四.运算符
4.1 算术运算符(+,-,*,/)
注:
有括号要先算括号里面的
任意数值+NULL=NULL
4.2比较运算符(<,>,=,<=,>=,<>)
注:
比较运算符可以和所有类型的值进行比较
注意字符串的比较 '10'<'2'
4.3 逻辑运算符(not ,and,between,or,in)
五.字符串模糊查询
5.1 like:表示模糊查询
5.2 '%':表示任意字符
5.3 '_' :表示任意1个字符串
六.练习题(sqlzoo平台)
6.1 select basic(简单查询)
网址:https://sqlzoo.net/wiki/SELECT_basics/zh;
1.這個例子顯示’France法國’的人口。字串應該在'單引號'中。修改此例子,以顯示德國 Germany 的人口。
SELECT population
FROM world
WHERE name = 'Germany'
2.查询面积为5000000以上平方公里的国家的国家名字,人均国内人均生产总值
text
SELECT name, gdp/population
FROM world
WHERE area > 5000000;
3.修改例子以显示 ‘爱尔兰Ireland’,‘冰岛Iceland’,‘丹麦Denmark’的国家名称、人口
SELECT name,population
FROM world
WHERE name IN('Ireland','Iceland','Denmark');
4.显示面积为200000及250000之间的国家名称和它的面积
SELECT name,area FROM world
WHERE area between 200000 AND 250000;
6.2 select from world(运算符练习)
网址:SQLZOO:SELECT from WORLD Tutorial/zh;
1.显示所有国家名称、州名称、国家人口
select name,continent,population
from world;
2.显示人口至少2亿的国家/地区的名称
SELECT name FROM world
WHERE population>200000000
3.查询出人口至少2亿的国家名称、人均生产总值
SELECT name ,gdp/population
FROM world
WHERE population>=200000000
4.查询南美洲国家名称、百万为单位的人口数量
SELECT name ,population/1000000
FROM world
WHERE continent = 'South America'
5.查询国家名称为('France', 'Germany', 'Italy') 的国家名称、人口数量
select name, population
from world
where name in ('France', 'Germany', 'Italy');
6.查询国家名称中包含‘United’的国家名称
select name
from world
where name like '%United%';
7.查询出 大国名称、人口、面积(大国的定义:面积大于300万平方公里或者人口超过2.5亿)
select name ,population ,area
from world
where area>3000000 or population>250000000
8.美國、印度和中國(USA, India, China)是人口又大,同時面積又大的國家。排除這些國家。
顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。
大国的定义:面积大于300万平方公里或者人口超过2.5亿
1.要么面积大于300万平方公里,但是同时 人口小于2.5亿(and)
2.要么人口超过2.5亿,但是同时面积要小于300万平方公里(and)
3.两个条件满足一个就可以 (or)
select name,population,area
from world
where (area>3000000 and population<=250000000)or(area<=3000000 and population>250000000);
9.除以為1000000(6個零)是以百萬計。除以1000000000(9個零)是以十億計。使用 ROUND 函數來顯示的數值到小數點後兩位。
對於南美顯示以百萬計人口,以十億計2位小數GDP。
select name,round(population/1000000,2),round(gdp/1000000000,2)
from world
where continent='South America';
10.顯示國家有至少一個萬億元國內生產總值(萬億,也就是12個零)的人均國內生產總值。四捨五入這個值到最接近1000。
顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。
select name,round(GDP/population,-3)
from world
where GDP>1000000000000
6.3、select names(字符串模糊查询)
网址:https://sqlzoo.net/wiki/SELECT_names/zh;
1.找出以 Y 字母开头的国家名称
SELECT name FROM world
WHERE name LIKE 'Y%'
2.找出以 Y 為結尾的國家。
SELECT name FROM world
WHERE name LIKE '%Y'
3.找出所有国家名字中包括字母x
SELECT name
FROM world
WHERE name LIKE '%x%';
4.找出所有國家,其名字以 land 作結尾。
SELECT name
FROM world
WHERE name LIKE '%land';
5.找出所有國家,其名字以 C 作開始,ia 作結尾。
SELECT name
FROM world
WHERE name LIKE 'C%ia';
6.找出所有國家,其名字包括字母oo。
SELECT name
FROM world
WHERE name LIKE '%oo%';
7.找出所有國家,其名字包括三個或以上的a。
SELECT name
FROM world
WHERE name LIKE '%a%a%a%';
8.找出所有國家,其名字以t作第二個字母。
SELECT name
FROM world
WHERE name LIKE '_t%'
ORDER BY name;
9.找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。
SELECT name
FROM world
WHERE name LIKE '%o__o%';
10.找出所有國家,其名字都是 4 個字母的。
SELECT name
FROM world
WHERE name LIKE '____';