数据库查询

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ACCPV4.01第四章数据查询(1)ACCPV4.02回顾SQL分为数据操作语言、数据控制语言和数据定义语言;T-SQL是SQL的扩展通配符经常与LIKE一起使用来进行非精确的限制;一次插入多行数据,可以使用INSERT…SELECT…、SELECT…INTO…或者UNION关键字来实现标识列不能插入指定的数据值使用UPDATE更新数据,一般都有限制条件使用DELETE删除数据时,不能删除被外键值所引用的数据行使用TRUNCATETABLE来删除所有数据时,效率要比DELETE语句高上面的数据操作语句在程序中会经常使用到ACCPV4.03目标理解查询的机制使用SELECT语句进行条件查询在查询中返回限制行、进行查询排序在查询中使用表达式、运算符和函数ACCPV4.04什么是查询?ApplicationLogic客户程序查询请求查询结果集SQLSERVERABCDEFGSELECT*FROMSALES针对已存在的数据进行查询,可以查询所有的数据,也可以筛选符合自己需求的数据查询出来的结果通常叫记录集,貌似表的结构,显示出来ACCPV4.05怎么查的?学员编号学员姓名地址所在班级…….001张明全湖南长沙S201002李菲湖北宜昌S202003于寄谦甘肃天水S204004刘国正山东荷泽S201005周接轮台湾新竹S204006巩小妹香港龙湾S203007巩大妹香港龙湾S203008张明敏北京顺义S202009矛十八四川棉阳S204010罗林光陕西临潼S202011司马坡新疆喀什S201S202陕西临潼罗林光010…S202湖北宜昌李菲002S202北京顺义张明敏008SELECT*FROMStudentsHWHERE所在班级=‘S202’逐行查询,挑选符合条件的数据组合成表的样子ACCPV4.06思考既然查询得到的“结果集”的结构类似于一张表,那么可以在“结果集”上继续进行查询吗?ACCPV4.07编写查询语句之前…•use数据库名表示接下来将使用指定的数据库中的对象ACCPV4.08查询SELECT列名FROM表名[WHERE查询条件表达式][ORDERBY排序的列名[ASC或DESC]]列名称SELECTSCode,SName,SAddress表名FROMStudents过滤条件WHERESSEX=0排序条件ORDERBYSCodeSELECTSCode,SName,SAddressFROMStudentsWHERESSEX=0ORDERBYSCode语法:其中:orderby是排序关键字,asc为升序(默认),desc为降序ACCPV4.09数据查询-基础查询全部的行和列SELECT*FROMStudents查询部分行SELECTSCode,SName,SAddressFROMStudentsWHERESAddress='河南新乡'SELECTSCode,SName,SAddressFROMStudentsWHERESAddress'河南新乡'ACCPV4.010数据查询-列名使用AS来命名列SELECTSCodeAS学员编号,SNameAS学员姓名,SAddressAS学员地址FROMStudentsWHERESAddress'河南新乡'SELECTFirstName+'.'+LastNameAS'姓名'FROMEmployees使用=来命名列SELECT'姓名'=FirstName+'.'+LastNameFROMEmployeesACCPV4.011数据查询-空行常量列查询空行SELECTSNameFROMStudentsWHERESEmailISNULL使用常量列SELECT姓名=SName,地址=SAddress,‘北大青鸟'AS学校名称FROMStudents说明:使用常量值’北大青鸟’来填充列名为学校名称的列思考:非空行怎么查?ACCPV4.012数据查询-限制行数限制只查询符合条件的前几条数据:在查询字段前加top你要查看的行数SELECTTOP5SName,SAddressFROMStudentsWHERESSex=0SELECTTOP10*FROMStudentsWHEREssex=0按查询出来的结果集的百分之多少行来显示SELECTTOP20PERCENTSName,SAddressFROMStudentsWHERESSex=0ACCPV4.013数据查询-排序2-1升序排列SELECTStudentIDAs学员编号,(Score*0.9+5)As综合成绩FROMScoreWHERE(Score*0.9+5)60ORDERBYScore降序排列SELECTAu_Lname+'.'+Au_fNameASEMPFromAuthorsUnionSELECTfName+'.'+LNameASEMPFromEmployeeORDERBYEMPDESC用union连接2个表的数据时要注意2个结果集中的数据类型要一致ACCPV4.014数据查询-排序2-2按多列排序SELECTStudentIDAs学员编号,ScoreAs成绩FROMScoreWHEREScore60ORDERBYScore,CourseID排序原理:先按照第一个列排,当有重复的时候,再考虑第2个列,依次类推!!ACCPV4.015SQLServer中的函数相当于C语言中的内部函数字符串函数日期函数数学函数系统函数ACCPV4.016字符串函数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字符串函数用来控制返回给用户的字符串ACCPV4.017字符串函数例子select*fromstudentwherecharindex('妹',name,1)0select*fromstudentwherelen(pwd)6selectreplace('accp','p','aptech')selectright('accpaptech',7)selectstuff('我是一个大侠',3,2,'游荡在牛A与牛C之间的')ACCPV4.018日期函数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日期中指定日期部分的字符串形式DATENAMEACCPV4.019日期函数实例selectdateadd(dd,3,'2004-02-28')selectdateadd(dd,3,‘02/28/2004')selectdatediff(mm,'12/05/2004','02/23/2002')selectdatediff(ms,getdate(),getdate())selectdatediff(ms,getdate(),dateadd(ms,10,getdate()))selectdatename(mm,getdate())SELECTDATEPART(m,0),DATEPART(d,0),DATEPART(yy,0)ACCPV4.020数学函数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取小于或等于指定表达式的最大整数FLOORACCPV4.021系统函数SELECTUSER_NAME(1)返回:从任意数据库中返回“dbo”从给定的用户ID返回用户名USER_NAMESELECTCONVERT(VARCHAR(5),12345)返回:字符串12345用来转变数据类型CONVERT举例描述函数名SELECTCURRENT_USER返回:你登录的用户名返回当前用户的名字CURRENT_USERSELECTDATALENGTH('中国A盟')返回:7返回用于指定表达式的字节数DATALENGTHSELECTHOST_NAME()返回:你所登录的计算机的名字返回当前用户所登录的计算机名字HOST_NAMESELECTSYSTEM_USER返回:你当前所登录的用户名返回当前所登录的用户名称SYSTEM_USERACCPV4.022案例分析1—要求某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:卡里面的“O和0”(哦和零)“i和1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“哦”都改成“零”,把所有的“i”都改成“1”;请编写SQL语句实现以上要求;数据库表名:Card;密码字段名:PassWord;ACCPV4.023案例分析1—分析这是更新语句,需要使用UPDATE语句;因为牵涉到字符串的替换,需要使用到SQLServer中的函数Replace;ACCPV4.024案例分析1—T-SQL两行SQL语句UpdateCardSetPassWord=Replace(密码,'O','0')UpdateCardSetPassWord=Replace(密码,'i','1')一行SQL语句UpdateCardSetPassWord=Replace(Replace(密码,'O','0'),'i','1')ACCPV4.025案例分析2—要求在数据库表中有以下字符数据,如: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;字段

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功