当前位置:首页 » 编程语言 » 检索sql

检索sql

发布时间: 2024-07-07 10:30:36

❶ 如何检索 sql 错误日志或 DBCC 输出错误

为查找问题,有必要经常检查 DBCC 输出和 SQL Server 错误日志。这可能会引起错误,而且是一件极为烦琐的过程,尤其是必须在几台服务器上进行检查,而每台服务器可能有多个数据库时。Windows NT 在发布时提供一个功能强大的模式搜索工具(称为 Findstr.exe),该工具可以被用来从很大程度上自动处理该任务。根据是否找到某些错误字符串,还可以使用该工具有条件地执行批处理文件。本文讲述如何使用 Findstr 工具。
更多信息
Findstr 是一个高性能的模式搜索工具,它使用 Win32 异步和文件映射 I/O 以获取最佳的吞吐量。该工具允许使用常规表达式、向下递归搜索目录树、和排除模式的功能,这样可以获得 NOT 功能。有关其它信息,请参阅 Windows NT 文档。

有两种使用 Findstr.exe 搜索 SQL Server 错误日志或 DBCC 输出以查找错误的基本方法:

明确说明要查找的字符串。

说明不想查找的字符串(这样将显示除这些字符串之外的所有字符串)。
在第一种方法中,可以创建一个字符串行表来定义错误,让 Findstr 进行匹配。该字符串行表可以作为输入文件提供给 Findstr。

例如,假如您要查找所有的“table corrupt”字符串(该字符串带有许多严重的数据错误)以及所有“msg 605”字符串(一种特定的错误类型)。请将这些字符串放到一个文件中,其内容类似于:

table corrupt
msg 605

使用下列语法对 DBCC 输出文件运行 Findstr.exe:

findstr /i /g:search.txt dbcc.* > findstr.out

其中,search.txt 是包含搜索字符串的文件,dbcc.* 对应于一组要搜索的 DBCC 输出文件,而 findstr.out 是存放搜索结果的文件。

使用该方法要求事先知道要搜索的错误字符串。但遗憾地是,并没有一个全面的 SQL Server 错误字符串行表可以涵盖所有可能的 DBCC、服务器与内核错误。对于 7.0 版以前的版本,只对以下字符串进行搜索就可能提供相当全的范围作为起始点:“table corrupt”、“level 16” – “level 21”以及“Severity: 16”-“Severity: 21."

使用一个小试验,通常有可能对此做进一步的改进,并得到相当可靠的检查结果(当然比通过肉眼进行查找要可靠得多)。

另外,还可以使用 Findstr 的“反向匹配”功能排除搜索字符串的列表。该方法应用于 DBCC 输出比应用于错误日志输出要简便得多,这是因为需要排除的独特的字符串比较少。从某种程度上讲,该方法(如果可以使用)要安全得多,因为只需明确地说明不要匹配的内容,而且在默认情况下任何新的或意想不到的错误将会被显示。

由于 7.0 版目前遇到的错误消息非常有限,因此“反向匹配”方法可能是适用于这一版本的最好方法。

举个例子,假设您要将一系列 DBCC 输出文件中的“The total number”、“Table has”和“Checking”字符串排除在外。这将排除许多不重要的 DBCC 状态消息,而且不会导致任何错误消息的丢失。对于 7.0 版之前的版本,将这些字符串放到内容类似如下文件中:

The total number
Table has
Checking

使用以下语法对 DBCC 输出文件运行 Findstr:

findstr /v /i /g:search.txt dbcc.* > findstr.out

其中 search.txt 是包含搜索字符串的文件,dbcc.* 与要搜索的一组输出文件匹配,而 findstr.out 是存放搜索结果的文件。/v 参数表明是“反向匹配”,这可以有效地匹配除列表中这些字符串之外的所有字符串。

对于 7.0 版,做法与上述方法类似,但使用下列字符串:

pages for object
DBCC results
DBCC execution completed

下面是错误日志排除列表的一个示例,该排除列表将筛选出不重要的消息并查找最为重要的错误。该示例并不全面,仅作为示例使用。可以根据您的需要对其进行修改。

