在网上造成数以万计以后要求编程的帮助和我亲自有关于人们怎样应该学会编程,并且他们怎样的许多理论和想法应该考虑问题他们发现自己。 这个岗位是将调查共同地被要求的问题并且给诀窍的许多,如果读应该解决有些。
我的经验在SQL数据库附近集中,并且,因为这样是我认为的其中一个区域人们应该了解中央想法,在他们开始问其他的问题之前。 概念上,有在被用于创造修改并且毁坏桌和数据库SQL语言的所有变形的十个主要主题词; 并且对输入,从那些桌修改并且取消数据。
您比被写只准备进步与您的SQL,如果您可以读这篇整体文章和能辨认下面词,写更多,解释什么他们意味并且使用他们在选择您的数据库中与其他来源无关。 (大多我的例子将是瞄准的ANSI标准SQL或mySQL)有在这些题目可以读的更多,但是下面是必要的光秃的必要通过您。
1.创造桌
在您能开始以与数据一起使用之前,您需要容器存放它。 容器在SQL数据库中称桌。 这是一系列的行(其中存放数据每个项目)和是各种各样的数据类型被用于辨认特殊行和包含数据的专栏。 创造声明使桌被做,指定关于怎样的所有规则可以标注什么在桌里可以包含(并且它)。
因为这是基本的引导; 我将概述一简单创造声明,并且什么组分意味;
创造桌your_table_name (不空的INT, b VARCHAR (20));
这用二个专栏将创造称是整数,不会允许任何空值和b是串可能包含字符由长度的20决定的your_table_name的一张桌。
笔记; 有其他选择,
- 您能有指定创造桌的论据,如果它已经不存在。
- 是象其他桌的表可以被创造(复制他们的定义)
- 表可以被创造通过使用一个精选的声明和复制从它返回的数据
- 临时表是给盘没有被写并且没有永久地被保留象桌没有临时主题词的那些和没有被设计永久。
- 限制和评论可以增加到专栏和到整体上桌
- 一个主关键字和其他索引可以增加; 限制数据和增加它的searchability的复制。
- 外国钥匙可以是根据价值将被插入的增加的制约的价值包含在其他桌内。
- 有可以被用于举行数据为专栏的许多不同的datatypes
- 缺省值可以为数据被设置。
- 如果桌已经存在您不可能然后创造它-,并且错误也许生成。
- 一些数据库需要指定所有者作为桌名字(例如dbo ie dbo.your_table_name)一部分
2.修改桌
一旦桌被创造了,改变也许变得必要数据怎么可以输入入桌或怎么存放数据。 修改桌是这些变动的机制
修改桌your_table_name增加ColumnName VARCHAR (10)不是零位;
修改桌your_table_name下落ColumnName;
修改桌your_table_name下落主关键字;
如果您增加专栏或增加事到的桌然后同样规则申请至于为创造。 同样声明选择可以给予,与同样索引类型和制约。
您能通过名义上提到他们去除专栏。
您能通过指定那去除索引和制约在下落。
对笔记的有些事:
- 您不可能通常有与同样命名的二个专栏(这是相关创造和修改)
- 您可以有问题去除某些专栏,如果他们其他外国钥匙参考的区域
- 当索引依靠意欲的专栏滴下时,问题可能发生。
- 索引可能不一定增加在桌里包含的数据是否不反射变动强加的制约。
3.下落桌
下落桌your_table_name;
下落桌,如果存在your_table_name;
放弃桌是一样容易象提到您想要去除和说下落桌的桌。 确定您有允许投下桌或它不可以容易地去那。 一些SQL数据库支持,如果存在句法意思它不会给一个错误,如果桌不存在,并且您设法去除它,但是,如果它然后存在去除它。 同样,如果您去除有附庸在他们ie外国钥匙然后的桌他们可能不迅速去那。
4.插入物到里
通常,点所有您的SQL数据库技能是与数据一起使用。 有使能数据的人口的许多声明,但是最常用是插入物声明。 这正确地做什么它暗示,它插入数据行入桌。 有三个主要变形。 第一变异指定专栏数据将被插入入,包括他们的顺序,并且其他指定将进入那些专栏的数据。
插入物到your_table_name (first_column_name, another_column_name里,…. )
价值(first_value, second_value,…. )
隔绝将被插入的数据另一个方法是通过提到在数据库内已经包含的数据。 这使用一个正常精选的声明如下面定义:
插入物到your_table_name (col_name1, col_name2里,…. ) 精选…
最后的方法将使用使用均等任务,设置每个专栏的价值需要被修改到另一价值的声明。 我不会推荐使用这个方法。
对笔记的事:
- 一些SQL数据库允许多行的插入在一个声明的施行的。
- 插入数据是由附庸,检查控制的,并且关系,并且,如果数据发生故障这些检查然后错误也许发生。
- 确定数据在专栏类型定义的类型。
- 不是所有的专栏必要需要居住于
- 有可能操作数据的形式的许多作用。
- 数据需要以可以被转换成正确数据类型-事的格式,如`23 ′跟23也许不同地被解释
- 在数据之内的单引号可能提出插入问题,并且有可能处理此的作用。
- 总是确认来自不信任的来源的所有数据(ie用户)
- 如果自增或身分领域那么没有指定他们在桌里通常将默认为上限值并且加一。
- 注意转换作用在数据库也许也需要使用,如果挑选从不是相同的象他们的目的地的专栏。
- 专栏比他们在目标表里也出现-不是所有的需要指定可以按不同的顺序被选择。
- 数据可以从在被插入之前的输入被改变,使用作用固有在目的sql。
- 您能通常使用参量插入价值入桌。
5.更新
更新your_table_name 集合first_column = value1, second_column = value2,…. 那里criteriaExists
数据列可能包含是不正确的或需要被修改的信息。 SQL给您的机制是更新声明。 典型地这在一张桌里将介入只修改数据,即使其他桌为标准使用。 在意志更新之上称your_table_name的桌和赋予在第一个专栏的价值相等与“value1”和second_column到有具体标准的value2 (详尽阐述在之下)的地方。 如果没有标准那么每行更新。
对笔记的事:
- 可以申请极限那么仅特定行数被影响
- 其他桌可以加入情况的地方
- 它通常不是一个好想法对别名在更新声明的桌。
- 价值不必须是固定的,并且可能提到当前或不同的专栏或常数的操作。
- 不是所有的专栏需要由更新影响。
6.删除
从criteriaExists的your_table_name的删除
使用删除声明,去除行从桌达到。 这是一样简单的象辨认桌和标准行应该见面然后指定您想要删除,使用声明类似上面。 标准如下解释。
对笔记的事:
- 极限可以是应用的指定将被去除的最大行数
- 删除可能有问题提到在,并且作为这样临时表也许需要被运用的同一张桌之内的其他行。
- 删除可能每次只通常影响一张桌(即使别的为标准目的连接)
- 如果他们去除外国关键附庸依靠了与其他桌,删除可能有问题。
7.精选
一个正常精选的声明将看起来与以下相似
精选 作为fc, t1.second_column的definition_for_First_column,…. 从作为criteria_exists 的t1的tableName
选择identifys数据横跨专栏被显示。 注意这也许不止一次出现于询问,如果您有一次嵌入询问(替补询问)作为专栏定义一部分(如果它只退回一个专栏和一行)或作为一部分从(使用询问,如它是桌)或在情况的地方(使用它证明或反驳一套标准)
对笔记的事:
- 通常差错发生,因为没有在其中每一之间的一个数据定义(除了为时)
- 一些数据库有一个256或1024年专栏极限
- 分明主题词,在精选之后只将给独特的行(整体行一定是独特的)
- 小组在声明的结尾能影响什么在精选可以被显示
- 专栏不必须是从桌,他们可以是常数
- 专栏可能也代表在常数之间的数学
- 专栏可以通过作用
- 不是很好的练习有与同一个名字的多个专栏
- 专栏可以aliased通过使用词给它名字,在空间之后,在专栏定义ie (tableName.t1作为field1或之后通过做tablename.t2 xxx)将创造二个专栏叫field1 (第1个例子)和xxx作为第二个例子
- 假设字段名对那桌或副咨询,是独特的tablename不一定需要被用于演讲领域
- 那里根据数据库的地方不一定需要a从或标准
8.从
从table_name
从(副咨询)
这通常被看见声明要求信息关于桌或数据设置的地方。 在一审您可以只想要使用此与特定桌相关,在您能从一次嵌入询问挑选的更加先进的情景。 这是在最平直向前之中-基本上出现象桌或图的一切,在从必须是桌,看法之后的地方或事(ie有行和专栏)
对笔记的事:
- 可以有多张在的桌或副咨询从定义
- 表或副咨询可以是从table_name的教名ie,因为t1意味t1参考了它参考了那张桌
- 同一桌或副咨询可以是包括的多时期,并且其中每一独立地被对待
- 一切被列出作为一部分从条目将冲击询问(即使它不明确地演讲),当那里加入在这些数据集中的每一个之间。
9.那里
您在数据库中通常不想要看数据每个片断。 制约什么返回,根据标准是整体点主题词的地方。
实质上声明读了象他们的英国等值的地方。 这样为每行-数据库要求,做申请真实这声明的回归,如果那么然后显示行-否则不要。 您能有或声明和使用复杂逻辑,但是每声明煮沸在这简单化下的地方。
例子例如:
那里 t1.currency = “AUD”
那里 t1.field1 > t2.field3
那里(t1.field1 t2.field3) = (t2.field2 * t2.field7)
那里your_table_name.firstName = “安德鲁”或your_table_name.firstName = “Becky”
那里your_table_name。性别= “在18和25之间的男性”和your_table_name.age
如果您能读这些声明他们似乎有道理。 第一只将退回以澳大利亚元,并且第二只将显示行的价值一个特定领域哪里比另一个伟大。 这些声明中的任一个必须评估配齐退回行。
对笔记的事:
- 有可以被用于评估配齐或错误在情况-标志例如> >= < <=/\的地方的许多作用! =在() ( )在%和许多之间能使用-,如果您是缺乏信心的,并且他们是在然后情况查寻的地方什么他们意味,为了工作有些永远将使用他们的声明可能给真实或错误,在他们被评估之后。
- 一些数据库加入在他们的桌情况和其他不的地方。
- 有不会退回真实的ie 1的声明是可能的! = 1永远将是错误的, 1从未不相等的到1 (一些数据库不是均等的用途<>)
- 潜水艇询问可以返回检查一个特殊的值是否在那次次级询问之内做或不存在
- 错误也许生成,如果您设法比较不是同一个类型ie “1”是不同等的到1在许多数据库中的价值,因为第一是字符,并且第二是价值
- 那里情况通常被评估使用BOMDAS ie托架倍增分界添加和减少。
- 那里声明也许使用真实和错误在一些数据库中对待数字-错误的ie的突变可以= 0和真实是其他数字
- 有条件逻辑也许被用于评估情况- ie iif,如果和条件语句
结论:
了解这些声明是重要的。 有未由这个介绍文件包括的许多细微差异和微妙。 如果您想要更多深度审查的一个或更多细节,请与我联系,并且我将写另一个岗位表达您的关心。
SQL是我恨的事首先学会它,我什么时候现今认为它的可能性和用途是令人敬畏的。
如果您请喜欢这个岗位下面评论,分享它与朋友或在社会网络并且订阅我的RSS饲料
%DIGG%





































作为Sysadmin,我使用的最频繁的SQL命令是格兰特,虽然它不确实地是纯净的SQL。 这由检查奴隶状态紧密跟随,并且not-so-closely由跟随创造数据库、检查桌和修理桌。
当然,当我编程九时您提及是我使用的那个。
事是,我的工作是很困难没有我提及的命令。 (好…除了创造数据库。 手动地创造一个新的数据库。)是相当容易的
戴维,
我同意,那些是非常共同的也创造用户是非常共同地使用的别的象备用声明。 因为做了DBA角色和大厦询问的人(程序员)那里是什么之间的一个大区别您认为重要根据什么您。 通常我会考虑关于数据库的最重要的事将能访问数据,并且,当这样我鉴于此写了这个岗位。 我认为我将写顶面行政主题词和如何为与数据库的操作更有关的那些人使用他们,而不是访问什么它包含。