DB: SQL: 最基本的Select,From,Where
就像我们现实生活把数据都存储到表中一样
我们的计算机时代的数据都存在数据表(Table), 比如我们这个名叫Word的数据表:

每一列都有一个名称,我们称之为 Column name 列名
----------------------------------------------
就好像我们现实生活中,所有的很多表都放在一起,放得多了,我们就把它叫做资料“库”,
我们的数据表文件其实也放在一起,n多个数据表放在一起,就构成了数据“库”,如下图可以很形象的表示出来,数据表table和数据库Database之间的关系:

----------------------------------------------
东西的存在都是为了满足需求的,比如我们有存储数据的需求,就产生了数据表和数据库。
当然了,我们的需求远远不会止步与存放数据,获取数据当然更是我们想要的,那我们通过什么手段从数据库中获取期待的信息呢?
就要通过我的SQL【Structured结构化Query查询Language语言】了
----------------------------------------------
我们会对world中的数据有如下需求:
阿尔及利亚Algeria的人口是多少?
对于我们的数据表而言,这个操作其实等于:

1. 找到 world表中的
2. name=Algeria那一行的
3. population 的值
这三句话就可以转化成我们的SQL语言:
1.
找到 world表中的
From world
载入表
2.
name=Algeria那一行的
Where name=’Algeria’
以某些选择行
3.
population 的值
select population
打印选择的行的某些列
但是大家要注意,SQL是很久以前就存在的一种语言了,他就有很多“远古”计算机科学界存在的很多问题,比如,逻辑并不是和我们的日常生活非常契合。
其中给一个典型的例子,就是SQL语句的顺序,并不是按照我们刚才的逻辑的1,2,3来走的,而是如下:

所以我们最近本的SQL的语法就是:
select 要选择的列名
from 要载入的表名
where 要选择的行依据的条件
----------------------------------------------
但是,写归这样写,我们在思考SQL的时候,永远是按照以下问题:
1. 要载入那个表?
2. 要以什么条件选出想要的列?
3. 要显示选出的列中的哪些行?
----------------------------------------------
比如,我如果想要获得:地理面积大于 5,000,000 km2 的国家的名字和人口,我们就要:
1.
要载入那个表? World
from world
2.
选择行的条件是什么? Population>5000000
where population>5000000
3.
要显示所选行的哪些列?name, population
select name, population
所以我们的SQL是:

就会得到如下结果【这里只截图了一部分】

我们把 where 的选行操作,叫做:selection
我们把 select 的选列操作,叫做:projection【这个select和selection的不对应,又是SQL遗留下来的问题很不幸的问题之一】
----------------------------------------------
我们之所以要按照以上的顺序想问题。是因为我们写的任何SQL,数据库系统也会这么去理解:
1. 通过from就载入我们想要查询的表
2. 通过where的条件,做selection
3. 通过select的内容,做project
比如我们写的:

1. 数据库系统就会读:from world,然后载入world表
2. 数据库系统就会读:where population>5000000,然后按照这句话为条件,一行一行的过滤我们的world表的population的值,并只保留>5000000的行
3. 把所有这些行的name和population一行一样的显示出来
----------------------------------------------
最后一个练习,对于以下诺贝尔表:

如何获得1960年的所有的winner和年份名单? 我们写的SQL就是如下:

得到的结果就如下:

本文来源 我爱IT技术网 http://www.52ij.com/jishu/1161.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