Copyright
All rights reserved
Logging SQL Server
initconfig: number
SQL Server is start
initializing virtual
Opening Master Data
Loading SQL Server
Recovering Database
Recovery dbid
transactions roll
Activating disk
initializing virtual
server name is
Clearing
Using 'SQLEVENT.DLL
Using 'OPENDSNT.DLL
Using 'NTWDBLIB.DLL
Using 'SSNMPNTW.DLL
rolled forward
default sort
nocase
default character
recovery complete
terminating e
windows nt
(id =
killed by hostname
17824
17825
1608
17832
OS error : 109
OS error : 232
unable to write to
restrictions
contracts
server is unnamed
no_log
working thread
Sybase
network error
united states
unable to read login
plication
subdivision
clause
number of buffers
using asynchronous disk
pipe name is
number of proc buffers
network information
file descriptors
transactions before ckpt
shutdown by request

在某些情况下,将这两种方法结合使用可以将两者的优点结合在一起,或者至少可以避过因使用其中一个方法而出现的问题。

例如,假设您在搜索错误日志查找“Severity:16”到“Severity:21”字符串,这些字符串应当能匹配最严重的错误。但是您会在搜索输出结果中发现几个与通信相关的错误,如 1608 和 17832,这些错误通常不表示严重的问题。您可以保留原来的搜索条件并只将这些特定的不必要错误从搜索结果中排除出去,其方法是将一个 Findstr 命令输出到另一个中:

findstr /i /g:search.txt errorlog*.* | findstr
/v /i /g:exclude.txt > f.out

其中 search.txt 是包含搜索字符串的文件,errorlog*.* 是要搜索的 SQL Server 错误日志文件,exclude.txt 是包含要排除的搜索字符串的文件,f.out 是存放搜索结果的文件。这种方法可以多级层叠使用,但不能在同一级连续多次层叠。

编写批处理文件,有可能根据 Findstr 是否检查到某个错误字符串有条件地执行操作。这种技术使用 Windows NT 的条件处理命令“&&”和“||”。如果在 seach.txt 文件中找到任何 SQL Server 错误字符串,下面的命令将执行批处理文件 batch1.bat:

findstr /i /g:search.txt errorlog*.* && batch1

Batch1.bat 能够调用程序,甚至运行使用 SQL Server 的 xp_sendmail 功能发送邮件的 ISQL 作业,通知操作员出现的问题。

以上所说明的技术可以结合使用以执行多种任务。例如,下面的批处理文件将不断运行 Findstr 命令,如果在 search.txt 文件中找到任何 SQL 错误字符串,该命令都会有条件地执行 batch1.bat 文件,排除 exclude.txt 中的字符串。

echo off
:start
findstr /i /g:search.txt errorlog*.* | findstr
/v /i /g:exclude.txt && (echo WARNING & batch1)
goto start

通过一个小的试验,就会发现这些技术有助于减少搜索 SQL Server 错误日志和 DBCC 输出文件所花费的精力。上述这些技术也可用于对任何普通文本的搜索,而并非仅限于与 SQL Server 相关的内容。

有些情况下,Findstr 可能受到内部限制,而不能完成搜索任务。出现这种情况时,在输出文件中会得到下列消息:

FINDSTR:Write error.
如果出现这种情况,请减少所使用的匹配字符串数,尝试使用正向匹配替代反向匹配,或者使用其它搜索工具,比如 Perl(以下对此进行更多的介绍)。

相关主题是 Windows NT 命令行工具的使用。启动 Windows NT 4.0 可以得到增强的命令扩展。运行 cmd /x /? 查看列表。增强的 FOR 命令就是一个示例。执行 for /? 查看语法。下面的例子说明如何在一行中使用 FOR 语句连续 5 次运行 isql,并将每次的输出结果保存到具有不同称的文件中:

FOR /L %f IN (1, 1, 5) do isql /Usa /P /itest.sql /otest%f.out

下面的例子说明如何将包含某个错误字符串的所有文件移到公共目录中。这对于从一大堆没有错误的错误日志中剔除包含错误的错误日志是很有用的,这样可以将这些错误日志发送给某些专家进一步研究。下面将举例说明如何在包含名称列表的文件中对每个文件名执行程序。

findstr /s /i /c:"error.*605" errorlog*.* > srch.out
FOR /F %f IN (srch.out) do %f c:\results

除命令扩展之外,Windows NT 资源工具包中还包含 Perl 版本。Perl 是一种类似于 C 的解释性语言,该语言在很大程度上优化了对文件和字符串的处理。使用 Perl 语言很容易实现复杂的模式匹配和编辑/替代操作。Perl 可以和 Windows NT 命令行结合使用以提供非常强大的功能。有许多关于 Perl 的书籍和站点信息资源。

❷ sql语言中,实现数据检索的语句是

一、检索单个列

命令:

SELECT 列名 FROM 表名;

注意:语句将返回表中所有行,数据没有过滤(过滤将得出结果集的一个子集),也没有排序。

二、检索多个列

命令:

SELECT 列名1,列名2,?? FROM 表名;

注意:在选择多个列时,一定要在列名之间加上逗号,但是最后一个列名后不加。

三、检索所有列

命令(也可以按照检索多个列的方法把所有列名列出,等价于用 * 符号)

SELECT * FROM 表名;

(2)检索sql扩展阅读:

注意事项

基本查询语句

select 列名1,列名2 from 表名;

查看表的所有信息:select * from 表名;

书写标准:

1、不区分大小写

2、可以换行

3、关键词不可以跨行或者分割书写

4、通常一个句子一行(排版可以增加可读性)

5、“;”代表结尾,结尾必须使用

❸ sql中全文检索的具体细节

全文索引和全文检索是sql server 7.0的新增功能,它能够对数据中的字符类型列(如varchar、text等类型列)进行索
引,并通过索引实现全文搜索查询。sql server常规索引与全文检索相比,二者的区别如下:

常规索引 全文索引
使用create index或约束定义创建 使用全文索引存储过程创建和删除
通过删除或执行drop index语句删除

当插入、修改或删除数据时,sql server 只能通过任务调度或执行存储过
能够自动更新常规索引内容 程来填充全文索引

每个表可以建立多个常规索引 每个表只能有一个全文索引
索引不能分组 同一个数据库中的多个全文索引可
以组织为一个全文目录
常规索引存储在数据库文件中 全文索引存储在文件系统中

为了支持全文索引操作,sql server 7.0新增了一些新存储过程和transact-sql语句,使用这些存储过程创建全文索引的
具本步骤为(括号内为每步所调用的存储过程名称):

(1)启动数据库的全文处理功能(sp_fulltext_datebase);
(2)建立全文目录(sp_fulltext_catalog);
(3)在全文目录中注册需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文检索的列名(sp_fulltext_column)
(5)为表创建全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。

例:
use pubs
go
exec sp_fulltext_database 'enable'
--为titles表建立全文索引数据元,其中create为建立,activate为激活,deactivate为关闭表全文索引的激活状态,使
它不再参加全文目录填充,drop为删除;create参数中,后面跟的是全文目录名称和索引列名。
--下面语句为pubs数据库中的titles表创建全文索引数据元,存储该数据元的全文目录为FT_pubs,所使用的唯一索引为
UPKCL_titleidind(title表中为title_id列的PRIMARY KEY约束所建立的唯中索引)
sp_fulltext_table titles,'create','FT_pubs','upkcl_titledind'

--激活它
sp_fulltext_table titles,'activate'

--指定参加全文索引的列
sp_fulltext_column 'titles','title','add'
sp_fulltext_column 'titles','notes','add'

下面是一个完整的例子:
--在执行该脚本程序之前启动sql server的全文搜索服务,即microsoft search服务
use pubs --打开数据库
go
--检查pubs是否支持全文索引,如果不支持全文索引,则使用sp_fulltext_datebase打开该功能
if (select databaseproperty ('pubs','IsFulltextEnables'))=0
execute sp_fulltext_database 'enable'
--建立全文目录FT_pubs
execute sp_fulltext_catalog 'FT_pubs','create'
--为titles表建立全文索引数据元
execute sp_fulltext_table 'titles','FT_pubs','UPKCL_titleidind'
--设置全文索引列名
execute sp_fulltext_column 'titles','title','add'
execute sp_fulltext_column 'titles','notes','add'
--建立全文索引
execute sp_fulltext_table 'FT_pubs','activate'
--填充全文索引目录
execute sp_fulltext_catalog 'FT_pubs','start_full'
GO
--检查全文目录填充情况
WHILE FulltextCatalogProperty("FT_pubs','PopulateStatus')<>0
BEGIN
--如果全文目录正处于填充状态,则等待30秒后再检测一次
WAITFOR DELAY ‘0:0:30’
END
--全文目录填充完成后,使用全文目录检索

--查询title列或notes列中包含有database或computer字符串的图书名称
SELECT title
FROM title
where CONTAINTS(title,'database')
or contains(notes,'database')
or contains(title,'computer')
or contains(notes,'computer')

❹ 建立全文检索的sql语句

前言:微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server 7.0以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从SQL Server 7.0起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。
建立全文索引
在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):
1. 启动数据库的全文处理功能(sp_fulltext_
database);;
2. 建立全文检索目录(sp_fulltext_catalog);
3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);
4. 指出表中需要全文检索的列名(sp_fulltext_
column);;
5. 为表创建全文索引(sp_fulltext_table);;
6. 填充全文检索目录(sp_fulltext_catalog)。
下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。
use test //打开数据库
//打开全文索引支持,启动SQL Server的全文搜索服务
execute sp_fulltext_database ‘enable’
//建立全文检索目录ft_test
execute sp_fulltext_catalog ‘ft_test’, ‘create’
为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。
execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’
//设置全文索引列名
execute sp_fulltext_column ‘book’, ‘title’, ‘add’
execute sp_fulltext_column ‘book’,‘notes’, ‘add’
//建立全文索引
execute sp_fulltext_table ‘book’, ‘activate’
//填充全文索引目录
execute sp_fulltext_catalog ‘ft_test’, ‘start_full’
至此,全文索引建立完毕。
进行全文检索
SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column | *}), <contains_search_condition> )
其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_
condition 说明CONTAINS语句的搜索内容,其语法格式为:
{||||}[{{AND|AND NOT|OR}}] [...n]
下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:
{‘word’|“ phrase”}
prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word*” | “phrase*”}
例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes
from book
where contains(tilte, ‘database’) or contains(notes,‘database’)
or contains(title,‘computer’) or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)
其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
select title, notes
from book
where freetext(*,‘Successful Life’)

