《简单SQL语句查询.pdf》由会员分享,可在线阅读,更多相关《简单SQL语句查询.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、简单 SQL语句查询 这一章是对 SQL 结构化查询语句的一个入门介绍,SQL 是 ANSI 标准的关系数据库语言,用于管理数据和安全性。本章讨论基本的 SQL 语句和命令。通过学习,你可以访问、操作你的数据,可以学会如何检索、增加、更新、删除数据表中的数据,还可学到两种创建新表的方法。这一章的所有例子都查询公司信息公话数据中心系统正在使用的 routon 数据库中的表。下图描述了这些表的结构,这些表是:终端档案表 ctarchives,终端类型表 kindid。通过学习本章内容希望各管理员能达到在告之表名的情况下,能进行一些简单的日常操作。1.基本 SQL 语句概述 最重要的 SQL 语句是
2、:命令 描述 Select 从一个或多个表中检索列和行 Insert 向一个表增加行 Update 更新表中已存在行的某几列 Delete 从一个表中删除行 Create table 根据特定的表模式创建一个新表 Select into 根据一个 SELECT 语句输出的和和列创建一个新表 这些命令看起来简单,但你会在下的例子中看到,它们的确以执行许多复杂的功能。2 SELECT Select 语句指明了你想检索的数据列,这些列的存储位置,返回的数据必须满足标准和应用于数据的排序。一个 select 语句能够进一步把结合在一起的数据行分组,并在组的层次上设定检索标准。组件 描述 Select
3、指明要检索的数据列 From 指明从哪几个表中检索行 Where 指明返回数据必须满足的标准 Group by 对于集合查询,指明返回的列数据通过这些列来形成组 Having 对于集合查询,指明返回的集合值必须满足的标准 Order by 指明返回行的排序顺序 3 简单的 select 语句 下面的例子查询表的几列:select IDCard,installplace,registerdate,ManState from ctarchives 说明:本例是查询话机档案表中的终端 ID 码、安装地点、安装日期和话机管理状态的语句 4 添加 where 子句 用同样的基本 select 语句,再加
4、入 where 子句,便可缩小结果范围。假设你只想知道最近一个月新增加的终端话机数据,便可写成:select IDCard,installplace,registerdate,ManState from ctarchives where RegisterDate(convert(char(8),getdate()-30,112)5 添加 order by 子句 还可以进一步用一个简单的查询步骤,按号码对结果排序。要完成此功能,应添加一个 order by子句。select IDCard,installplace,registerdate,ManState from ctarchives whe
5、re RegisterDate(convert(char(8),getdate()-30,112)order by IDCard 结果行是以 IDCard 字段,按数值升序排序记录。你也可以使用 DESC 关键字以某一字段的降序排序记录。假设先以 telno 升序,再以通信成功时间。下列 SQL 语句便可实现这一功能。select IDCard,installplace,registerdate,ManState from ctarchives where RegisterDate(convert(char(8),getdate()-30,112)order by IDCard desc 6
6、使用 where 子句来连接表 通过上述几例,我们已经看到了几种使用 SQL SELECT 语句查看 cttarchives 表中数据的方法。然而,在现实世界中,我们每一次只想从一个表中查看数据吗?回答大多数是不。在 Ctarchives表中的数据与 routon 数据库中其他表的数据是有关系的。例如,如果你想知道这些话机是什么型号时,单独的 Ctarchives 是不会告诉你的。你必需搜索交叉引用表 CTkind(话机种类表),它通过kindid 和 id 列把两个表连接起来。我们可以用 where 子句来实现:select ctarchives.IDCard,ctarchives.inst
7、allplace,ctarchives.registerdate,ctarchives.ManState,ctkind.model from ctarchives,ctkind where ctarchives.ctkindid=ctkind.id and RegisterDate(convert(char(8),getdate()-30,112)order by IDCard desc 说明:本句在上例的基础上,加上了话机的种类。注意:当在一个语句中从多个表检索数据时,为避免模棱两可,对于列名字出现在 from 子句中超过一个表时,必须对列名用相关联在的表名作前缀。也许你注意到这将导致长的
8、SQL 语句。而使用一个表别名,便可以缩短 SQL 语句,并且使阅读和输入都变得更加容易。比较一下前面的 SQL 语句例子,在这里,别名代替了表名:select a.IDCard,a.installplace,a.registerdate,a.ManState,b.model from ctarchives a,ctkind b where a.ctkindid=b.id and a.RegisterDate(convert(char(8),getdate()-30,112)order by IDCard desc 7 使用连接操作来连接表 另一种连接表的方法是使用连接操作符。使用连接操作来连
9、接表语法:select column1,column2,column3 from table1 join operator table2 on join 例如:上述语句可以改写连接为:select a.IDCard,a.installplace,a.registerdate,a.ManState,b.model from ctarchives a right join ctkind b on a.ctkindid=b.id where a.RegisterDate(convert(char(8),getdate()-30,112)order by IDCard desc 8 SQL 语句中的集
10、合函数 集合函数以总和、记录数、平均值等形式返回指定列或表达式的集合结果。集合函数可以对查询中表示的所有行返回单独一个值。如果已经把一条 group by 子句加到 sql 语句中,那么集合结果是在成组的每一次上计算的。一出了你能使用的集合函数。集合函数 描述 Avg 计算列中所有值的总和并用值的个数去除,返回平均值 Count 返回在指定列或表达式中非零值的数目 Min 返回指定列或表达式的最小值 Max 返回指定列或表达式的最大值 Sum 返回指定更或表达式值的总和 以下语句说明了登录在册的话机总数 select count(*)from ctarchives 9 使用 GROUP BY子
11、句 假设你想在一列或多列的值得出的查询结果中按所有相似的行进行分组。你可以通过在 GROUP BY 子句指定那些列来把结果分组。如果指定的列多于一个,行首先按第一列成组,然后在这些组中再按第二列成组,依此类推。在下面的例子中,统计的是 GROUP BY 子句与一个集合函数相结合来展示函数如何在不同的组内应用于最后结果的。select b.model,count(b.model)from ctarchives a,ctkind b where a.ctkindid=b.id group by b.model 10 使用 HAVING 子句 类似于 where 子句,HAVING 子句用来指明查询
12、中要返数据的标准。它们的不同之处在于:在哪一层上检查标准。Where 子句用标准来限制查询返回的数据行。而 HAVING 子句中的标准是进一步根据分组的数据限制已组的行。查询种类数大于 100 的话机类型。select b.model,count(b.model)from ctarchives a,ctkind b where a.ctkindid=b.id group by b.model having count(b.model)500 11 SELECT INTO 说明:由于 delete、update、insert 等语句维护时用途小且容易造成误操作,因此,这些语句在这里不作深入介绍。
13、有兴趣学习者请自己找相关书籍阅读,但请不要自行在数据库中运行使用这些语句,否则,造成损失后无法完全恢复。Select into 是另一种创建新表的方法。这种方法不同于 CREA TE TABLE。在 CTRA TE TABLE中,要创建表的结构并没有明确地声明。相反,在 SELECT。INTO 中,表结构是由 SELECT 语句的结果所决定的。例如:我们将上例中根据话机型号查询的话机结果存入一张新表 ctarchives_new 中。select b.model,count(b.model)into model_count from ctarchives a,ctkind b where a.
14、ctkindid=b.id group by b.model 12 维护数据库检查常用语句 1、数据库完整性检查语句:在 SQL 查询分析器上运行以下语句 DBCC CHECKDB(CM)DBCC CHECKDB(routon)DBCC CHECKDB(Balnative)2、查表的完整性 DBCC CHECKTABLE(Fee_Fact)DBCC CHECKTABLE(FeeItem_Fact)DBCC CHECKTABLE(SrvItem_Fact)DBCC CHECKTABLE(SumA)3、检查显示表的数据的碎片信息 DBCC SHOWCONTIG(ConsumptRec)with a
15、ll_indexes DBCC SHOWCONTIG(ConsumptSvcItem)with all_indexes DBCC SHOWCONTIG(SvcFeeItem)with all_indexes DBCC SHOWCONTIG(CT_UP_Info)with all_indexes DBCC SHOWCONTIG(CTDealRec)with all_indexes 4、碎片整理的命令有二类 1.使用 DBCC DBREINDEX进行碎片整理,例如:DBCC DBREINDEX (ConsumptRec,85)DBCC DBREINDEX (ConsumptSvcItem,85)D
16、BCC DBREINDEX (SvcFeeItem,85)DBCC DBREINDEX (CT_UP_Info,85)注:该命令是通过重建全部索引进行碎片整理,并且使用该命令需要数据库中的数据文件有较大的可用空间,如果对 balnative 库使用该命令,需要扩大一部分文件组中的文件空间才能顺利执行该语句。使用 DBCC INDEXDEFRAG进行了碎片整理,例如:DBCC INDEXDEFRAG(balnative,fee_fact,4)DBCC INDEXDEFRAG(balnative,fee_fact,7)DBCC INDEXDEFRAG(balnative,fee_fact,9)DB
17、CC INDEXDEFRAG(balnative,fee_fact,10)注:该命令与 DBCC DBREINDEX(一般的索引生成操作)不同,它不长期控制锁,因此不会妨碍运行查询或更新。同时,不需要数据文件有较大的可用空间。该语句对“扫描密度”改善不明显,但对“逻辑扫描碎片”改善非常明显。另外,示例中的索引号的对应名称需要从sysindexes表中查询。13 总 结 这一章讲述了执行最常用 SQL 命令的基本方法。我们已经掌握了如何使用 SELECT 语句在不同的格式中检索行,以及如何合用。但是,在进一步使用 SQL 时,你会发现还需要更多的功能。应该花些时间去尝试这里所描述的命令,直到对它们如何工作有了很好的理解。然后,再研究和使用 SQL 更高级的功能。