SQL练习(一)

一、LIKE

1.Bahamas 巴哈馬”中有三個 a,還有嗎?

找出所有國家,其名字包括三個或以上的a。

语句:

SELECT name FROM world
  WHERE name LIKE '%a%a%a%';

2、“Mexico 墨西哥”的首都是”Mexico City”。

顯示所有國家名字,其首都是國家名字加上”City”。

concat函数:用于将两个或多个字符串合并成一个字符串。

SELECT CONCAT(string1, string2, string3, ...)
--string1、string2、string3是要合并的字符串。可以输入两个或多个参数,每个参数都必须是字符串类型。
 

 语句:

SELECT name
  FROM world
WHERE capital LIKE concat(name,' city');

3、找出所有首都和其國家名字,而首都要有國家名字中出現。

 语句:

SELECT capital,name
FROM world
WHERE capital LIKE concat('%',name,'%');

4、找出所有首都和其國家名字,而首都是國家名字的延伸。
你應顯示 Mexico City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。

语句:

SELECT name,capital
FROM world
WHERE capital LIKE concat(name,'_%');

5、"Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville".

顯示國家名字,及其延伸詞,如首都是國家名字的延伸。

你可以使用SQL函数REPLACE或 MID.

REPLACE函数用于在字符串中替换一个子串为另一个子串。它的语法如下:

REPLACE(原字符串, 要替换的字符串, 替换后的字符串)
 

MID函数用于截取字符串中的一部分,其语法如下:

MID(原字符串, 起始位置, 截取长度)
 

语句:

--REPLACE函数
SELECT name,REPLACE(capital,name,'')
FROM world
WHERE capital LIKE concat(name,'_%');

二、ORDER BY

1、The expression subject IN ('Chemistry','Physics') can be used as a value - it will be 0 or 1.

Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.

可以将表达式主题IN(“化学”,“物理”)用作值,可以是0或1。

查找1984年获奖者和主题,按主题和获胜者名称排序,并把化学奖和物理奖排到最后面显示

语句:

SELECT winner, subject
  FROM nobel
 WHERE yr=1984
 ORDER BY subject IN ('Physics','Chemistry'),subject,winner;
--先设subject为Physics和Chemistry值为1,其他种类值为0;然后先按升序排序subject同种类subject按winner升序排。

 

2、列出爵士的獲獎者、年份、獎頁(爵士的名字以Sir開始)。先顯示最新獲獎者,然後同年再按名稱順序排列。

语句:

SELECT winner,yr,subject
FROM nobel
WHERE winner LIKE "Sir%"
ORDER BY yr desc,winner;

三、SELECT WITH SELECT

1、Germany德國(人口8000萬),在Europe歐洲國家的人口最多。Austria奧地利(人口850萬)擁有德國總人口的11%。

顯示歐洲的國家名稱name和每個國家的人口population。以德國的人口的百分比作人口顯示。

(1)ROUND函数:用于将一个数值数据类型的值四舍五入到指定的小数位数。

ROUND(expression, [decimal_places])
--expression表示要进行四舍五入的数值表达式,decimal_places表示要保留的小数位数。如果省略decimal_places参数,则默认将数值四舍五入到整数。
 

语句:

select name,concat(round(population/(select population from world where name='Germany')*100),'%') 
from world
where continent='Europe';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值