❺ SQL server鏁版嵁搴撴煡璇㈣鍙ヤ娇鐢ㄦ柟娉曡︾粏璁茶В

涓銆 绠鍗曟煡璇

绠鍗旷殑Transact-SQL镆ヨ㈠彧鍖呮嫭阃夋嫨鍒楄〃銆丗ROM瀛愬彞鍜学HERE瀛愬彞銆傚畠浠鍒嗗埆璇存槑镓镆ヨ㈠垪銆佹煡璇㈢殑琛ㄦ垨瑙嗗浘銆佷互鍙婃悳绱㈡浔浠剁瓑銆

渚嫔傦纴涓嬮溃镄勮鍙ユ煡璇testtable琛ㄤ腑濮揿悕涓衡滃紶涓夆濈殑nickname瀛楁靛拰email瀛楁点

               

   SELECT nickname,email

   FROM testtable

   WHERE name='寮犱笁'

(涓) 阃夋嫨鍒楄〃

阃夋嫨鍒楄〃(select_list)鎸囧嚭镓镆ヨ㈠垪锛屽畠鍙浠ユ槸涓缁勫垪钖嶅垪琛ㄣ佹槦鍙枫佽〃杈惧纺銆佸彉閲(鍖呮嫭灞閮ㄥ彉閲忓拰鍏ㄥ眬鍙橀噺)绛夋瀯鎴愩

