# 8 月 12 日

# 基础查询语法

SELECT * FROM world

(输出整个 world 表格)

SELECT name , gdp FROM world WHERE population >5000000

(输出表格 world 中的 name 和 gdp 两列,筛选条件是 population 数量大于五百万)

SELECT name FROM world
WHERE name LIKE 'C%ia'

(输出表格 world 中的 name 一列,筛选条件是名称由 C 开头,ia 结尾)

% 是万能占位符,可以代表一个或多个字符,比如 “% d” 就是代表所有结尾是字母 d 的单词
同时,"__" 下划线也是万能占位符,表示一个字符,比如 “% o__o%” 代表所有包含 o 什么什么 o 这四个字母的单词

多重筛选
美國、印度和中國 (USA, India, China) 是人口又大,同時面積又大的國家。排除這些國家。

顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積
SELECT name, population ,area
FROM world
WHERE area >3000000 AND population <250000000
OR area<3000000 AND population>250000000

因为 AND 的优先级高于 OR,所以会先运算 AND 再运算 OR,正好可以筛选出来只符合两个条件中一个的国家

# ROUND 函数:

ROUND(1000.22222,2)
输出为: 1000.22 在 mysql 中是四舍五入到两位小数,但是别的数据库系统可能是直接截取到两位小数
如果想保留一千为单位的整数,例如本来是 123300,编程 123000,你可以使用
ROUND(float,-3)
如果 3 表示保留三位小数(千分位),那么 - 3 是不是就代表千位呢?(我真聪明)
或者可以用数学的办法
ROUND(gdp/population/1000,0)* 1000 AS THOGPP
gdp/population :计算人均 gdp
ROUND(gdp/population/1000,0) 人均 GDP 除以一千保留整数

ROUND(gdp/population/1000,0)* 1000 人均 GDP 保留千位数
最后随便命了个名,起名为千 G 每人 :THOusand Gdp Per Person 抽象

SQL 报错又找不到问题的时候,想一想有没有少用括号或者用中文的字符

# 8 月 14 日

SELECT yr,subject,winner
FROM nobel
WHERE (yr between 1980 AND 1989 )AND (subject = 'literature')

  • 上面 sql 指令的意思是,罗列出 1980 年至 1989 年诺贝尔文学奖的年份,学科和获奖人
    between 并没有左闭右开之类,直接说什么就是什么。爽

WHERE subject NOT IN (‘literature’,‘peace’)
WHERE NOT subject IN (‘literature’,‘peace’)
上面两行代码具有相同的效力,但是意思不完全相同
第一行是说,subject 不在 文学奖或和平奖里
第二行是说,否定了 subject 在文学奖或者和平奖里

# 非 ascll 编码

  • 好烦。看不懂维基百科上的介绍
  • 太好了直接复制粘贴就可以

# 字符串中带单引号

EUGENE O'NEILL 这是一个诺贝尔奖获得者的名字,里面带一个单引号
表示方式一: name = ‘EUGENE O'’NEILL‘ (把字符串中的单引号变成两个单引号)
表示方式二: name =“EUGENE O'NEILL” (外边用双引号括起来)

# 排序

ORDER BY xx 以 xx 为条件排序,
ORDER BY year DESC 以年份为条件降序排序(显示最新的)
ORDER BY year DESC ,winner 以年份为条件降序排序,同年份的用获奖者名字排序 ORDER BY -year ,winner 和上面那句一样的效果

# 布尔值

subject in (‘literature’,‘chemistry’)算是一种布尔值,放到 select 语句中会生成一列 0 或者 1,判断这个诺贝尔奖获奖者的学科是不是属于化学或者物理。可以用这个来排序
ORDER BY
CASE WHEN subject IN (‘literature’,‘chemistry’)THEN 1
ELSE 0
因为 0 比 1 打,sql 默认升序排序,所以这个排序会把化学和物理的奖项排到输出列表的最后。

Edited on

Give me a cup of [coffee]~(锟b柦锟?~*

Tartar0us WeChat Pay

WeChat Pay

Tartar0us Alipay

Alipay

Tartar0us PayPal

PayPal