数据库总结

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

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

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

资源描述

1.数据库特点:较小的冗余度。较高的数据独立性、易扩展性。可为各种用户共享数据库是数据集合2.DBMS功能:数据定义功能。数据组织、存储和管理(文件结构和存取方式)。数据操纵功能(增删查改)3.高级数据库系统:分布式数据库系统,面向对象数据库系统4.数据模型的组成部分包括:数据结构,数据操作,数据约束条件。5.数据更新:数据添加,数据修改,数据删除。6.数据模型(网状、层次、关系模型):按计算机系统的观点建模,主要用于DBMS的实现,不包括E-R关系模型中由三种完整性约束:实体完整性,参照完整性,用户自定义完整性。7.关系:(Relation)一个关系通常是一张表。8.分量:某一元组的一个属性值,为最小单位,不可分。9.存储结构:在DB物理组织之中,表以文件形式储存10.数据库系统结构:从DBMS角度:外模式(ExternalSchema),模式(Schema),内模式(InternalSchema)。从最终用户角度:集中式结构。分布式结构。客户/服务器结构。并行结构11.12.模式/内模式映象是唯一的,同一个模式可以有任意多个外模式;三级模式与二级映像优点:(1)保证数据的独立性(2)简化用户接口(3)有利于数据共享(4)有利于数据保密13.关系模型的组成:关系数据结构。关系操作集合。关系完整性约束SQLServer基于关系模型的数据库系统。14.主码:若一个关系有多个候选码,则选定其中的一个为主码15:数据类型:decimal(不包含小数点多少位,小数点后几位)nvarchar采用Unicode编码,无论是中文英文占一个字节有n表示Unicode编码,每个字符占一个字节,没有n表示非Unicode编码,英文或者数字占一个字节,中文占两个字节。有中文用nvarchar,没有中文用varchar.16:按照功能分类:DDL:(Databasedesignlanguage)数据定义语言,用于进行各种数据库对象的创建主要操作包括create,alter,dropDML:(Databasemanagementlanguage)数据管理语言,用于对标的数据添加,修改,删除,查询,主键操作包括,insert,update,delete,selectDCL:(Databasecontrollanguage)数据控制语言,用于进行权限分配等1:创建数据库createdatabaseTaoHaoonprimary(name='TaoHao',filename='E:\MicrosoftSQLServer\DATA\TH_data.mdf',size=10mb,maxsize=200mb,filegrowth=10mb)logon(name='TaoHao_log',filename='E:\MicrosoftSQLServer\DATA\TH_log.ldf',size=5mb,filegrowth=10mb)相关子查询:notexists;子查询需要父查询的结果才能执行不相关子查询:notin:执行顺序是子查询先执行,结果传给父查询子查询返回的值只有一个:利用(=,,,=,=,!=)子查询返回一组值:需要在比较运算符和子查询之间插入any或all2:修改,删除,查询,--alter用法altertable表名altercolumn列名数据类型null|notnull--为所有行的指定列修改updateUserInfosetUserPwd='admin'--为指定行的列修改updateUserInfosetUserPwd='2250'whereUserName='陶浩'updateUserInfosetUserPwd='abcde'whereUserId1--清空数据truncatetableUserInfo--删除droptableUserInfo--查询前n部分数据:topn*from表示查看前n行selecttop2*fromStaffInfoselecttop2percent*fromStaffInfo--distinct消除重复行--模糊查询--%表示个或者多个字符--_下划线表示一个字符--[]表示你在某一范围字符--[^]表示不在某一范围内的字符select*fromStudentInfowheresPhonrlike'1[5-9]%'3.内连接:innerjoin,两表中完全匹配的数据--leftjoin以左表属性顺序(CID属性顺序)为标准--rightjoin以右表属性顺序(Sid顺序)为标准--fulljoin,左表中特有的数据4.聚合函数:--对比自己的成绩和平均分selectStaffInfo.*,AVG(score)over()as'平均分'fromStaffInfowhereName='bb'--统计班同学男生女生各人数selectsGender,COUNT(*)fromStudentInfowherecId=2groupbysGender--统计学生编号大于的号班级的性别的学生个数selectsGender,COUNT(*)--指定了cId不能selectcIdfromStudentInfowheresId1andcId=3groupbysGender分组查询:groupby字句可以将查询结果按照属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。若在分组后还要按照一定的条件进行筛选需要使用having字句。重点:子查询的SELECT语句中不能使用ORDERBY子句,因为ORDERBY子句只能对最终查询结果排序。找出每个学生超过他自己选修课程平均成绩的课程号SELECTSno,CnoFROMSCXWHEREGrade=(SELECTAVG(Grade)FROMSCyWHEREy.Sno=x.Sno);查询选修了全部课程的学生姓名由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));查询至少选修了学生选修的全部课程的学生号码SELECTDISTINCTSnoFROMSCSCXWHERENOTEXISTS(SELECT*FROMSCSCYWHERESCY.Sno='201215122'ANDNOTEXISTS(SELECT*FROMSCSCZWHERESCZ.Sno=SCX.SnoANDSCZ.Cno=SCY.Cno));5.快速备份select*intotest01fromClassInfo》向未有表备份:select列名into备份表名from源表名》说明:备份表可以不存在,会新建表,表的结构完全一致,但是不包含约。。。》向已有表备份:insertinto备份表名select列名from源表名6.数据转换selectCAST(89.010101asdecimal(4,2))--decimal表示除了小数点一共位selectCONVERT(decimal(4,1),89.999)--会四舍五入selectCAST(1asCHAR(1))+'1'--char类型--统计销售总价超过的商品名称和销售总价,并按照销售总价降序排序select*fromMyOrdersselectpName,SUM(SaleNumber*SalePrice)销售总价fromMyOrdersgroupbypNamehavingSUM(SaleNumber*SalePrice)300orderby销售总价desc7.函数:select'哈哈'+LTRIM('长安的美食')--去掉左空格select'哈哈'+RTRIM('长安的')--去掉右空格select'哈哈'+RTRIM(LTRIM('中国'))--selectLEFT('麦田吃饭',1)--从左边开始截取几个selectRIGHT('可口可乐',3)--从右边开始截取几个selectSUBSTRING('初审过了哈哈哈',2,4)--从第二个开始截取四个8.开窗函数:over()将统计出来的数据分不到原表的每一行中,结合聚合函数,排名函数的使用1:t-sql编程变量:声明:declare@UserNamenvarchar(50)赋值1:set@UserName=N'杨':修改赋值2:select@UserName=N'牛':修改输出:print@UserNameselect@UserNameselect@UserName+N'中',这时@UserName仍然是‘杨’,这句代码执行后显示‘杨中’区别:赋值时,set比select更严谨些set一次只能为一个变量赋值,select一次可以为多个变量赋值。变量是有作用域的全局变量:@@***select—变量declare@namenvarchar(10)—声明set@name=’陶浩’—赋值print@name—输出--选择语句declare@idintset@id=10if@id5beginprint'ok'+convert(varchar(10),@id)endelsebeginprint'no'end2:case在查询语句的select后面,可以进行选择判断的逻辑语法1:判等case列名或表达式:判断与值1,2,3是否相等when值1then...返回then后面表达式的值when值2then...when值3then...else...endas列别名语法2:判不等casewhen条件1then...判断条件的真假when条件2then...when条件3then...else...endas列别名3:over开窗函数:几个行作为一个区,就被称为一个窗,能够进行按行划区的函数就是开窗函数排名函数:rank()over(orderby列名desc),比row_number()函数更适合用于排名over与聚合函数一起使用,但不要和groupby一组使用,否则会报错没有分组的时候,就认为是将整个查询结果分成了一组select*,sum(销售数量)frommyOrders会报错改为:select*,sum(销售数量)overfrommyOrders则不会报错,并且在最后一列显示求和结果4:视图View视图:就是一个select语句,写起来比较复杂,多次被使用,则可以将这个select语句存放到一个视图中创建语法:•createview名称•as•查询语句好处:使用方便,安全(看不到表的名称、结构等信息)使用:主要用于查询,与查询表的语法一样查看视图的代码:execsp_helptext视图名称可以基于视图再创建视图建议:不要在视图中使用orderby子句•集合的结果集被当作一个集合使用,所以是不应该有顺序的•如果加入了topn则可以使用,这样返回的又是一个n项的无序集合,虽然看上去是有顺序的去掉左空格createviewIS_Starasselect*fromStarwherenamelike=”张%”withcheckoption:约束条件是对视图里的所有的name首字符以下张开头的不管后续怎么修改。view:虚拟的表,具有普通表的结构,不实现数据存储,物理上不存在。5:事务事务:保证多个操作全部成功,否则全部失败,这处机制就是事务思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗?数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失败事务操作:begintransaction--开始事务comittransaction--提交,没错后执行rollbacktransaction--回滚,出错后执行用法:声明一个变量,记录错误信息,最终根据变量值是否大于0,进行提交或回滚示例:模拟转账操作:一个账户扣钱,一个账户加

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

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

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

×
保存成功