循序渐进讲解SQL查询语句的高级应用技巧
首先,简单的查询
的简单Transact-SQL查询只包括一个选择列表、一个FROM子句和一个WHERE子句。它们描述了查询列、查询
或者表格和视图以及搜索标准等。
例如,以下语句查询testtable表中名为“张三”的昵称字段和电子邮件字段。
选择昵称、电子邮件
从测试表
其中name= '张三'
(a)选择列表
Select_list表示被查询的列,它可以是列名、星号、表达式、变量(包括本地更改)的列表
和数量全局变量)。
1.选择所有列。
例如,以下语句显示testtable表中所有列的数据:
选择*
从测试表
2.选择一些列并指定它们的显示顺序。
查询集中的数据按照选择列表中指定的列名的顺序排列。
例如:
选择昵称、电子邮件
从测试表
3.更改列标题。
在选择列表中,您可以重新分配列标题。定义格式为:
标题=列名
列标题
如果指定的列标题不是标准标识符格式,则应使用引号分隔符。例如,以下语句以中文字符显示列。
标题:
选择=昵称,电子邮件=电子邮件
从测试表
4.删除重复的行。
SELECT语句使用ALL或DISTINCT选项来显示表中所有符合条件的行,或者删除重复的数据行,这是默认设置。
仅此而已。使用DISTINCT选项时,对于所有重复的数据行,SELECT返回的结果集中只保留一行。
5.限制返回的行数。
使用n [PERCENT]选项来限制返回的数据行数。n表示返回n行,当使用n %时,n表示n是
表示100%分数,它指定返回的行数等于总行数的百分之几。
例如:
选择2 *
从测试表
选择20% *
Testtable (2) FROM子句
FROM子句指定SELECT语句查询以及与该查询相关的表或视图。在FROM子句中,最多可以指定256个表或视图。
它们由逗号分隔。
当在FROM子句中同时指定多个表或视图时,如果选择列表中有相同的列,则应该使用对象名来限定这些列。
它所属的表或视图。例如,usertable和citytable表中都有cityid列。在两个表中查询cityid时,您应该
使用以下语句格式进行限定:
选择用户名citytable.cityid
来自用户表,城市表
其中usertable . city id = city table . city id
您可以使用以下两种格式在FROM子句中为表或视图指定别名:
表名作为别名
表名别名
例如,上述语句可以表别名格式表示为:
选择用户名b.cityid
从用户表a,城市表b
其中a.cityid=b.cityid
SELECT不仅可以从表或视图中检索数据,还可以从其他查询语句返回的结果集中查询数据。
例如:
选择a.au_fname+a.au_lname
来自作者a,书名作者ta
(SELECT title_id,标题
从标题
其中年初至今销售额> 10000
)作为t
其中a.au_id=ta.au_id
并且ta.title_id=t.title_id
在本例中,SELECT返回的结果集被赋予一个别名T,然后从中检索数据。
(3)使用WHERE子句设置查询条件。
WHERE子句设置查询条件并过滤掉不必要的数据行。例如,以下语句查询20年前的数据:
选择*
从用户表
年龄> 20岁
WHERE子句可以包括各种条件运算符:
比较运算符(大小比较): >、> =、=、=10和年龄2,列表运算符示例:国家(IN)('德国'、'中国')
3.模式匹配的例子:常用于模糊搜索中,判断列值是否匹配指定的字符串格式。可用于充电,
查询类型,如varchar、text、ntext、datetime和smalldatetime。
可以使用以下通配符:
Percent%:它可以匹配任何类型和长度的字符。如果是中文,请用百分之二的符号,即%%。
Underline _:匹配单个任意字符,通常用于限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求匹配的对象是其中的任意一个。
[]:其值与[]相同,但要求匹配对象为指定字符以外的任意字符。
例如:
以发布限制结束,使用LIKE“% Publishing”
限制以:开头,如“[A]%”
只是限制以:开头,如“[a]%”
4,空年龄为空的值判断符号示例
5.逻辑运算符:优先级不是、与、或。
(4)对查询结果排序
使用ORDER BY子句按一列或多列对查询返回的结果进行排序。order子句的语法格式是:
ORDER BY { column _ name[ASC | desc]}[,…n]
其中ASC表示升序,这是默认值,DESC表示降序。ORDER BY不能按ntext、text和image数据类型排序。
秩序。
例如:
选择*
从用户表
按年龄排序desc,用户标识ASC
此外,还可以按表达式排序。
二、联合查询
union运算符可以将两个或多个SELECT语句的查询结果集组合成一个结果集进行显示,即执行UNION。
组合查询。UNION的语法格式是:
select _语句
UNION[ALL]select语句
[UNION[ALL]select语句][…n]
Selectstatement是要联接的选择查询语句。
ALL选项意味着所有行都合并到结果集中。如果未指定此项,组合查询的结果集中只会保留一个重复行。
好的。
进行联查时,查询结果的列标题是第一条查询语句的列标题。因此,要定义列标题,它必须在第一个查询中。
句子定义。在对联合查询结果进行排序时,还必须在第一条查询语句中使用列名、列标题或列序号。
使用UNION运算符时,应该确保每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择
表达式应该具有相同的数据类型,或者可以自动转换为相同的数据类型。在自动转换期间,对于数值类
类型,系统将低精度数据类型转换为高精度数据类型。
在包含多个查询的UNION语句中,执行顺序是从左到右,这可以通过使用括号来更改。例如:
1联合(查询2联合查询3)
三、连接查询
您可以通过连接运算符查询多个表。连接是关系数据库模型的主要特征,也是区别于其他类型的特征
数据库管理系统的标志。
在关系数据库管理系统中,数据之间的关系不必在建立表时就确定,一个实体的所有信息往往都存储在
在桌子上。在检索数据时,可以通过join操作找出存储在多个表中的不同实体的信息。操作给用户带来了极大的灵活性,他们可以随时添加新的数据类型。为不同的实体创建新表,然后通过连接查询它们。
可以在SELECT语句的FROM子句或WHERE子句中建立连接,这看似合理,但在指出FROM子句中的连接时很有帮助。
区分WHERE子句中的连接操作和搜索条件。因此,建议在Transact-SQL中使用此方法。
SQL-92标准定义的FROM子句的连接语法格式为:
来自连接表连接类型连接表
[开(连接条件)]
其中join_table表示参与连接操作的表的名称。该联接可以在同一个表或多个表上操作,并且可以在同一个
表操作的连接也称为自连接。
Join_type表示连接的类型,分为内部连接、外部连接和交叉连接三种。内部连接使用率
比较运算符用于比较表之间的一些数据列,并列出这些表中符合连接条件的数据行。根据使用的比较方法不同,内部连接可分为等连接、自然连接和不等连接。
外连接分为左外连接(左外连接或左连接)和右连接(右外连接或右连接)。
和完全外部连接或完全连接。与内连接不同,外连接不仅列出匹配连接条件的行,还列出左表(对于左外连接)、右表(对于右连接)或两个表(对于全外连接)中匹配搜索条件的所有数据行。
交叉联接没有WHERE子句。它返回连接表中所有数据行的笛卡尔积,而
数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition)子句表示连接条件,它由连接表中的列、比较运算符、逻辑
运营商等。
无论哪种连接,都不能直接连接text、ntext和image数据类型的列,但是可以间接连接这三个列。
连接。例如:
选择p1.pub_id,p2.pub_id,p1.pr_info
从作为p1的发布信息内部连接作为p2的发布信息
数据长度(P1 . pr _ info)=数据长度(p2.pr_info)
(一)内部联系
内部联接查询操作列出符合联接条件的数据行,并使用比较运算符来比较联接列的列值。内部连接
三种:
1.equijoin:在联接条件中使用等号(=)运算符来比较联接列的列值,联接列将列在查询结果中。
表中的所有列,包括重复的列。
2.不等联接:在联接条件中,使用除等于运算符之外的其他比较运算符来比较联接列的列值。这些
运算符包括>、>=、
0条评论