SQL高级学习(二)

SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

SQL UNION 实例

下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

SQL UNION ALL 实例

下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的country(也有重复的值):

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps

ORDER BY country;

带有 WHERE 的 SQL UNION ALL

下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值):

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'

ORDER BY country;

注:使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。

另外,在使用ORDER BY排序时,注意两个结果的别名保持一致,使用别名排序很方便。当然也可以使用列数。

SQL SELECT INTO 语句


通过 SQL,您可以从一个表复制信息到另一个表。

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。


SQL SELECT INTO 语句

MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。

当然你可以使用以下语句来拷贝表结构及数据:

CREATE TABLE 新表 SELECT * FROM 旧表 

SQL SELECT INTO 语法

我们可以复制所有的列插入到新表中:

SELECT *
INTO newtable [IN externaldb]
FROM table1;

或者只复制希望的列插入到新表中:

SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;

lamp

提示:新表将会使用 SELECT 语句中定义的列名称和类型进行创建。您可以使用 AS 子句来应用新名称。

SQL SELECT INTO 实例

创建 Websites 的备份复件:

SELECT *
INTO WebsitesBackup2016
FROM Websites;

只复制一些列插入到新表中:

SELECT name, url
INTO WebsitesBackup2016
FROM Websites;

只复制中国的网站插入到新表中:

SELECT *
INTO WebsitesBackup2016
FROM Websites
WHERE country='CN';

复制多个表中的数据插入到新表中:

SELECT Websites.name, access_log.count, access_log.date
INTO WebsitesBackup2016
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id;

提示:SELECT INTO 语句可用于通过另一种模式创建一个新的空表。只需要添加促使查询没有数据返回的 WHERE 子句即可:

SELECT *
INTO newtable
FROM table1
WHERE 1=0;

SQL INSERT INTO SELECT 语句


通过 SQL,您可以从一个表复制信息到另一个表。

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。


SQL INSERT INTO SELECT 语句

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

SQL INSERT INTO SELECT 语法

我们可以从一个表中复制所有的列插入到另一个已存在的表中:

INSERT INTO table2
SELECT * FROM table1;

或者我们可以只复制希望的列插入到另一个已存在的表中:

INSERT INTO table2
(column_name(s))

SELECT column_name(s)
FROM table1;

SQL INSERT INTO SELECT 实例

复制 "apps" 中的数据插入到 "Websites" 中:

实例

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;

只复 QQ 的 APP 到 "Websites" 中:

实例

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;

SQL CREATE DATABASE 语句


SQL CREATE DATABASE 语句

CREATE DATABASE 语句用于创建数据库。

SQL CREATE DATABASE 语法

CREATE DATABASE dbname;


SQL CREATE DATABASE 实例

下面的 SQL 语句创建一个名为 "my_db" 的数据库:

CREATE DATABASE my_db;

数据库表可以通过 CREATE TABLE 语句来添加。

SQL CREATE TABLE 语句


SQL CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。

表由行和列组成,每个表都必须有个表名。

SQL CREATE TABLE 语法

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

column_name 参数规定表中列的名称。

data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。

size 参数规定表中列的最大长度。

提示:如需了解 MS Access、MySQL 和 SQL Server 中可用的数据类型,请访问我们完整的 数据类型参考手册


SQL CREATE TABLE 实例

现在我们想要创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。

我们使用下面的 CREATE TABLE 语句:

实例

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

PersonID 列的数据类型是 int,包含整数。

LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。

空的 "Persons" 表如下所示:

PersonIDLastNameFirstNameAddressCity
     

提示:可使用 INSERT INTO 语句向空表写入数据。

转333333333333333333333333











神经网络与高级思维(二)

07-19

