目录:
1.基本查询语句
2.如何指定查询条件
3.如何注释sql语句
4.运算符
5.字符串模糊查询
一、如何查询指定的表
使用 select 语句 ,其中 * 代表查询整个表
SELECT *
FROM student;
也可以查询单独列名称,如:
SELECT 学号,姓名
FROM student;
若需要在学号列去重,则 加distinct
SELECT distinct 学号,姓名
FROM student;
二、理解sql运行书写顺序
sql的运行顺序与书写顺序的区别
/*
该注释为标识书写顺序
/
SELECT distinct 学号,姓名 -- 第三步:选择那个列
FROM student -- 第一步:选择那个表
where 姓名="侯赛因";-- 第二步:查询出符合条件的行
三、理解算术运算符和比较运算符
01.算术运算符用于数据计算
比如,你想按百分比方式计算用户成绩 ,则:
SELECT 学号,成绩,
成绩/100 as '百分比成绩'
FROM course;
02.比较运算符
需要where语句,比较常用
如做表的筛选,例如“你要选出班里谁的成绩在优秀以上”则:
SELECT 学号,成绩
FROM course
WHERE 成绩 > 85 ;
再或者,例如“你要选出班里是90后”则:
SELECT 学号,姓名,出生日期
FROM student
WHERE 出生日期 >='1990-01-01';
03.逻辑运算符
not -- 否定某一个条件 (否定)
and -- 并且(交集)
between -- 范围查询
or -- 或者(并集)
in -- or的简单写法
以and语句为例,我们刚刚查询了,班里谁是90后,现在我们通过and继续查,90后谁是男生,则:
SELECT 学号,姓名,出生日期,性别
FROM student
WHERE 出生日期 >='1990-01-01'
AND 性别 = '男' ;
再比如,你想查找具体某个人,则:
SELECT 学号,姓名,出生日期,性别
FROM student
WHERE 姓名 in ('侯赛因','马老板');
四、模糊查询
如果你们班级里人太多了,你不记得对方叫什么,你可以用like 语句
比如:
姓% -- 可以查处以姓氏为关键词查找
%名字 -- 可以查处以名字为关键词查找
%名% -- 查中间带 “名”的关键词查询
例如,你忘了你们班,叫 马某某 怎么称号了,于是可以
SELECT 学号,姓名,出生日期,性别
FROM student
WHERE 姓名 LIKE '马%'
AND 性别 = '男' ;
五、sqlzoo 练习 SELECT basics
WORLD表格
name:國家名稱
continent:洲份
area:面積
population:人口
gdp:國內生產總值
1.這個例子顯示’France法國’的人口。字串應該在'單引號'中。
/*
修改此例子,以顯示德國 Germany 的人口。
考察 name = x
*/
select population
from world
where name = 'Germany';
2.查詢顯示面積為 5,000,000 以上平方公里的國家,該國家的人口密度
/*
修改此例子,查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示她的名字和人均國內生產總值(gdp/population)。
考察 area > x
*/
select name, gdp/population as 'gdp/population'
from world
where area>5000000;
3.檢查列表:單詞“IN”可以讓我們檢查一個項目是否在列表中。
/*
顯示“Ireland 愛爾蘭”,“Iceland 冰島”,“Denmark 丹麥”的國家名稱和人口。
考察where name in
*/
select name, population
from world
where name in ('Ireland' , 'Iceland' , 'Denmark');
4.哪些國家是不是太小,又不是太大?
/*
以顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。
考察 between xxx and xxx
*/
select name , area
from world
where area between 200000 and 250000;
六、sqlzoo 练习 SELECT from WORLD Tutorial
1.觀察運行一個簡單的SQL命令的結果。
/*
考察select语句
*/
SELECT name, continent, population FROM world
2.考察如何使用where 语句
/*
顯示具有至少2億人口的國家名稱。 2億是200000000,有八個零。
*/
select name
from world
where population>200000000;
3.找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。
select name , gdp/population as'人均生产总值'
from world
where population>200000000;
4.顯示'South America'南美洲大陸的國家名字和以百萬為單位人口數。 將人口population 除以一百萬(1000000)得可得到以百萬為單位人口數。
select name , population/1000000 as'百萬為單位人口數'
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.成為大國的兩種方式:如果它有3百萬平方公里以上的面積,或擁有250百萬(2.5億)以上人口。
/*
展示大國的名稱,人口和面積。
*/
select name , population , area
from world
where area>3000000 or population>250000000;
8.美國、印度和中國(USA, India, China)是人口又大,同時面積又大的國家。排除這些國家。
考察组合式逻辑运算
/*
顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。
*/
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。
【知识点】round函数
select name , round(population/1000000,2) as '百萬計人口' ,round(gdp/1000000000,2) as'gdp'
from world
where continent = 'South America';
10.顯示國家有至少一個萬億元國內生產總值(萬億,也就是12個零)的人均國內生產總值。四捨五入這個值到最接近1000。
顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。
select name , round(gdp/population,-3) as '人均生产总值'
from world
where gdp>1000000000000 ;
七.模糊查询
1.找出以 Y 為開首的國家。
SELECT name FROM world
WHERE name LIKE 'Y%';
2.找出以 Y 為結尾的國家。
SELECT name FROM world
WHERE name LIKE '%Y';
3.“Luxembourg 盧森堡”中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。
找出所有國家,其名字包括字母x。
SELECT name FROM world
WHERE name LIKE '%x%';
4.“Iceland 冰島”和“Switzerland 瑞士”的名字都是以”land”作結束的。還有其他嗎?
找出所有國家,其名字以 land 作結尾。
SELECT name FROM world
WHERE name LIKE '%land';
5.“Columbia 哥倫比亞”是以 C 作開始,ia 作結尾的。還有兩個國家相同。
找出所有國家,其名字以 C 作開始,ia 作結尾。
SELECT name FROM world
WHERE name LIKE 'C%ia';
6.“Greece 希臘”中有雙 e 字。哪個國家有雙 o 字呢?
找出所有國家,其名字包括字母oo。
SELECT name FROM world
WHERE name LIKE '%oo%';
7.“Bahamas 巴哈馬”中有三個 a,還有嗎?
找出所有國家,其名字包括三個或以上的a。
SELECT name FROM world
WHERE name LIKE '%a%a%a%';
8.“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。
SELECT name FROM world
WHERE name LIKE '_n%'
ORDER BY name;
9.“Lesotho 賴索托”和”Moldova 摩爾多瓦”都有兩個字母 o,被另外兩個字母相隔着。
找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。
SELECT name FROM world
WHERE name LIKE '%o__o%';
10.“Cuba古巴”和”Togo 多哥”都是 4 個字母。
找出所有國家,其名字都是 4 個字母的。
SELECT name FROM world
WHERE name LIKE '____';
11.“Luxembourg 盧森堡”的首都 capital 都同樣叫“Luxembourg”。
顯示所有國家名字,其首都和國家名字是相同的。
SELECT name FROM world
WHERE name =capital;
12.“Mexico 墨西哥”的首都是”Mexico City”。
顯示所有國家名字,其首都是國家名字加上”City”。
SELECT name FROM world
WHERE capital like '%City';