数据查询SELECT语句回顾从学员表中查询全部的数据,SQL语句怎么写?什么是查询客户程序查询请求查询结果集SQLSERVERABCDEFGSELECT*FROMStudents查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来怎么查的学员编号学员姓名地址所在班级…….001张明全湖南长沙S201002李菲湖北宜昌S202003于寄谦甘肃天水S204004刘国正山东荷泽S201005周接轮台湾新竹S204006巩小妹香港龙湾S203007巩大妹香港龙湾S203008张明敏北京顺义S202009矛十八四川棉阳S204010罗林光陕西临潼S202011司马坡新疆喀什S201SELECT*FROMStudentsWHERE所在班级=‘S202’S202陕西临潼罗林光010…S202湖北宜昌李菲002S202北京顺义张明敏008思考既然查询得到的“结果集”的结构类似于一张表,那么可以在“结果集”上继续进行查询吗?编写查询语句之前…最常见的SELECT查询SELECTselect_listFROMtable_sourceWHEREsearch_condition列名称SELECTStudent_name表名FROMStudents过滤条件WHEREStudent_id='11001'无数据源的查询查询示例USEStudentGOSELECT'欢迎使用SQLServer','我的版本是',2000+5,'好好学习,天天向上'GO显示指定列或所有列的查询查询示例USEStudentGOSELECT*FROMCoursesGO使用计算列的查询例:在Courses表中查询学生的学号、课程号、成绩和处理后的成绩(原来成绩的70%)USEStudentGOSELECTStudent_id,Course_id,Student_grade,Student_grade*0.7FROMStudent_courseGO使用列的别名的查询使用AS来命名列例:在Students表中查询所有学生的Student_id(别名为学号),Student_name(别名为姓名),Student_sex(别名为性别)。USEStudentGOSELECTStudent_id'学号',Student_nameAS'姓名','性别'=Student_sexFROMStudentsGO使用=来命名列使用空格来命名列使用DISTINCT关键字的查询查询示例例:在Courses表中查询所有课程的类别。USEStudentGOSELECTDISTINCTCourse_kindFROMCoursesGO使用TOP关键字的查询查询示例例:查询Students表中的前6条记录。USEStudentGOSELECTTOP6*FROMStudentsGO限制固定行数USEStudentGOSELECTTOP6*FROMStudentsGO返回百分之多少行SELECTTOP20PERCENTStudent_name,Student_sexFROMStudents使用TOP关键字的查询语法格式WHEREsearch_condition使用WHERE子句的查询SQLServer中的函数相当于Java语言中的内置包字符串函数日期函数数学函数系统函数字符串函数SELECTSTUFF('ABCDEFG',2,3,'我的音乐我的世界')返回:A我的音乐我的世界EFG在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串STUFFSELECTCHARINDEX('ACCP','MyAccpCourse',1)返回:4用来寻找一个指定的字符串在另一个字符串中的起始位置CHARINDEX举例描述函数名SELECTLEN('SQLServer课程')返回:12返回传递给它的字符串长度LENSELECTLOWER('SQLServer课程')返回:sqlserver课程把传递给它的字符串转换为小写LOWERSELECTUPPER('sqlserver课程')返回:SQLSERVER课程把传递给它的字符串转换为大写UPPERSELECTLTRIM('周智宇')返回:周智宇(后面的空格保留)清除字符左边的空格LTRIMSELECTRTRIM('周智宇')返回:周智宇(前面的空格保留)清除字符右边的空格RTRIMSELECTRIGHT('买卖提.吐尔松',3)返回:吐尔松从字符串右边返回指定数目的字符RIGHTSELECTREPLACE('莫乐可切.杨可','可','兰')返回:莫乐兰切.杨兰替换一个字符串中的字符REPLACE日期函数SELECTDATEPART(day,’01/15/2000’)返回:15日期中指定日期部分的整数形式DATEPARTSELECTGETDATE()返回:今天的日期取得当前的系统日期GETDATE举例描述函数名SELECTDATEADD(mm,4,’01/01/99’)返回:以当前的日期格式返回05/01/99将指定的数值添加到指定的日期部分后的日期DATEADDSELECTDATEDIFF(mm,’01/01/99’,’05/01/99’)返回:4两个日期之间的指定日期部分的区别DATEDIFFSELECTDATENAME(dw,’01/01/2000’)返回:Saturday日期中指定日期部分的字符串形式DATENAME数学函数SELECTSQRT(9)返回:3取浮点表达式的平方根SqrtSELECTABS(-43)返回:43取数值表达式的绝对值ABS举例描述函数名SELECTCEILING(43.5)返回:44返回大于或等于所给数字表达式的最小整数CEILINGSELECTPOWER(5,2)返回:25取数值表达式的幂值POWERSELECTROUND(43.543,1)返回:43.5将数值表达式四舍五入为指定精度ROUNDSELECTSIGN(-43)返回:-1对于正数返回+1,对于负数返回-1,对于0则返回0SignSELECTFLOOR(43.5)返回:43取小于或等于指定表达式的最大整数FLOOR系统函数SELECTUSER_NAME(1)返回:从任意数据库中返回“dbo”从给定的用户ID返回用户名USER_NAMESELECTCONVERT(VARCHAR(5),12345)返回:字符串12345用来转变数据类型CONVERT举例描述函数名SELECTCURRENT_USER返回:你登录的用户名返回当前用户的名字CURRENT_USERSELECTDATALENGTH('中国A盟')返回:7返回用于指定表达式的字节数DATALENGTHSELECTHOST_NAME()返回:你所登录的计算机的名字返回当前用户所登录的计算机名字HOST_NAMESELECTSYSTEM_USER返回:你当前所登录的用户名返回当前所登录的用户名称SYSTEM_USER查询示例例:在Students表中查询年龄小于等于22岁的学生的学号、姓名以及班级号。USEStudentGOSELECTStudent_idAS'学号',Student_nameAS'姓名',Student_classidAS'班级号'FROMStudentsWHEREYEAR(GETDATE())-YEAR(Student_birthday)=22GO在WHERE子句中使用算术表达式查询示例例:在Student_course表中查询85~90分之间的所有成绩。USEStudentGOSELECTStudent_id,Course_idFROMStudent_courseWHEREStudent_gradeBETWEEN85AND90在WHERE子句中使用BETWEEN关键字查询示例例:在Students表中查询家庭所在地为山西和重庆的学生信息。USEStudentSELECT*FROMStudentsWHEREStudent_homeIN('山西','重庆')在WHERE子句中使用IN关键字查询示例例:在Students表中查询姓名中包含“佳”字的学生信息。USEStudentGOSELECT*FROMStudentsWHEREStudent_nameLIKE'%佳%'GO在WHERE子句中使用LIKE关键字进行模糊查询语法格式ORDERBY子句用来对查询的结果集进行排序,其语法格式为:ORDERBY{order_by_expression[ASC|DESC]}[,...n]使用ORDERBY子句的查询-1参数说明order_by_expression:指定要排序的列。ASC:指定按升序,从最低值到最高值对指定列中的值进行排序。DESC:指定按降序,从最高值到最低值对指定列中的值进行排序。查询示例例:在表Students中查询所有的男同学记录,并将查询结果按照学生姓名升序排序。USEStudentGOSELECT*FROMStudentsWHEREStudent_sex='男'ORDERBYStudent_nameASCGO使用ORDERBY子句的查询-2使用ORDERBY子句的查询-3按多列排序SELECTStudent_idAs学号,Student_gradeAs成绩,Course_idAs课程号FROMStudent_courseWHEREStudent_grade60ORDERBYStudent_grade,Course_id排序中的字段,可以使用表达式吗?——如果不可以,请说明原因;——如果可以,请举例说明;在数据库表中有以下字符数据,如:13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2现在希望通过SQL语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排序,也就是说,输出要排成这样:13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2数据库表名:SellRecord;字段名:ListNumber;这是查询语句,需要使用SELECT语句需要使用到ORDERBY进行排序,并且在ORDERBY的排序列中,也需要重新计算出排序的数字来前半部分的数字,可以从先找到“-”符号的位置,然后,取其左半部分,最后再使用Convert函数将其转换为数字:Convert(int,Left(ListNumber,CharIndex('-',ListNumber)-1))后半部分的数字,可以先找到“-”符号的位置,然后把从第一个位置到该位置的全部字符替换为空串,最后再使用Convert函数将其转换为数字:Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))SELECTListNumberFROMSellRecordORDERBYConvert(int,Left(ListNumber,CharIndex('-',ListNumber)-1)),Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))语句实现使用聚合函数的查询-1在SELECT语句中可以使用聚合函数对查询结果集进行数据汇总、统计等多种处理。常用的聚合函数如下表所示:•ALL:表示对所有的值进行聚合函数运算,如不指定ALL或DISTINCT,默认为ALL。•DISTINCT:仅对不同的值进行聚合函数运算。•在COUNT函数中使用column_name时,返回值为该列中不含NULL值的行记录的个数;若使用*作参数,返回值为表中的所有行数,包括含有NULL值的行。函数名称函数格式函数功能sumsum([ALL|DISTINCT]expression)返回表达式中所有值的和avgavg([ALL|DISTINCT]expression)返回组中各值的平均值minmin([