您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > SQL Server数据查询基本方法的总结
【IT168技术文档】首先创建一个简单的数据库作为示例数据库,数据库名称为school_db,里面有三张表Department_TBL(DNO,DName),Class_TBL(CNO,CName,DNO),Student_TBL(SNO,SName,SSex,CNO)一基本查询基本语法:select(查询列表|*)from(表列表)说明:“查询列表”可以是表的字段,表达式,函数。“表列表”可以包含多张表示例:查询所有学生的基本信息Select*fromStudent_TBL二where条件查询基本语法:select(查询列表|*)from(表列表)where(限制条件)说明:where关键字后面的限制条件不能包含聚合函数示例:查询所在班级编号是“003”的学生的基本信息Select*fromStudent_TBLwhereCNO=’003’三关键字in的使用基本语法:select(查询列表|*)from(表列表)where(字段名)in(值集合)说明:in关键字的作用是查询某一字段是否在一个集合中,一般在where语句中使用示例:查询学号为23,34,35,40学生的信息Select*fromStudent_TBLwhereSNOin(23,34,35,40)四between和Notbetween的使用基本语法:select(查询列表|*)from(表列表)where(字段名)between||notbetween值1AND值2说明:判断某个字段的值是否在一个范围之内示例:查询所有学号大于5小于30的学生的信息Select*fromStudent_TBLwhereSNObetween5and30五消除结果集中的重复行基本语法:selectdistinctcolumn1,…from(表列表)说明:去除结果集中跟在distinct关键字后面所有字段的值相等的记录示例:查询所有学生的信息,删除名字相同的多余行Selectdistinctcolumn1,…fromStudent_TBL六返回指定的行数(百分率)基本语法:selecttopn[percent](column1,…)from(表列表)说明:n为要返回的行数,若含有percent关键字则按百分比返回,则此时n必须在0~100之间,若查询语句中含有orderby则先对查询结果进行排序,再执行筛选示例:返回前十名学生的基本信息Selecttop10*fromStudent_TBL返回前百分之十的学生的基本信息Selecttop10percent*fromStudent_TBL七改变查询标题基本语法:select‘自定义标题’=column1,….From(表列表),selectcolumn1‘自定义标题’,….From(表列表),selectcolumn1as‘自定义标题’,…from(表列表)说明:改变的只是查询结果的标题,并没有改变表的标题示例:查询学生的基本信息,SNO,SName,CNO分别用“学号”,“姓名”,”所属班级”显示、这里只使用第三种方法演示了Select‘学号’asSNO,’姓名’asSName,’所属班级’as‘CNO’fromStudent_TBL八在查询结果中显示字符串基本语法:在select语句中,将增加的字符串用单引号括起来然后和列的名字写在一起,中间用逗号分开示例:查询所有学生信息,显示的结果的形式是“学号+“我的姓名是+”性命+班级编号”SelectSNO,’我的姓名是’,SName,CNOfromStudent_TBL九orderby的使用基本语法:select*fromtable_Name[where..]orderbycolumn1[asc]desc]…说明:orderby后面可以指定多个列,默认是按升序方式排列的,orderby放在where语句之后示例:查询所有学好大于23号的学生信息,并按学号的降序排列Select*fromStudent_TBLwhereSNO23orderbySNOdesc十使用Like实现模糊查询基本语法:select*fromtable_Namewherecolumnlike(匹配条件)说明:“%”匹配任意长度的(长度可以为0)字符串,“_”匹配任意单个字符,“[]”:匹配所给定范围或集合中的任意单个字符,“[^]”匹配所给定的不在所给定的集合或范围中的任意单个字符,通配符或字符串必须用单引号括起来示例:查询所有姓李的同学地信息Select*fromStudent_TBLwhereSNamelike‘李%’查询所有学生名字中第二个字为“冰”的同学的信息Select*fromStudent_TBLwhereSNamelike‘_冰%’查询所有编号中含有’e,t,y’字符的班级信息Select*fromClass_TBLwhereCNOlike‘[e,t,y]’查询所有编号中不含有’e,t,y’字符的班级信息Select*fromClass_TBLwhereCNOlike‘[^e,t,y]’十一使用isnull基本语法:select*fromtable_Namewherecolumnisnull说明:查询指定列为输入数据的数据行,通常用在where语句中示例:查询还没有分配班级的学生的信息十二使用compute进行计算基本语法:select*fromtable_namewhere查询条件compute聚合函数说明:用来计算总计或进行分组小计,总计或小计值作为附加行出现在查询结果中示例:计算在编号为‘001’班级的学生的信息并统计该班有多少个学生Select*fromStudent_TBLwhereCNO=’001’computecount(*)十三使用computeby分组查询结果基本语法:select*fromtable_Name[where..]orderbycolumncompute聚合函数bycolumn说明:在使用computeby之前必须先使用orderby对要进行分组的列进行排序,注意,在oerderby中进行排序的列的数量和顺序必须和computeby后的项一样示例:根据不同班级分组统计各个班级学生的信息Select*fromStudent_TBLorderbyCNOcomputecount(SNO)byCNO十四使用groupby基本语法:select*fromtable_name[where…]groupbycolumn说明:在select子句中使用聚合函数时,groupby计算每组的汇总值,使用groupby子句时,在select子句中出现的列名或者出现在聚合函数中,或者出现在groupby子句后面,否则会抱错,另外groupby后面还可以恩withcube||rollup,示例:统计每个班级有多少学生,不显示学生的信息,只显示统计信息SelectCNO,count(SNO)fromStudent_TBLgroupbyCNO十五使用having语句基本语法:select*fromtable_name[where…]groupbycolumnhaving…说明:having子句用于限定对组或者聚合函数的查询条件,该子句常用于groupby子句后面,在查询结果分组后对组判断是否满足查询条件,在分组之前可以用where语句判断查询条件,使用where比使用having更有效,因为它先将不满足条件的行过滤掉,从而减少了要进行分组的行数示例:分组统计除编号为‘001’外所有班级学生的人数SelectCNO,count(SNO)fromStudent_TBLgroupbyCNOhavingCNO’001’十六子查询基本语法:说明:子查询是在查询中包含另一个查询的查询,可以使用子查询代替表达式,自查询只能返回一列数,有时只返回但个值示例:查询班级人数大于平均班级人数的班级Select*fromClass_TBLwhere(selectcount(*)fromstudentwhereCNO=Class_TBL.CNO)((selectcount(*)fromStudent_TBL)/(十七使用union运算符合并多个查询结果基本语法:selectcolumn1fromtable1_nameunionselectcolumn2fromtable2_name说明:所有查询中的列数和列的顺序必须相同,所有查询中按顺序对应列的数据类型必须相同或兼容,如果希望重新排序多个查询结果的合并结果,则在最后的select语句中使用orderby子句十八查询多个表或视图的信息基本语法:selectcolumn1,column2,…fromtalbe1,table2,…说明:在涉及多表查询时必须使用where语句给出多表之间的连接条件,对来自N各表或视图查询要写出N-1个连接条件示例:查询每个学生所在的系部的名称,班级的名称和姓名SelectDName,CName,SNamefromStudent_TBLS,Class_TBLC,Department_TBLDwhereS.CNO=C.CNOandC.DNO=D.DNO十九相等连接与自然连接:相等连接是将要连接的列作相等比较的连接,在相等连接列中只保留一个连接列的连接称为自然连接二十比较连接:表与表之间的连接不使用“=”连接,而是使用比较运算符的连接二十一自连接就是表与它自己进行连接二十二左连接,右连接和全连接二十三使用exists:在where子句中可以使用exists子句,它用于测试跟随的子查询中的行是否存在
本文标题:SQL Server数据查询基本方法的总结
链接地址:https://www.777doc.com/doc-3458960 .html