数据库应用与开发课件第5章.ppt
《数据库应用与开发课件第5章.ppt》由会员分享,可在线阅读,更多相关《数据库应用与开发课件第5章.ppt(153页珍藏版)》请在文库网上搜索。
1、第第5章章使用使用SQL语言管理和设语言管理和设计数据库计数据库主要学习内容SQLServer数据管理基本数据查询复杂数据查询使用SQL语句设计和管理数据库学习目标了解SQLServer的数据管理功能掌握基本数据查询方法熟练掌握使用SQL语句设计和管理数据库导入案例导入案例使用软件产品提供的菜单服务仿佛是到餐厅用餐,即便你第一次光临,也能在餐桌上摆放的菜单帮助下,找到你想要的一切。而软件语言如同你光顾久了的餐厅的外卖服务,只需拨动一个电话号码,你也能吃到你熟悉的餐点。如果与餐厅上下相处的十分融洽,或许你还可以在特殊时候订制菜谱,然后由外卖朋友送上门。当然不同的餐馆提供的服务不同,人性化服务的程
2、度也各异。幸运的是,SQLServer不仅提供了全面的菜单命令,帮助我们建设数据库、保护数据库、编辑数据库,还提供了更加灵活全面的Transact-SQL(T-SQL)语言,帮助用户实现数据库数据的编辑和各种效果的查询统计,以及数据库的建设和安全保卫。本章主要介绍符合SQL标准部分的T-SQL语言。5.1SQLServer数据管理数据管理T-SQL与SQL插入数据更新数据行删除数据行Merge语法5.1.1T-SQL与与SQLSQL(StructuredQueryLanguage),即结构化查询语言。它包括数据定义语言DDL、数据管理语言DML和数据控制语言DCL。DDL用来建立数据库、数据库
3、对象和定义其列,语句有CREATETABLE、DROPTABLE等。DML语言用来查询、插入、删除和修改数据库中的数据;语句有SELECT、INSERT、UPDATE、DELETE等;DCL语言用来控制存取许可、存取权限等,语句有:GRANT、REVOKE等。为什么使用SQL一方面可以帮助关系数据库自身灵活操作数据库;一方面可以帮助应用程序方便管理数据。T-SQLT-SQL(Transact-SQL),是SQL的加强版,包括:1)DML,有SELECT、INSERT、UPDATE、DELETE等。2)DCL,有:GRANT、REVOKE等。3)DDL,有CREATETABLE、DROPTABL
4、E等。4)变量说明、流程控制、功能函数:定义变量、判断、分支、循环结构等;函数包括日期函数、数学函数、字符函数、系统函数等。运算符运算符 含义运算符含义运算符含义=等于=大于或等于!非大于=小于或等于小于不等于通配符通配符通配符 解释示例_一个字符A Like C_%任意长度的字符串B Like CO_%括号中所指定范围内的一个字符C Like 9W01-2不在括号中所指定范围内的一个字符D Like%A-D1-2逻辑表达式逻辑运算符说明示例AND逻辑与1AND1=1;1AND0=0;0AND0=0;OR逻辑或1OR1=1;1OR0=1;0OR0=0;NOT逻辑非NOT1=0;NOT0=1;5
5、.1.2插入数据插入数据1.插入一条数据行插入一条数据行INSERTINTO列名VALUES例:例:有表Student(sNo,sName,sAddress,sGrade,sEmail,sSex)insertintoStudent(sNo,sName,sAddress,sGrade,sEmail,sSex)values(020110001,张黎,上海,2011,ZQCS,0)插入语句的注意事项插入语句的注意事项1)每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;2)每个数据值的数据类型、精度和小数位数必须与相应的列匹配;3)不能为标识列指
6、定值,因为它的数字是自动增长的;4)如果在设计表的时候就指定了某列不允许为空,则必须插入数据;5)插入的数据项,要求符合检查约束的要求。6)具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值插入一条示例插入多行数据插入多行数据1)从已知表向已知表插入若干条满足条件记录INSERTINTO(列名)SELECTFROM例:INSERTINTOTongXunLu(姓名,地址,电子邮件)SELECTSName,SAddress,SEmailFROMStudent插入多行数据插入多行数据2)从已知表向未知表插入多行数据SELECT(列名)INTOFROM注:该语句只能执行一次注:该语句
7、只能执行一次。例:SELECTStudent.SName,Student.SAddress,Student.SEmailINTOTongXunLu1FROMStudent插入多行数据插入多行数据3)SELECTIDENTITY(数据类型,标识种子,标识增长量)AS列名INTO新表FROM原始表例:SELECTStudent.SName,Student.SAddress,Student.SEmail,IDENTITY(int,1,1)AsStudentIDINTOTongXunLu2FROMStudent从已知表向其他表一次插入多条记录插入多行数据插入多行数据4)插入多行常值记录,语法如下:IN
8、SERTINTO(列名)SELECTUNIONSELECTUNIONSELECT插入多行数据插入多行数据例:INSERTSTUDENTS(SName,SGrade,SSex)SELECT测试女生1,7,0UNIONSELECT测试女生2,7,0UNIONSELECT测试女生3,7,0UNIONSELECT测试女生4,7,0UNIONSELECT测试女生1,7,0UNIONSELECT测试男生2,7,1UNIONSELECT测试男生3,7,1UNIONSELECT测试男生4,7,1UNIONSELECT测试男生5,7,1插入多行数据插入多行数据5)简化的插入多条记录的sql语句向已知表中插入多条
9、常值5.1.3更新数据行更新数据行1.更新表数据语法更新表数据语法UPDATESET,SETWHERE例:用常量作更新值。例:用常量作更新值。UPDATEStudentSETSSEX=0例:有条件更新例:有条件更新UPDATEStudentSETSAddress=北京北京WHERESAddress=上海上海例:用表达式更新例:用表达式更新UPDATEstudentSETsSex=sSex+1WHEREsSex=1无条件和有条件更新数据更新数据行2.用其他表中数据更新表数据语法用其他表中数据更新表数据语法UPDATESETfrom,WHERE更新数据行3.允许使用复合赋值操作符允许使用复合赋值操
10、作符更新前更新后5.1.4删除数据行删除数据行1.删除数据行语法删除数据行语法DELETEFROMWHERE例:DELETEFROMStudentWHERESName=张青删除数据行删除数据行2.清空表中数据中数据清空表中数据中数据TRUNCATETABLE5.1.5Merge语法语法Merge语法是在一条语句中同时执行插入,更新,删除这三个操作。操作原理是根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以将两个表进行同步。Merge语法语法Merge语法包含4个主要的子句:Merge子句用于指定进行insert、dele
11、te和update操作的目标表或视图,Using子句用于指定要与目标数据连接的数据源,ON子句用于指定目标数据与数据源联接位置的匹配条件,When子句用于根据ON子句的结果指定的操作。Merge语法语法例:usetestDB-创建一个订单表CREATETABLEOrders(orderIDint,customerIDchar(10)GOMerge语法语法-往订单表中添加两行记录INSERTINTOOrdersVALUES(1,2012010101),(2,2012010102)-复制订单表中第一条数据到新建表Order2SELECT*INTOOrders2FROMOrdersWHEREOrde
12、rID=1-显示两个表初值select*fromordersselect*fromorders2-将Order2表的数据进行更新UPDATEorders2SETCustomerID=2012010103Merge语法语法-合并两个表MERGEOrdersASo1USINGOrders2ASo2ONo2.OrderID=o1.OrderIDWHENMATCHEDTHENUPDATESETo1.CustomerID=o2.CustomerID-如-果匹配到了,就更新掉目标表WHENNOTMATCHEDTHENINSERTVALUES(o2.OrderID,o2.CustomerID)-如-果匹配不
13、到,就插入WHENNOTMATCHEDBYSOURCETHENDELETE;-如果来源表无法匹配到,就删除-显示修改后表select*fromordersselect*fromorders2goMerge例题小结小结SQL(结构化查询语言)是数据库能够识别的通用指令集。SQLServer中的通配符经常和LIKE结合使用来进行不精确的限制。WHERE用来限制条件,其后紧跟条件表达式。一次插入多行数据,可以使用INSERTSELECT、SELECTINTO或者UNION关键字来实现。使用UPDATE更新数据,一般都有限制条件。使用DELETE删除数据时,不能删除被外键值所引用的数据行。5.2基本数
14、据查询基本数据查询基本查询基本函数综合应用5.2.1基本查询1.查询基本语法:查询基本语法:SELECTFROMWHEREORDERBYASC或DESCuse数据库名-打开数据库SELECTsNo,SName,SAddressFROMStudentWHERESSEX=1ORDERBYsNo基本查询2.查询全部的行和列查询全部的行和列例:SELECT*FROMStudent基本查询3.查询部分行查询部分行例:SELECTsNo,SName,SAddressFROMStudentWHERESAddress=北京例:SELECTsNo,SName,SAddressFROMStudentWHERESA
15、ddress上海基本查询示例基本查询4.数据查询数据查询-列名列名1)使用使用AS来命名列来命名列例:SELECTsNoAS学生编号,SNameAS学生姓名,SAddressAS学生地址FROMStudentWHERESAddress北京例:SELECTsAddress+and+sEmailAS地址及邮箱FROMstudent基本查询4.数据查询数据查询-列名列名2)使用=来命名列例:SELECT地址及邮箱=sAddress+and+sEmailFROMstudent3)使用常量列)使用常量列例:SELECT姓名=SName,地址=SAddress,河北新龙AS学校名称FROMStudents
16、命名列例题基本查询4.数据查询数据查询-列名列名4)判断一行中的数据项是否为空例:SELECTSNameFromStudentwheresEmailISNULL基本查询5.数据查询数据查询-限制行数限制行数1)限制固定行数限制固定行数例:例:SELECTTOP5SName,SAddressFROMStudentWHERESSex=12)返回百分之多少行返回百分之多少行例:例:SELECTTOP20PERCENTSName,SAddressFROMStudentWHERESSex=1限制行数查询基本查询6.数据查询数据查询-排序排序1)升序排列升序排列ASC是默认升序排序命令,可以缺省。是默认升
17、序排序命令,可以缺省。例:例:select*fromstuInfoorderbystuNoASC基本查询6.数据查询数据查询-排序排序2)降序排列)降序排列DESC是降序排序命令。是降序排序命令。例:例:select*fromstuInfoorderbystuNoDESC基本查询6.数据查询数据查询-排序排序3)按照表达式排序)按照表达式排序例:SELECTstuNoAs学员编号,(Score*0.9+5)As综合成绩FROMScoresWHERE(Score*0.9+5)60ORDERBYScore基本查询6.数据查询数据查询-排序排序4)按照新命名列排序按照新命名列排序例:SELECTst
18、uNo+.+cNoAS学号.科目号FromScoresUnionSELECTstuNo+.+cNoAS学号.科目号FromScores2ORDERBY学号.科目号DESC基本查询6.数据查询数据查询-排序排序5)按多列排序按多列排序例:SELECTstuNoAs学员编号,ScoreAs成绩FROMScoresWHEREScore60ORDERBYScore,cNo排序查询示例基本查询7.distinct-去掉重复记录行去掉重复记录行例:在成绩表scores(stuNo,cNo,score)中查询参加考试的学生考号SELECTdistinctstuNofromscoresdistinct查询结果
19、5.2.2基本函数基本函数函数名函数名描述描述举例例CHARINDEX用来寻找一个指定的字符串在另一个字符串中的起用来寻找一个指定的字符串在另一个字符串中的起始位置始位置SELECTCHARINDEX(ACCP,MyAccpCourse,1)返回:返回:4LEN返回传递给它的字符串长度返回传递给它的字符串长度SELECT LEN(SQL Server课程课程)返回:返回:12LOWER把传递给它的字符串转换为小写把传递给它的字符串转换为小写SELECT LOWER(SQL Server课程课程)返回:返回:sql server课程课程UPPER把传递给它的字符串转换为大写把传递给它的字符串转换
20、为大写SELECT UPPER(sql server课程课程)返回:返回:SQL SERVER课程课程LTRIM清除字符左边的空格清除字符左边的空格SELECT LTRIM(周智宇周智宇 )返回:周智宇返回:周智宇 (后面的空格保留)(后面的空格保留)RTRIM清除字符右边的空格清除字符右边的空格SELECT RTRIM(周智宇周智宇 )返回:返回:周智宇(前面的空格保留)周智宇(前面的空格保留)RIGHT从字符串右边返回指定数目的字符从字符串右边返回指定数目的字符SELECT RIGHT(买卖提买卖提.吐尔松吐尔松,3)返回:吐尔松返回:吐尔松REPLACE替换一个字符串中的字符替换一个字符
21、串中的字符SELECT REPLACE(莫乐可切莫乐可切.杨可杨可,可可,兰兰)返回:莫乐兰切返回:莫乐兰切.杨兰杨兰STUFF在一个字符串中,删除指定长度的字符,并在该位在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串置插入一个新的字符串SELECT STUFF(ABCDEFG,2,3,我的音乐我的世我的音乐我的世界界)返回:返回:A我的音乐我的世界我的音乐我的世界EFG字符串函数表字符串函数表日期函数函数名函数名描述描述举例举例GETDATE取得当前的系统日期取得当前的系统日期SELECT GETDATE()返回:今天的日期返回:今天的日期DATEADD将指定的数值添加到指
22、定的日期将指定的数值添加到指定的日期部分后的日期部分后的日期SELECT DATEADD(mm,4,01/01/99)返回:以当前的日期格式返回返回:以当前的日期格式返回05/01/99DATEDIFF两个日期之间的指定日期部分的两个日期之间的指定日期部分的区别区别SELECT DATEDIFF(mm,01/01/99,05/01/99)返回:返回:4DATENAME日期中指定日期部分的字符串形日期中指定日期部分的字符串形式式SELECT DATENAME(dw,01/01/2000)返回:返回:SaturdayDATEPART日期中指定日期部分的整数形式日期中指定日期部分的整数形式SELEC
23、T DATEPART(day,01/15/2000)返回:返回:15数学函数表函数名函数名描述描述举例举例ABS取数值表达式的绝对值取数值表达式的绝对值SELECT ABS(-43)返回:返回:43CEILING返回大于或等于所给数字表达式返回大于或等于所给数字表达式的最小整数的最小整数SELECT CEILING(43.5)返回:返回:44FLOOR取小于或等于指定表达式的最大取小于或等于指定表达式的最大整数整数SELECT FLOOR(43.5)返回:返回:43POWER取数值表达式的幂值取数值表达式的幂值SELECT POWER(5,2)返回:返回:25ROUND将数值表达式四舍五入为指
24、定精将数值表达式四舍五入为指定精度度SELECT ROUND(43.543,1)返回:返回:43.5Sign对于正数返回对于正数返回+1,对于负数返回,对于负数返回-1,对于,对于0 则返回则返回0SELECT SIGN(-43)返回:返回:-1Sqrt取浮点表达式的平方根取浮点表达式的平方根SELECT SQRT(9)返回:返回:3系统函数表函数名函数名描述描述举例举例CONVERT 用来转变数据类型用来转变数据类型SELECT CONVERT(VARCHAR(5),12345)返回:字符串返回:字符串12345CURRENT_USER 返回当前用户的名字返回当前用户的名字SELECT CU
25、RRENT_USER返回:你登录的用户名返回:你登录的用户名DATALENGTH返回用于指定表达式的字节返回用于指定表达式的字节数数SELECT DATALENGTH(中国中国A盟盟)返回:返回:7HOST_NAME 返回当前用户所登录的计算返回当前用户所登录的计算机名字机名字SELECT HOST_NAME()返回:你所登录的计算机的返回:你所登录的计算机的名字名字SYSTEM_USER 返回当前所登录的用户名称返回当前所登录的用户名称SELECT SYSTEM_USER返回:你当前所登录的用户返回:你当前所登录的用户名名USER_NAME从给定的用户从给定的用户I D返回用户名返回用户名S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 开发 课件