加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

数据库常识—SQL查询语句英华行使扼要

发布时间:2018-08-21 11:05:06 所属栏目:电商 来源:站长网
导读:一、 简朴查询 简朴的Transact-SQL查询只包罗选择列表、FROM子句和WHERE子句。它们别离声名所查询列、查询的表或视图、以及搜刮前提等。 譬喻,下面的语句查询testtable表中姓名为张三的nickname字段和email字段。 SELECT nickname,email FROM testtable WH
一、 简朴查询   简朴的Transact-SQL查询只包罗选择列表、FROM子句和WHERE子句。它们别离声名所查询列、查询的表或视图、以及搜刮前提等。   譬喻,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。   SELECT nickname,email   FROM testtable   WHERE name='张三'   (一) 选择列表   选择列表(select_list)指出所查询列,它可所以一组列名列表、星号、表达式、变量(包罗局部变量和全局变量)等组成。   1、选择全部列   譬喻,下面语句表现testtable表中全部列的数据:   SELECT *   FROM testtable   2、选择部门列并指定它们的表现序次   查询功效荟萃中数据的分列次序与选择列表中所指定的列名分列次序沟通。   譬喻:   SELECT nickname,email   FROM testtable   3、变动列问题   在选择列表中,可从头指定列问题。界说名目为:   列问题=列名   列名 列问题   假如指定的列问题不是尺度的标识符名目时,应行使引号定界符,譬喻,下列语句行使汉字表现列问题:   SELECT 昵称=nickname,电子邮件=email   FROM testtable   4、删除一再行   SELECT语句中行使ALL或DISTINCT选项来表现表中切合前提的全部行或删除个中一再的数据行,默以为ALL。行使DISTINCT选项时,对付全部一再的数据行在SELECT返回的功效荟萃中只保存一行。   5、限定返回的行数   行使TOP n [PERCENT]选项限定返回的数据行数,TOP n声名返回n行,而TOP n PERCENT时,声名n是暗示一百分数,指定返回的行数便是总行数的百分之几。   譬喻:   SELECT TOP 2 *   FROM testtable   SELECT TOP 20 PERCENT *   FROM testtable   (二)FROM子句   FROM子句指定SELECT语句查询及与查询相干的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号脱离。   在FROM子句同时指定多个表或视图时,假如选择列表中存在同名列,这时应行使工签字限制这些列所属的表或视图。譬喻在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应行使下面语句名目加以限制:   SELECT username,citytable.cityid   FROM usertable,citytable   WHERE usertable.cityid=citytable.cityid   在FROM子句中可用以下两种名目为表或视图指定别名:   表名 as 别名   表名 别名   (二) FROM子句   FROM子句指定SELECT语句查询及与查询相干的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号脱离。   在FROM子句同时指定多个表或视图时,假如选择列表中存在同名列,这时应行使工签字限制这些列所属的表或视图。譬喻在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应行使下面语句名目加以限制:   SELECT username,citytable.cityid   FROM usertable,citytable   WHERE usertable.cityid=citytable.cityid   在FROM子句中可用以下两种名目为表或视图指定别名:   表名 as 别名   表名 别名   譬喻上面语句可用表的别名名目暗示为:   SELECT username,b.cityid   FROM usertable a,citytable b   WHERE a.cityid=b.cityid   SELECT不只能从表或视图中检索数据,它还可以或许从其余查询语句所返回的功效荟萃中查询数据。   譬喻:   SELECT a.au_fname+a.au_lname   FROM authors a,titleauthor ta   (SELECT title_id,title   FROM titles   WHERE ytd_sales>10000   ) AS t   WHERE a.au_id=ta.au_id   AND ta.title_id=t.title_id   此例中,将SELECT返回的功效荟萃给以一别名t,然后再从中检索数据。   (三) 行使WHERE子句配置查询前提   WHERE子句配置查询前提,过滤掉不必要的数据行。譬喻下面语句查询年数大于20的数据:   SELECT *   FROM usertable   WHERE age>20   WHERE子句可包罗各类前提运算符:   较量运算符(巨细较量):>、>=、=、<、<=、<>、!>、!<   范畴运算符(表达式值是否在指定的范畴):BETWEEN…AND…   NOT BETWEEN…AND…   列表运算符(判定表达式是否为列表中的指定项):IN (项1,项2……)   NOT IN (项1,项2……)   模式匹配符(判定值是否与指定的字符通配名目符合):LIKE、NOT LIKE   空值判定符(判定表达式是否为空):IS NULL、NOT IS NULL   逻辑运算符(用于多前提的逻辑毗连):NOT、AND、OR   1、范畴运算符例:age BETWEEN 10 AND 30相等于age>=10 AND age<=30   2、列表运算符例:country IN ('Germany','China')   3、模式匹配符例:常用于恍惚查找,它判定列值是否与指定的字符串名目相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等范例查询。   可行使以下通配字符:   百分号%:可匹配恣意范例和长度的字符,假如是中文,请行使两个百分号即%%。   下划线_:匹配单个恣意字符,它常用来限定表达式的字符长度。   方括号[]:指定一个字符、字符串或范畴,要求所匹配工具为它们中的任一个。[^]:其取值也[] 沟通,但它要求所匹配工具为指定字符以外的任一个字符。   譬喻:   限定以Publishing末了,行使LIKE '%Publishing'   限定以A开头:LIKE '[A]%'   限定以A开头外:LIKE '[^A]%'   4、空值判定符例WHERE age IS NULL   5、逻辑运算符:颖呷级为NOT、AND、OR   (四)查询功效排序   行使ORDER BY子句对查询返回的功效按一列或多列排序。ORDER BY子句的语法名目为:   ORDER BY {column_name [ASC|DESC]} [,…n]   个中ASC暗示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据范例举办排   序。   譬喻:   SELECT *   FROM usertable   ORDER BY age desc,userid ASC   其它,可以按照表达式举办排序。   二、 连系查询   UNION运算符可以将两个或两个以上上SELECT语句的查询功效荟萃归并成一个功效荟萃表现,即执行连系查询。UNION的语法名目为:   select_statement   UNION [ALL] selectstatement   [UNION [ALL] selectstatement][…n]   个中selectstatement为待连系的SELECT查询语句。   ALL选项暗示将全部行归并到功效荟萃中。不指定该项时,被连系查询功效荟萃中的一再行将只保存一行。   连系查询时,查询功效的列问题为第一个查询语句的列问题。因此,要界说列问题必需在第一个查询语句中界说。要春连系查询功效排序时,也必需行使第一查询语句中的列名、列问题可能列序号。   在行使UNION 运算符时,应担保每个连系查询语句的选择列表中有沟通数目的表达式,而且每个查询选择表达式应具有沟通的数据范例,或是可以自动将它们转换为沟通的数据范例。在自动转换时,对付数值范例,体系将低精度的数据范例转换为高精度的数据范例。   在包罗多个查询的UNION语句中,其执行次序是自左至右,行使括号可以改变这一执行次序。譬喻:   查询1 UNION (查询2 UNION 查询3)   三、毗连查询   通过毗连运算符可以实现多个表查询。毗连是相关数据库模子的首要特点,也是它区别于其余范例数据库打点体系的一个符号。   在相关数据库打点体系中,表成立时各数据之间的相关不必确定,常把一个实体的全部信息存放在一个表中。当检索数据时,通过毗连操纵查询出存放在多个表中的差异实体的信息。毗连操纵给用户带来很大的机动性,他们可以在任何时辰增进新的数据范例。为差异实体建设新的表,而后通过毗连举办查询。   毗连可以在SELECT 语句的FROM子句或WHERE子句中成立,似是而非在FROM子句中指出毗连时有助于将毗连操纵与WHERE子句中的搜刮前提区分隔来。以是,在Transact-SQL中保举行使这种要领。   SQL-92尺度所界说的FROM子句的毗连语法名目为:   FROM join_table join_type join_table   [ON (join_condition)]   个中join_table指出参加毗连操纵的表名,毗连可以对统一个表操纵,也可以对多表操纵,对统一个表操纵的毗连又称做自毗连。   join_type 指出毗连范例,可分为三种:内毗连、外毗连和交错毗连。内毗连(INNER JOIN)行使较量运算符举办表间某(些)列数据的较量操纵,并列出这些表中与毗连前提相匹配的数据行。按照所行使的较量方法差异,内毗连又分为等值毗连、天然毗连和不等毗连三种。外毗连分为左外毗连(LEFT OUTER JOIN或LEFT JOIN)、右外毗连(RIGHT OUTER JOIN或RIGHT JOIN)和全外毗连(FULL OUTER JOIN或FULL JOIN)三种。与内毗连差异的是,外毗连不但列出与毗连前提相匹配的行,而是列出左表(左外毗连时)、右表(右外毗连时)或两个表(全外毗连时)中全部切合搜刮前提的数据行。   交错毗连(CROSS JOIN)没有WHERE 子句,它返回毗连表中全部数据行的笛卡尔积,其功效荟萃中的数据行数便是第一个表中切合查询前提的数据行数乘以第二个表中切合查询前提的数据行数。   毗连操纵中的ON (join_condition) 子句指出毗连前提,它由被毗连表中的列和较量运算符、逻辑运算符等组成。   无论哪种毗连都不能对text、ntext和image数据范例罗列办直接毗连,但可以对这三种罗列办间接毗连。譬喻:   SELECT p1.pub_id,p2.pub_id,p1.pr_info   FROM pub_info AS p1 INNER JOIN pub_info AS p2   ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)   (一)内毗连   内毗连查询操纵列出与毗连前提匹配的数据行,它行使较量运算符较量被毗连列的列值。内毗连分三种:   1、等值毗连:在毗连前提中行使便是号(=)运算符较量被毗连列的列值,其查询功效中列出被毗连表中的全部列,包罗个中的一再列。   2、不等毗连: 在毗连前提行使除便是运算符以外的其余较量运算符较量被毗连的列的列值。这些运算符包罗>、>=、<=、<、!>、!<和<>。   3、天然毗连:在毗连前提中行使便是(=)运算符较量被毗连列的列值,但它行使选择列表指出查询功效荟萃中所包罗的列,并删除毗连表中的一再列。   例,下面行使等值毗连列出authors和publishers表中位于统一都市的作者和出书社:   SELECT *   FROM authors AS a INNER JOIN publishers AS p   ON a.city=p.city   又如行使天然毗连,在选择列表中删除authors 和publishers 表中一再列(city和state):   SELECT a.*,p.pub_id,p.pub_name,p.country   FROM authors AS a INNER JOIN publishers AS p   ON a.city=p.city   (二)外毗连   内毗连时,返回查询功效荟萃中的仅是切合查询前提( WHERE 搜刮前提或 HAVING 前提)和毗连前提的行。而回收外毗连时,它返回到查询功效荟萃中的不只包括切合毗连前提的行,并且还包罗左表(左外毗连时)、右表(右外毗连时)或两个边接表(全外毗连)中的全部数据行。如下面行使左外毗连将论坛内容和作者信息毗连起来:   SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b   ON a.username=b.username   下面行使全外毗连将city表中的全部作者以及user表中的全部作者,以及他们地址的都市:   SELECT a.*,b.*   FROM city as a FULL OUTER JOIN user as b   ON a.username=b.username   (三)交错毗连   交错毗连不带WHERE 子句,它返回被毗连的两个表全部数据行的笛卡尔积,返回到功效荟萃中的数据行数便是第一个表中切合查询前提的数据行数乘以第二个表中切合查询前提的数据行数。例,titles表中有6类图书,而publishers表中有8家出书社,则下列交错毗连检索到的记录数将便是6*8=48行。   SELECT type,pub_name   FROM titles CROSS JOIN publishers   ORDER BY type   [Post=0][/Post]

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读