1銆侀夋嫨镓链夊垪

渚嫔傦纴涓嬮溃璇鍙ユ樉绀篓esttable琛ㄤ腑镓链夊垪镄勬暟鎹:

               

   SELECT *

   FROM testtable

2銆侀夋嫨閮ㄥ垎鍒楀苟鎸囧畾瀹冧滑镄勬樉绀烘″簭

镆ヨ㈢粨鏋滈泦钖堜腑鏁版嵁镄勬帓鍒楅‘搴忎笌阃夋嫨鍒楄〃涓镓鎸囧畾镄勫垪钖嶆帓鍒楅‘搴忕浉钖屻

渚嫔:

               

   SELECT nickname,email

   FROM testtable

3銆佹洿鏀瑰垪镙囬

鍦ㄩ夋嫨鍒楄〃涓锛屽彲閲嶆柊鎸囧畾鍒楁爣棰樸傚畾涔夋牸寮忎负:

鍒楁爣棰=鍒楀悕

鍒楀悕 鍒楁爣棰

濡傛灉鎸囧畾镄勫垪镙囬树笉鏄镙囧嗳镄勬爣璇嗙︽牸寮忔椂锛屽簲浣跨敤寮曞彿瀹氱晫绗︼纴渚嫔傦纴涓嫔垪璇鍙ヤ娇鐢ㄦ眽瀛楁樉绀哄垪镙囬:

               

   SELECT 鏄电О=nickname,鐢靛瓙闾浠=email

   FROM testtable