三、 神经网络的基本工作原理rnrn1、 反射rnrn自然界中,事物的发展、能量的转化、信息的传递等等各种的自然现象都包含着因果关系,只要时间没有停滞,这种关系将广泛存在,从“因”到“果”,贯穿着事物的发展过程,当过程长且复杂时我们称之为“事件”,反之则称之为“触发”。rnrn生物个体在与外界环境或是个体自身进行物质或信息交换时,也存在着这种现象,在这里我们称之为“反射”。rnrn反射是最基本的神经活动,现行的说法是将反射分为两种,无条件反射和条件反射,其中,无条件反射是动物和人生下来就具有的,即遗传下来的对外部生活条件特有的稳定的反应方式,在心理发展的早期阶段,这种反应方式提供最基本的生存技能,也就是本能,如:食物反射、防御反射、定向反射,还有一些可能是在人类进化过程中,曾经有一定生物适应意义的无条件反射,如:巴宾斯基反射、抓握反射、惊跳反射(又叫摩罗反射)、游泳反射、行走反射等,此外,还有其他一些无条件反射,如眨眼反射、瞳孔反射、吞咽反射、打嗝、喷嚏等等。rnrn条件反射是后天训练出来的,著名科学家巴甫洛夫就曾对条件反射的形成、消退、自然恢复、泛化、分化以及各种抑制现象进行过相当细致、系统的实验研究,。rnrn无论是条件反射还是无条件反射,从主观上都可以看作是一种因果作用关系,即都存在着触发条件,都会导致某一结果的产生,所以无条件反射其实也属于条件反射范畴。只有在成因上,无条件反射是根据遗传信息形成的神经网络结构,而条件反射是后天在先前的网络基础上,依据外界环境继续发展完善的神经网络结构。两者之间是继承和发展的关系,但从这两个阶段所形成的神经网络功能来看,对外界的刺激都具备输入、传递、输出这一处理过程即反射过程,所以从某种意义上讲,也可以把无条件反射归类到条件反射范畴中去,或者说条件反射等同于反射。rnrn神经系统中的条件反射具有三个要素:输入、传递、输出。其中的每一个要素既可以用单个神经元表示,也可以用一个神经群落来表示。当用少数几个神经元表示时,对应的是生物个体对局部刺激的反应,当扩展到神经群落时,对应的就可能就是对某一激发事件的处理方法了。rnrn反射中的输入,最能使我们联想到传入神经元(感觉神经元),但在这里,它可以指单个的感觉神经元,也可以指一种感官(眼睛中的视神经群落、耳中的听觉神经中枢、皮肤中与各类感受器连接的神经群落等等),甚至可以是大脑中某一区域内形成某一表象或是概念的神经群落。反射中的输出同样可以指传出神经元(即脊髓前角或脑干的运动神经元),也可以指大脑中某一区域内形成某一概念或是表象的神经群落。反射中的中间传递过程是信息的加工处理的过程,可以由单个神经元、神经链路或是神经网络来承担,甚至可以直接由输入与输出的对应载体来分担。这样生物神经系统中的反射弧只是它的一个子项罢了,条件反射在主观上也对应着我们常说的“产生、经过与结果”即因果关系。 rnrn2、 认知rnrn有一个低等生物海兔的记忆试验:海兔本身具有被触摸(水管部分)后的鳃缩反射,但连续十几次的刺激后,鳃缩反应就逐渐减慢.经过研究发现,海兔的习惯化是由于神经递质发生变化所致.进一步的研究发现这种变化是突触中的感觉神经元的Ca离子门关闭,导致递质的释放量减少所致.上述试验说明简单的记忆与神经递质和突触有关.又如大鼠的大脑皮质切除试验:用迷宫训练大鼠,如果大鼠学会并记住顺利走出迷宫的道路后,切除它的大脑皮质,记忆就会消退.不论切除的是大脑皮质的哪一部分,总是切除的多,记忆消退的多;切除的少,记忆消退的就少。rnrn首先,认知通常强调的是结果,是神经网络定型后的结果。神经网络的定型过程就是认知的建立过程,也就是生物个体的学习过程,它同时表现了出生物的记忆过程。定型好的神经网络对触发信息的处理过程即反射过程,就是记忆的提取过程,也正是通过这一过程反映出了认知的存在。rnrn生物个体对客观事物的认知可以解释为:客观事物在主观意识中形成了表象,并且该表象与一系列的活动(生理的或心理的)相联系。换句话说,某一客观事物的信息如果经过大脑处理能够引发出一系列的动作(这是一种反射现象,符合前面对反射的定义),我们就可以说对这一事物已经认知了。rnrn行为主义与符号主义中对认知建立过程中所显现出的记忆现象都有很详细的类别划分,其中每一种记忆类别都仅与一种认知的建立模式相对应。所以,与其用记忆类别来划分还不如用认知类别来划分更为合理,在这里由于篇幅所限,我仅将认知简单概括为以下三种类别:物体认知、事件认知以及两种认知的衍生产物抽象事物认知。 rnrna、 物体认知rnrn感受外界客观环境最简单的办法是通过感官直接去“接触”物质对象,并通过大脑处理,并最终导致一个或一系列的结果,这种因果过程就是对客观物体的认知。如:看到一个苹果,我们产生了拿的动作,同时也可以产生许多其他的动作如激活色彩感觉中枢、激活味觉中枢等等,当可以有这些动作产生时,就完成了对苹果的认知。rnrn下面我们将详细讲解神经网络对物体认知的描述。rnrn一个输入集合I(触觉、视觉等的感应细胞构成的集合或是处于某一层次上的神经元集合)对之内两个不同区域(A、B)的刺激做出相应Y与X两种不同反应的神经处理过程, 如图2。rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn rnrn图2 的a、b、c为三种AB可能存在的输入情况。图2a中A、B分别对应Y、X,神经链路没有重叠,刺激A时得到Y的输出,刺激B时得到X的输出,结果不会出现问题,请注意:带有方向的黑线只是代表逻辑上的链路,在实际中,链路与链路之间有质的区别,这里只做简单的等价说明,用数量表示质量。图2b中A、B间有了交叉,在处理过程中,当A受到刺激会产生Y的输出,同时会有三条逻辑链路去刺激X,但做为X的全部决定因素,这三条相比从B到X余下的空闲联络,只占很小的一部分,它们还不足以激活X,所以分别刺激A、B仍然会得到正确的输出。对于X这种在某一层次上的输出神经元来说,是否能被激活,主要取决于所有处于不同状态的输入链路的能量对比,在这里能量被量化为逻辑链路的数量,这样每个神经元对值的判断则等价为判断处于激活状态的逻辑链路数是否过半。此类神经链路就是兴奋类传导神经网络,单纯采用此类神经链路的系统只需要根据相应刺激感受区域是否有刺激发生,就可以得出正确的输出结果,但是在图2c中,刺激区域A包含着B的情况下,如果刺激B区会有正确输出X,然而如果刺激A区则会出错,Y与X会同时有效,这时我们就需要一种链路来阻止这种错误的发生,这就是抑制类神经链路,如图2c中的虚线箭头所示,抑制类逻辑链路只起到冲减、抵消兴奋类逻辑链路数量的作用,使得X在冲减后的兴奋链路合计数小于阀值,从而达到唯一正确输出Y得目的。rnrn在图2中列举的神经网络认知模式中,虽然只涉及到了输入与输出,但在两者之间已经包含了计算的成分,或是说承担了传递计算的功能,此外不难发现:能够对某一物体认知,必须要首先区分开其他物体,尤其是符合图2c中的情况,物体间的差异正好可以满足这一需求。这样,即使是从同一个感官传来的信息,也能做到很好的区分。rnrn当认知的对象较为复杂时(如苹果),对象包含有各种各样的属性,其中的每一种属性的响应过程,在局部都遵循着反射的定义。当在某一时刻,与苹果相关的各种属性的神经子网络被大部分激活时,苹果的表象就成了焦点。更确切的讲是,感官捕捉的信息在传递的过程中,经过了代表各种属性的神经子网络,一些属性因条件不满足而停止传递,最后由可以通过的(即被确认的属性)神经子网络继续向后传递,最后再引发一系列的动作,其中反射可以指局部的传递(单个属性的确认),也可以指整个传递过程(看到苹果后,可以去拿可以去想等等)。rnrn苹果在人脑中形成的表象,其实就是指感官根据苹果实物产生的电信号所能经过的神经链路,神经链路与神经网络的关系相当于行走路径与公路网的关系。此外其他的神经区域输出的电信号如果在传递过程中也能引发出与前面提到的“苹果神经链路”相同或相似动作或是功能的话,也可以说是形成了苹果的表象,这种现象可以使我们认知客观世界不存在的事物或个体自身从未接触过的事物。rnrnb、 事件认知rnrn任何事物在一段时间内发生了变动,在这里都可以被称之为事件。因果关系同样也具备事件的属性,如果能深入分析一下各种事件的过程,基本上都能找到因果关系的影子。在前面对物体的认知中,我们知道了神经网络认知物体是以因果关系的方式建立的网络链路,为了不引起混淆,下面以因果关系为认知对象的,我们用事件来代替,对事件的认知过程,近似于对物体的认知过程,相当于把事件等同于物体,由于事件具有时间性,所以神经网络就必须能够处理时间问题。rnrn神经元的形状各异,轴突有长有短,且对信息的加工时间与传递速度也各不相同,这样对同一起点不同的传递路径,信息的传递速度可能不同。还以图2为例,现在假设每一个箭头除了代表一个神经元连接外,还代表一个单位传递时间,当首先刺激A区后并在第二个单位时间内刺激B区,将两次触发过程当作一个事件,导致一个输出Y;同法当先刺激B区,然后在刺激A区时会有另一个输出X ,如图3 rnrn rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试