良好的规则是只选所需

  • 栏目:数据 时间:2020-04-14 23:02
<返回列表

一、基本的SELECT语句

1. *的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯。

虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多。相应的,也会降低应用程序的性能及网络性能。

良好的规则是只选所需。

  1. join子句

jion是用来定义如何从多个表中选取数据并组合成一个结果集。

jion必需是因为(1)我们所要获取的所有信息并不都在一个表中,或者(2)所要返回的信息都在一个表中,但是其上设置的条件信息却在另一个表中。

jion的共同点是通过记录的连接列,把一条记录同一条或者多条其他记录进行匹配,从而产生出是这些记录的超级的记录。

2.1 INNER JOIN

INNER JOIN只返回进行联接的字段上匹配的记录。INNER JOIN是在做排除。

自引用是为了某种原因把一个表联接回它自身。

INNER JOIN是默认的联接方式。

韦德体育 ,2.2 OUTER JOIN

OUTER JOIN有左右联接之分,而INNER JOIN没有左右联接之分。

RIGHT(LEFT) OUTER JOIN是既想要包含右侧表中的所有行,以及左侧表中有匹配记录的行。

2.3 FULL JOIN

FULL JOIN联接,就是要包含位于联接两侧的表中所有的行。

2.4 CROSS JOIN

CROSS JOIN没有ON联接符,并且将join一侧表中的每一条记录与另一侧的表中所有的记录联接起来。即联接表中的笛卡尔积。

CROSS JOIN可用于提供样本数据和科学数据

  1. WHERE子句

一些常用且不太熟悉的操作符:

BETWEEN: 列 BETWEEN num1 AND num2

LIKE: LIKE ANY% %代表0个或者多个任意字符。_代表单个任意字符。[]表示括号中包含的任意单个字符。^排除下一个。

EXISTS: EXISTS 查询语句。

  1. ORDER BY

你知道吗?查询的返回结果通常是以字母或者数字顺序方式给出,这是偶然的。

以何种方式给出,在没有指定的情况下,通常取决于SQLServer认为哪一种汇集数据的方式开销最小。因此,返回的结果通常是基于表中数据的物理顺序或者SQLServer用来找寻数据所使用的某个索引。

默认降序DESC,升序是ASC

ORDER BY 子句可以基于查询中使用的任何表中的任何字段来进行排序,无论该列是否包含在SELECT列表中。

  1. 使用GROUP BY 子句聚集数据

一旦在查询语句中使用了GROUP BY,SELECT列表中的每一列要么包含在GROUP BY列表中,要不包含在聚集中。

当聚集不与GROUP BY一起使用时,聚集只能与其他聚集一起位于SELECT列表中,而不能与列名搭配出现在SELECT列表中。

除了COUNT(*) 之外,任何聚集函数都会忽略NULL值。

  1. HAVING子句

仅当查询语句中有GROUP BY子句时使用HAVING子句。

WHERE子句应用到形成组的每一行上,HAVING子句应用到组的聚集上。

  1. DISTINCT子句

DISTINCT消除重复数据。如果值是相同的,则该值出现一次。

DISTINCT出现在列表的开始处,或者出现在COUNT中。

二、基本的INSERT语句

  1. 基本结构

INSERT [INTO] table_name [table_column_list] VALUES (data_value_list)

INTO是可以省略的。

table_column_list建议都显式给出,一是增强可读性,二是以后即使是表的结构发生改变,也不会有所影响。

  1. INSERT INTO ... SELECT语句

批量插入数据。

INSERT [INTO] 表名 [列表名] SELECT 语句

三、UPDATE语句更改现有数据

UPDATE表名

SET 列 = 值 [, 列 = 值]

[FROM 一个或者多个表]

[WHERE 约束条件]

UPDATE 可以从一个表中生成数据,但是只影响一个表。

四、DELETE语句

DELETE

[FROM] 表名

[FROM] 表的列表/JOIN联接

WHERE 搜索条件

有关DELETE的一个小例子:

films表 actors表

filmId | filmname | yearmade filmId | firstname | lastname

1 'host' 1984 1 'li' 'si'

2 'shit' 1999 2 'wang' 'wu'

3 'liu' 'li'

从actors表中删除在films表中没有匹配的行:

DELETE FROM actors

FROM actors a

LEFT JOIN films f on a.filmId = f.filmId

WHERE f.filmname is null;

MySQL 语法:delete a.* from actors a left join films f on a.yearmade = f.yearmade where f. yearmade is null

MySQL不支持双FROM。

五、UNION

UNION可以让两个或者更多个查询产生单个结果集。

JOIN水平的合并数据,而UNION垂直的合并数据。

UNION的几个要点:

  1. 要进行UNION的SELECT 列表中列的数量是相通的。

  2. 合并的结果集返回的标头仅取第一个查询。

  3. 数据类型必须相同或者隐式兼容。

  4. 返回默认是DISTINCT而非ALL。

上一篇:代码如下复制代码,听说效率比较高的一个存储过程 下一篇:韦德体育9pt备份名称和位置/span

更多阅读

代码如下复制代码,听说效率比较高的一

数据 2020-04-14
文章有二个实例一个是sql2000的分页存储过程一个是sql2005的分页存储过程,有需要的同学可以拿...
查看全文

数据库名.dbo.表名),因为此组件已作为此

数据 2020-04-14
数据库教程1:AAA数据库2:BBB 如果出现错误提示: SQL Server 阻止了对组件 'Ad Hoc DistributedQuer...
查看全文

韦德体育9pt备份名称和位置/span

数据 2020-04-14
前台代码: %@ Page Language=C# AutoEventWireup=trueCodeBehind=SqlDbMgmt.asp教程x.cs Inherits=SysSourceMgmt.SqlDbMg...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有