《SQl数据库快速入门必须掌握的四大基本语句.docx》由会员分享,可在线阅读,更多相关《SQl数据库快速入门必须掌握的四大基本语句.docx(6页珍藏版)》请在第壹文秘上搜索。
1、SQI数捌库快速入门必需驾(的四大基本谱句做一个系统的后台,基本上都少不了地捌改查,作为一个新手入门,我们必须要驾驭SQ1.四条最基本的数据操作谙句:InSert.Select.UPdate和DeIete!下面对这四个语句进行具体的剖析:娴熟驾驭SQ1.是数据库用户的珍货财宝,在本文中,我们将引导你驾坡四条加将本的数据操作语句-SQ1.的核心功能来依次介绍比较操作符、选择断言以及三值逻辑.当你完成这些学习后,明显你已羟起先算是真正SQl入门了.在我的起先之前,先运用CREATETA81E语句来创建个衣,DD1.语句对数据旅对象如表、列和视进行定义,它们并不对衣中的行进行处理,这是因为DDl语句
2、并不处理数据库中实际的数据.这些工作由另一类SQ1.语句数据操作谱言(DM1.)语句进行处理.SQ1.中有四种基本的DMl操作:INSERT.SE1.ECT.UPDATE41DE1.ETE,由于这是大多数SQI用户常常用到的,我们有必要在此对它们进行一一说明,在图1中我们给出了一个名为EMP1.OYEES的表。其中的母一行对应一个特定的雇员记录,请熟识这张衣,我们在后面的例子中将要用到它.INSERT语句用户可以用INSERT语句将一行记录插入到指定的一个表中,例如,要将展员JohnSlnith的记录插入到本例的表中,可以运用如卜语句:INSERTINTOEMP1.OYEESVA1.UES(S
3、mith7John,1980-0-10,1.osAngles,16,45000);通过这样的INSERT语句,系统将试芾将这些(ft埴入到相应的列中.这些列依据我们创建表时定义的依次排列.在本例中,第一个值“Smith”符列到第一个列1.AsT_NAME中:其次个值uJohn将城到其次列FlRS1.NAMEq以此类推.我们说过系统会一试存”将假填入,除了执行规则之外它还要iS行类型检杏。假如类型不符(如将一个字符小靖入到类型为数字的列中,系统将拒葩这一次操作并返回一个横误信息.假如SQ1.拒绝了你所填入的一列值,语句中其他各列的伯也不会填入.这是因为SQ1.供应对第务的支持,一次M务将数据库从
4、种一样性转移到另一种一样性,假如4务的某一部分失败,则整个事务都会失败,系统将会被女原(或称之为回退)到此事务之前的状态.回到原来的INSERT的例子,请留意全部的整形十进制数都不须要Hl单引号引起来,而字符率和日期类型的值都要用总引号来区分.为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQl中逗号是元素的分隔符.同样要用意输入文字值时要运用单引号.双引号用来封装限界标识符。对于H期类型,我们必需运用SQ1.标准H期恪式yy-mm-dd),但是在系统中可以进行定义,以接受其他的格式.当然,2000年接近,请你最好还是运用四位来表示年份.既然你己经理解了INSERT语句是怎样工作的了,
5、让我们转到EMP1.OYEES衣中的其他部分:INSERTINTOEMP1.OYEESVA1.UES(Bunyan,Pau71970-07-04,Boston,12,700001;INSERTINTOEMP1.OYEESVA1.UESCJohnAdams71992-01-21lr,Boston20z1000);INSERTINTOEMP1.OYEESVA1.UES(,Smth7Pocahontas7197604-06z,1.osAngles;12,l0);INSERTINTOEMP1.OYEESVA1.UES(,Smlth7Bessie194005-02,Boston5,200000);INS
6、ERTINTOEMP1.OYEESVA1.UESCJones,Davy,197040-10rBoStOn:8,4SOO0);INSERTINTOEMP1.OYEESVA1.UES(,Jo11es,lndiana71992-02-01rChicagotzNU1.UNU1.1.);在最终一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NUIl(不要引号)NU1.1.是SQl中的种特别状况,我们以后将迸行具体的探讨。现在我们只需认为NU1.1.表示一种未知的值.有时,像我们刚才所探讨的状况.我们可能希望对某一些而不是全部的列进行赋值C除了对要省略的列输入NU1.1.外,还可以采纳另外一
7、种INSERT语句,如下:INSERTINTOEMP1.OYEEFIRST_NAME,IAST_NAME,HIRE_DATE,BRANCH_0FFiCE)VAlE(,lndiana7Jones,1992-02-017ndianapolis,);这样,我们先在我名之后列出一系列列名.未列出的列中将自动填入缺省值,假如没有设时缺各值则埴入NU1.1.,请稻您我们变更了列的依次,而俏的依次要对应新的列的依次。假如该语句中省略了FlRST_NAME和1.AS1.NAME项(这两项规定不能为空),SQl操作将失败.让我们来看一看上述INSERT语句的语法图:INSERTINTOtable(column,
8、column)VA1.UES(columnvalue(,columnvalue);和前篇文章中一样,我们用方括号来表示可选项,大括号表示可以原现随意次数的项(不能在实际的SQ1.语句中运用这特别字符),VA1.UE子句和可选的列名列表中必需运用网括号.SE1.ECT语句SE1.ECT语句可以从一个或多个衣中选取特定的行和列.因为杳询和检索数据是数据库管理中最取婴的功能,所以SE1.ECr语句在S3中是工作T最大的部分。事实上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQ1.谙句一窍不通.SE1.ECT语句的结果通常是生成另外一个表.在执行过程中系统依据用户的标准从数据阵中选出匹配的行
9、和列,并将结果放到临时的表中。在干脆SQlyreCtSQIJ中,它将结果显示在终端的显示屏上,或者将结果送到打卬机或文件中,也可以结合其他SQ1.语句来将结果放到一个已知名称的表中.SE1.ECT语句功能强大.虽然表面上看来它只用来完成本文第一郃分中提到的关系代数运算“选择”(或称“限制”),但步实上它也可以完成其他两种关系运算一“投影”和连接“,SE1.ECT语句还UJ以完成聚合计算并对数据进行持序。SE1.ECr谱句最简洁的语法如下:SE1.ECTcolumnsFROMtables;当我们以这种形式执行一条SE1.ECT语句时,系统返回由所选择的列以及用户选择的表中全部指定的行组成的一个结
10、果衣。这就是实现关系投影运算的一个形式。让我们看一下运用图1中EMP1.OYEES表的一些例子(这个表是我们以后全部SE1.ECT语句实例都要运用的.而我们在图2和图3中给出了查彻的实际结果.我们将在其他的例干中运用这些结果)。假设你想杳看雇员工作部门的列表。那卜面就是你所须要编写的SQ1.杳询:SE1.ECTBRANCH_OFFICEFROMEMP1.OYEES;以上SE1.ECT喷句的执行珞产生如图2中表2所示的结梁.由于我们在SElEeT语句中只指定了一个列,所以我们的结果表中也只有个列留意结果表中具有重生的行,这是因为有多个雇员在同一部门工作(记住SQ1.从所选的全部行中将值返回).要
11、消退结果中的里亚行,只要在SE1.ECT语句中加DISTINCTf句:SE1.ECTDISTINCTBRANCH_OFFICEFROMEMP1.OYEES;这次查询的结果如表3所示。现在已经消退Jft更的行.但结果并不是依据依次排列的.如你希里以字母表依次将结果列出又该怎么做呢?只要运用ORDERBY子句就可以依据升序或降序来排列结果:SE1.ECTDISTINCTBRANCH_OFFlCEFROMEMP1.OYEESORDERBYBRANCH_OFFICEASC;这一5询的结果如我4所示.请留意在ORDERBY之后是如何放置列名BRANCH,OFFICE的,这就是我们想要对其进行排序的列,为
12、什么即使是结果表中只有一个列时我们也必需指出列名呢?这是因为我们还能将依据表中其他列进行排序,即使它们并不显示出来。列名BRANCH,OFFICE之后的关设字.ASC表示依据升序排列.假如你桁望以降序排列.那么可以用关键字DESC,同样我In应当指出ORDERBY子句只将临时衣中的结果进行排序:并不影响原来的表,假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表,除了工资括号中的内容,我们还带班看到依据聘用时间从最近聘用的雇员起先列出的列表.以下是你将要用到的语句:SE1.ECTBRANCH_OFFlCE,FIRST_NAME,1.AST_NAME,SA1.ARXHIRE_
13、DATEFROMEMP1.OYEESOrderbysalarydesc,HIRE.OATEOESC;这里我们进行了多列的选择和排序。排序的优先姒由语句中的列名依次所确定。SQ1.将先对列出的第一个列进行排序.假如在第一个列中出现了理红的行时,这些行将被依据其次列进行排序,假如在其次列中又出现了柬虹的行时,这些行又将被依据第三列进行排序如此类推。这次直询的结果如表5所示。将一个很长的表中的全部列名目出来是一件相当麻烦的事,所以SQ1.允许在选择表中全部的列时运用*号:SE1.ECTFROMEMP1.OYEES;这次杳泡诋回整个EMPlOYEES表,如表1所示。卜面我们对起先时给出的SEIECT语
14、句的语法进行卜更新(轻自我表示一个可选项,允许在其中选择一项.):SE1.ECTDISTINCT(column(,columns)!FROMtable(,tableORDERBYcolumn(ASCJDESC(,columnASCDESCJ;定义选择标准在我们目前所介绍的SE1.ECT语句中,我们对结果表中的列作出了选择但返回的是表中全部的行.让我们看一下如何对SE1.ECT谱句进行限制使得它只返回希望得到的行:SE1.ECTcolumnsFROMtablesWHEREpredicates;WHERE子句对条件进行了设置,只有满造条件的行才被包括到结果表中。这些条件由断有(predicate)
15、进行指定(断言指出了关于某件事情的一种可能的事实)。黄如该断言对于某个给定的行成立,该行构被包括到结果表中,否则该行被忽视.在SQ1.谱句中断言遹常通过比较来龙示.例如,假如你须要查询全部姓为Jones的职员,则可以运用以下SE1.ECT语句:SE1.ECT,FROMEMP1.OYEESWHERE1.AST_NAME=Jones;1.AST_NAME=UOneS邻分就是断言.在执行该语句时,SQ1.将每一行的IASi1.NAME列与“Jones”进行比较,假如某一职员的姓为“Jones”,即断言成立,该职员的信息将被包括到结果表中(见表6.运用最多的六种比较我们上例中的断吉包括一种基于“等值”的比较1.AST_NAME=Jones,但是SQl断言还可以包含其他几种类型的比较。其中以常用的为:等于=不等于小于大于小于或等于=大于或等于-下面给出了不是基于等值比较的一个例子:SE1.ECT4FROMEMP1.OYEESWHERESA1.ARY50000;这一查询将返回年薪高于$50,000.00的职员(参见表7)“逻辑连接符有时我们须要定义条不止一种断言的