计算机, 文件类型
SQL不同:说明书,实施例,特性
通常,当您使用SQL从表中检索数据,用户将收到冗余数据是绝对相同的重复行的存在。 为了避免这种情况,可以使用SQL不同的说法在句子中选择。 本文将讨论哪些应用程序应该由参数放弃使用这一论点的例子,还有的情况。
在我们着手考虑具体的例子,创建所需的情侣对表的数据库。
编制表
假设我们有数据库存储有关两个表中提出的墙纸信息。 此表鳌拜(壁纸)与ID字段(唯一标识符),类型(类型壁纸。 - 纸,乙烯基等)的,颜色(颜色),一个struct(结构)和价(价格)。 和表Ostatki(残基)与id_oboi字段和计数(轧辊的库存的数量)(在表中鳌拜所述唯一标识符的引用)。
填写的数据表。 在表中添加壁纸9条:
鳌拜 | ||||
ID | 类型 | 颜色 | 结构 | 价格 |
1 | 纸 | 彩色 | 压花 | 56.9 |
2 | 纸双层 | 米色 | 光滑 | 114.8 |
3 | 乙烯基 | 橙 | 压花 | 504 |
4 | 羊毛 | 米色 | 压花 | 1020.9 |
五 | 纸双层 | 米色 | 光滑 | 150.6 |
6 | 纸 | 彩色 | 光滑 | 95.4 |
7 | 乙烯基 | 棕色 | 光滑 | 372 |
8 | 羊毛 | 白 | 压花 | 980.1 |
9 | 布 | 粉红色 | 光滑 | 1166.5 |
与遗体的表格 - 九个记录:
Ostatki | |
id_oboi | 算 |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
五 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
我们继续在SQL的不同顺序的描述。
将SELECT子句中的不同
不同的参数应该立即在查询选择关键字后放置。 他申请在句子中选择指定的所有列,因为它会从最终的查询结果中排除是绝对相同的字符串。 因此,一次就够了指定写SQL语句时,«选择不同»请求。 唯一的例外是使用的是看待会儿不同的内部聚合函数。
应当记住,大多数的数据库,不承认你的请求类型:
SELECT DISTINCT Ostatki.Count,不同的鳌拜。* 从鳌拜 INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
有没有考虑参数多次或指定一次,但第二,第三或其他选定列前。 你会得到一个错误指的是一个错误的语法。
在标准应用不同的查询
很显然,通过适当的建筑结构表和一个表内填充它们排除在外的情况时有绝对相同的字符串。 因此,查询执行与一个表的样本«SELECT DISTINCT *»是不切实际的。
考虑以下情况,当我们需要知道什么类型的,我们有壁纸,只是为了方便,按类型排序:
SELECT Oboi.type 从类型鳌拜秩序 |
而得到的结果:
类型 |
纸 |
纸 |
纸双层 |
纸双层 |
乙烯基 |
乙烯基 |
布 |
羊毛 |
羊毛 |
如表中看到有重复的行。 如果再加上建议选择不同的:
SELECT DISTINCT Oboi.type 从类型鳌拜秩序 |
我们得到的没有重复的结果:
类型 |
纸 |
纸双层 |
乙烯基 |
布 |
羊毛 |
因此,如果在一个表中正确输入数据,然后买家的电话或请求之后,立即就可以回答这个问题在商店中可用的液体壁纸,玻璃纤维和丙烯酸壁纸都没有。 由于商铺的范围通常不限一百壁纸,查看非唯一类型的列表将是相当费力。
的内的不同集合函数应用
SQL不同参数可与任何集合函数中使用。 但对于最小和最大的应用将没有任何效果,但在计算总和或平均值时,很少的情况下没有人会考虑到的重复。
假设我们要检查我们的仓库的容量,并提出了这个要求,计算库存线圈的总数:
SELECT SUM(Ostatki.count) 从Ostatki |
请求会给出答案143.但是,如果我们将变更为:
SELECT SUM(不同Ostatki.count) 从Ostatki |
我们获得总119,如墙纸为部件号3和7是在库存中相同的量。 然而,很明显,答案是错的。
最常见的SQL不同的功能计数使用。 因此,我们可以很容易地找出有多少独特类型的壁纸,我们确实有:
SELECT COUNT(DISTINCT Oboi.type) 从鳌拜 |
和得到的5的结果 - 普通纸和双层乙烯基和非织造织物。 当然都看到了广告,如:“我们已经有超过20种不同的壁纸”,这是指,这个店是不是只是一个几十卷及各种墙纸现代类型。
有趣的是,在相同的查询,你可以像计数属性DISTINCT指定多个功能,没有它。 这是唯一的情况下在Select'e不同可能存在多次。
当放弃使用的说法
从使用SQL不同的说法应该在两种情况之一被抛弃:
- 您进行选择表,并在每个独特的价值充满信心。 在这种情况下,使用参数的不恰当的,因为它是服务器或客户机(取决于DBMS的类型)上的附加负载。
- 你害怕失去你的数据。 让我们来解释一下。
假设老板让你列出你的壁纸,只有两列的指示 - 类型和颜色。 出于习惯,你给不同的参数:
SELECT DISTINCT Oboi.type,Oboi.color 从鳌拜 ORDER BY Oboi.type |
和 - 丢失一些数据:
类型 | 颜色 |
纸 | 彩色 |
纸双层 | 米色 |
乙烯基 | 棕色 |
乙烯基 | 橙 |
布 | 粉红色 |
羊毛 | 米色 |
羊毛 | 白 |
它可能给人的印象是,纸壁纸(常规和双层),我们只有一个想法,事实上,即使是在我们的两篇文章的小桌子(无结果不同):
类型 | 颜色 |
纸 | 彩色 |
纸 | 彩色 |
纸双层 | 米色 |
纸双层 | 米色 |
乙烯基 | 棕色 |
乙烯基 | 橙 |
布 | 粉红色 |
羊毛 | 白 |
羊毛 | 米色 |
因此,在写作的说法不同需要小心和有能力决定其应用程序,这取决于任务的任何请求。
替代不同
相反的说法截然不同 - 所有的说法。 在其应用程序重复的行存储。 但作为默认数据库,并认为有必要显示所有的值,参数全部 - 它,而不是实际的函数参数限定词。
Similar articles
Trending Now