4銆佸垹闄ら吨澶嶈

SELECT璇鍙ヤ腑浣跨敤ALL鎴朌ISTINCT阃夐”𨱒ユ樉绀鸿〃涓绗﹀悎𨱒′欢镄勬墍链夎屾垨鍒犻櫎鍏朵腑閲嶅岖殑鏁版嵁琛岋纴榛樿や负ALL銆备娇鐢―ISTINCT阃夐” 镞讹纴瀵逛簬镓链夐吨澶岖殑鏁版嵁琛屽湪SELECT杩斿洖镄勭粨鏋滈泦钖堜腑鍙淇濈暀涓琛屻

5銆侀檺鍒惰繑锲炵殑琛屾暟

浣跨敤TOP n [PERCENT]阃夐”闄愬埗杩斿洖镄勬暟鎹琛屾暟锛孴OP n璇存槑杩斿洖n琛岋纴钥孴OP n PERCENT镞讹纴璇存槑n鏄琛ㄧず涓锏惧垎鏁帮纴鎸囧畾杩斿洖镄勮屾暟绛変簬镐昏屾暟镄勭栌鍒嗕箣鍑犮

渚嫔:

               

   SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable

(浜)FROM 瀛愬彞

FROM瀛愬彞鎸囧畾SELECT璇鍙ユ煡璇㈠强涓庢煡璇㈢浉鍏崇殑琛ㄦ垨瑙嗗浘銆傚湪FROM瀛愬彞涓链澶氩彲鎸囧畾256涓琛ㄦ垨瑙嗗浘锛屽畠浠涔嬮棿鐢ㄩ楀彿鍒嗛殧銆

鍦‵ROM瀛愬彞钖屾椂鎸囧畾澶氢釜琛ㄦ垨瑙嗗浘镞讹纴濡傛灉阃夋嫨鍒楄〃涓瀛桦湪钖屽悕鍒楋纴杩欐椂搴斾娇鐢ㄥ硅薄钖嶉檺瀹氲繖浜涘垪镓灞炵殑琛ㄦ垨瑙嗗浘銆备緥濡傚湪usertable鍜 citytable琛ㄤ腑钖屾椂瀛桦湪cityid鍒楋纴鍦ㄦ煡璇涓や釜琛ㄤ腑镄刢ityid镞跺簲浣跨敤涓嬮溃璇鍙ユ牸寮忓姞浠ラ檺瀹:

               

   SELECT username,citytable.cityid

   FROM usertable,citytable

   WHERE usertable.cityid=citytable.cityid

鍦‵ROM瀛愬彞涓鍙鐢ㄤ互涓嬩袱绉嶆牸寮忎负琛ㄦ垨瑙嗗浘鎸囧畾鍒钖:

琛ㄥ悕 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_sales10000

   ) AS t

   WHERE a.au_id=ta.au_id

   AND ta.title_id=t.title_id

姝や緥涓锛屽皢SELECT杩斿洖镄勭粨鏋滈泦钖堢粰浜堜竴鍒钖峵锛岀劧钖庡啀浠庝腑妫绱㈡暟鎹銆

(涓) 浣跨敤WHERE瀛愬彞璁剧疆镆ヨ㈡浔浠

WHERE瀛愬彞璁剧疆镆ヨ㈡浔浠讹纴杩囨护鎺変笉闇瑕佺殑鏁版嵁琛屻备緥濡备笅闱㈣鍙ユ煡璇㈠勾榫勫ぇ浜20镄勬暟鎹:

               

   SELECT *

   FROM usertable

   WHERE age20

WHERE瀛愬彞鍙鍖呮嫭钖勭嶆浔浠惰繍绠楃:

姣旇缉杩愮畻绗(澶у皬姣旇缉):銆=銆=銆併=銆併!銆!

锣冨洿杩愮畻绗(琛ㄨ揪寮忓兼槸钖﹀湪鎸囧畾镄勮寖锲):BETWEEN钬AND钬

NOT BETWEEN钬AND钬

鍒楄〃杩愮畻绗(鍒ゆ柇琛ㄨ揪寮忔槸钖︿负鍒楄〃涓镄勬寚瀹氶”):IN (椤1,椤2钬︹)

NOT IN (椤1,椤2钬︹)

妯″纺鍖归厤绗(鍒ゆ柇鍊兼槸钖︿笌鎸囧畾镄勫瓧绗﹂氶厤镙煎纺鐩哥):LIKE銆丯OT LIKE

绌哄煎垽鏂绗(鍒ゆ柇琛ㄨ揪寮忔槸钖︿负绌):IS NULL銆丯OT IS NULL

阃昏緫杩愮畻绗(鐢ㄤ簬澶氭浔浠剁殑阃昏緫杩炴帴):NOT銆丄ND銆丱R

1銆佽寖锲磋繍绠楃︿緥:age BETWEEN 10 AND 30鐩稿綋浜巃ge=10 AND age=30

2銆佸垪琛ㄨ繍绠楃︿緥:country IN ('Germany','China')

3銆佹ā寮忓尮閰岖︿緥:甯哥敤浜庢ā绯婃煡镓撅纴瀹冨垽鏂鍒楀兼槸钖︿笌鎸囧畾镄勫瓧绗︿覆镙煎纺鐩稿尮閰嶃傚彲鐢ㄤ簬char銆乿archar銆乼ext銆乶text銆 datetime鍜宻malldatetime绛夌被鍨嬫煡璇銆

涓娄竴椤12 涓嬩竴椤

❻ sql server 2000的查询方式有哪些

这个?
sql查询方式总结

简单查询
1,检索表中所有列
select * from <表名>
2,检索表中特定列
select <列名表列> from <表名>
3,重排列顺序
select cloumn_3,cloumn_1 from <表名>
4,用单引号加入字符串
select cloumn_3,cloumn_1 '所要加的字段名' from<表名>
5,改变列标题
select cloumn_3,cloumn_1 as '新列名' from <表名>
6,消除重复行
select distinct cloumn_3 from <表名>
7,返回有限的结果
select top n [percent]* from <表名>
8,使用算数运算符操纵列
example:
select cloumn_1+'('+cloumn_2+')' [as] '新列名',cloumn_3*cloumn_4 '新列名' from <表名>
9,使用函数操纵列
--常用函数有substring()[取子字符串]、getdate()[返回当前日期和时间]、year(data)[返回日期中的年份]、convert()[类型转换]
example:
select distinct substring(title,1,5) from pubs
又如:返回当前服务器的用户名
select 'login'=suser_sname()
再如查询pubs数据库的titles表中所有书的价格信息,对于书名长度超过38个字符的,将其余部分截掉
use pubs
select convert(char(38),title)+'IS $'+ convert(varchar(10),price) from titles

选择行查询
1,基于比较选择行
example:
select 价格,* from goods where 价格>=1000
2,基于范围选择行
select * from goods where 价格 between 20 and 2000
--3,基于列表选择行
select * from goods where 品名 not in('方正A','联想')
4,基于字符串选择行
--百分号(%):代表任意多个字符
--下划线(_):代表单个字符
--中括号([]):代表指定范围内的单个字符
--复合符号([^]):代表不在指定范围内的单个字符
--5,基于未知选择行
--使用IS NULL IS not NULL
select 姓名,职业 from students where 联系电话 IS null
--6,基于多个搜索条件选择行
select 姓名,职业,联系电话,地址 from students
where (联系电话 like '%3%'or 联系电话 like '%5%')
and (地址 like '河南')
--7,结果排序
select * from goods
select 价格 from goods
order by 价格 ASC

生成总结查询
使用SQL查询语言,用户可以方便地为查询到的结果进行分组、计算或对其进行过滤等,从而得到总结性的数据结果集。
1,使用集合函数进行统计
(1)AVG 该函数用于计算查询结果的平均值。其语法格式如下:
AVG([all | distinct] 算数表达式) 其中各参数的意义如下:
all:全部数据都参与计算,为默认的选项。
distinct:消除重复的数据,只计算不同的值的平均值。
算数表达式:该表达式即可以只涉及一列,也可涉及多列
example:要计算Sales数据库中Goods表中的所有货品的平均价格
use Sales
select avg(价格) from goods
(2)min、max 这两个函数用于查询最小值和最大值,语法格式如下:
min([all | distinct] 算数表达式)
(3)sum 该函数用于计算查询到的数据值得总和
example:计算Pubs数据库中的titles表中所有商业类书籍的平均预付款和本年度迄今为止的全部销售额。
use pubs
select avg(advance),sum(ytd_sales) from titles where type='business'
(4)count 该函数可以计算查询到的结果的数目
example:查询sales数据库中customers表中客户地址的数量。
use sales
select count(distinct 地址) from customers
2,数据分组
(1)group by子句
在SQL Sever中,可以按照一定的条件对查询到的结果进行分组,然后对每一组数据计算统计信息。
说明:1,使用group by 子句能按列或表达式分组,一般与集合函数一起使用,每组差生一个值。
2,在包含group by子句的查询语句中,select语句后的所有字段列表,除集合函数外,都应该包含 在group by子句中,否则会出错。
3,对数据进行分组时,也可以用条件进行选择,这就是having子句。
(2)having子句
having子句可以用来向使用Group by子句的查询中添加过滤准则,即检查分组之后的各组是否满足条件。having子句语法与where子句一样,但两者之间还是存在一定区别,具体如下:
1,where子句的作用是检查每条记录是否满足条件,而having子句是检查分组之后的各组是否满足条件。
2,having子句是针对Group by子句的,没有Group by子句时不能使用having子句。
3,having子句可以在条件中包含集合函数,但where子句不行
exam:显示sales数据库中Goods表中存货量大于70的货品及库存数量,具体代码如下:
use sales
----select 品名,库存数量 from Goods where 库存数量>70
select 品名,库存数量=sum(库存量) from Goods group by 品名 having sum(库存量)>7
①where子句排出不满足条件的行
②group by子句收集满足where子句的搜索行,并将这些行分组
③having子句排出不符合其条件的组
此外,使用group by all能够显示所有的组,即便是被where子句排除的组也将会显示出来
3,计算汇总数据
(1)compute子句
可以使用该子句计算汇总数据,该汇总数据将作为附加的汇总列出现在结果集的最后
exam:在pubs数据库的titles表中查询类型是以cook结尾的书的价格和总价
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price)
(2)compute by 子句
在查询中使用该子句可以按给定的条件将查询结果分组,并为每种结果计算汇总数据。
exam:在pubs数据库的titles表中查询类型是以cook结尾的书的价格和每种类型的总价
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price) by type
(3)计算汇总数据时的注意事项
在使用compute子句和compute by 子句时,应注意下面的限制条件:
1,关键字distinct不允许同集合函数一起使用
2,compute子句中的列必须在select后面的选择列表
3,select into 不能和compute子句一块使用
4,若使用compute by子句,则必须使用order by子句。此时,compute by子句后出现的列必须与order by后出现的列相同,最少也应该是其子集,而且必须具有相同的从左到右的顺序并且以相同的表达式开头,不能跳过任何表达式。

http://hi..com/wmaple/blog/item/6de746d0d3ba708aa1ec9c1b.html

热点内容
照片视频加密 发布:2024-10-05 23:58:58 浏览:479
北京java培训班多少钱 发布:2024-10-05 23:49:03 浏览:814
subversion源码安装 发布:2024-10-05 23:48:17 浏览:122
ipad文件怎么解压缩 发布:2024-10-05 23:06:28 浏览:166
存储服务器主控芯片 发布:2024-10-05 23:04:33 浏览:572
php学徒 发布:2024-10-05 23:04:30 浏览:441
活字格手机端清除缓存了什么办 发布:2024-10-05 23:03:23 浏览:873
阿杜访问 发布:2024-10-05 22:44:23 浏览:603
我的世界怎么在别的服务器开挂 发布:2024-10-05 22:31:14 浏览:297
下沉算法 发布:2024-10-05 21:59:43 浏览:1000