sql复习

《SQL数据库应用》总复习
第一章 数据库系统概论1.数据和数据的概念;数据是人们用于记录事物情况的物理符号,是信息的载体。是数据库的基本存储对象,具有型和值之分。数据管理利用计算机硬件和软件技术对数据进行有效的收集,存储,处理和应用的过程。2.数据库管理技术的发展人工处理阶段文件管理阶段数据库管理阶段3.数据库和数据库系统数据库是存储在计算机内的有结构的数据集合数据库系统是一个软件,用以维护数据库,接收并完成用户对数据库的一切操作数据库系统是指由计算机硬件,软件,数据库,人员构成的一个运行系统。DBS=DB+DBMS4.数据模型与概念模型 概念模型(er图实体联系图)一对一,一对多,多对多 概念结构设计 数据模型(层次图 树 网状 图 关系数据模型 二维表格)转变均是多的主键写到少的上面去,多对多的是每个主键都拿出来重新和联系写一个。 逻辑结构设计 概念模型用来描绘现实世界的事物,与具体的计算机系统无关,表示事物及联系 数据模型是数据库系统中关于数据内容和数据之间联系的逻辑组织的形式表示。5.数据库新技术多媒体数据库工程数据库 CAD 面向对象数据库 OODBS数据仓库技术了解数据和数据管理的概念,掌握数据库和和数据库系统的概念,掌握数据库系统的组成部分;掌握数据模型和概念模型的概念,以及如何将数据从概念模型向数据模型转化,了解当前数据库新技术。第二章 关系数据库基本原理 1.关系数据库概述; 2.关系代数运算3.关系模式分解4.关系模型的完整性约束;5.数据库新技术掌握关系模型中的相关术语:关系、元组、属性、键。了解关系模型的完整性约束和关系数据库的设计过程、关系代数运算;要掌握关系数据库的相关概念,掌握关系模式的分解。关系数据库就是一张张二维表一张二维表称为关系,行为元组,列为属性,键为能唯一表示某个元组的属性完整性约束:实体完整性 行完整性,主码不能为空,且不能重复 域完整性 列值必须有效 参照完整性 k是s中的主码,且k是另一个关系模式r的外码,那么r中s的取值只能有两种,空Null或者s中某个元组的k值 用户定义的完整性 要满足用户创建的一些约束设计方法:需求分析 分析用户的需求,包括数据功能和性能 概念设计 er图 逻辑设计 将er图转化成关系模型也就是二维表 物理设计 为设计的数据库选择合适的存储结构和存取路径 数据库的实施 编程 测试和运行 数据库的运行和维护 系统的运行和数据库的日常维护关系代数运算分为集合运算和关系运算 交并补差笛卡尔积 选择投影连接都是对关系进行的运算,关系是一张表,所以是对表的运算eg 关系r和s交 行运算,既属于关系r也属于关系s的元组比如求既选择了a又选择了b的人并 行 两者所有的元组,n元关系前后不会改变,所以要有相容性,不能两个一点关系都没有的表进行并差 r-s 属于r但不属于s的元组笛卡尔积 r m元关系,m个元组,s n元关系,最后结果mn元关系运算不仅仅涉及行也涉及列投影,对要的属性投影,得到了为最终要的属性的元组选择,筛选出满足条件的元组,其是对行操作的笛卡尔积是关系r和s的集合是所有的,连接是只含有满足条件的有等值连接,外连接和自然连接。。。关系数据库是建立在关系数据模型上的数据库,其是由一张张的表组成的,关系模型的分解 数据依赖 范式(关系模式的标准) 模式分解(模式设计的方法插入异常,该插的插不进去删除异常,不该删除的被异常的删除了更新异常,数据修改时产生的数据不一致数据冗余,同样的东西需要输入很多次函数依赖 当某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。所以函数依赖的两边不一定为单一属性。有唯一的x确定于y,记为y函数依赖于x若x确定于y,但x的子集x1确定于y不成立,称为y完全函数依赖于x,否则为部分函数依赖传递函数依赖,x确定y但y不确定x,y确定z,称z传递函数依赖于xx确定于所有的属性,对于x的真子集则不可以,称x为候选关键属性,既即候选码,若候选码只有一个属性,则称为关键属性即主码,否则,从多个属性中选择一个属性为主码。候选关键属性的均为主属性,其余均为非主属性。一范式1NF,属性均是不能再分解的了,即表中不能有表。要是连第一范式都不能满足,其都不能称为数据库。二范式均是完全函数依赖于每一个候选关键属性三范式均是非传递函数依赖即不依赖于其他非主属性,若满足三范式肯定满足二范式模式分解 先满足一范式,如工资包括基本工资和岗位工资,所以可将其分解。满足一但是不满足二的,直接将那部分函数依赖部分重新写一个关系模式,主码就是那一个满足二但是不满足三的,传递函数依赖中的的y分别写一个关系模式,左面y一个右面y一个第三章 SQL Server管理平台及安装1.SQL serve r 体系结构2.SQL Server优势3.系统数据库功能特点4.数据库安装了解SQL Server管理平台的基本功能与特点,掌握系统数据库的功能,SQL Server的安装方法。系统数据库有master 存储了所有系统级信息model 模板数据库,当创建新的用户数据库时,它的全部内容都会被复制过去msdb 应急服务有关的数据库tempdb 临时数据库,存储中间数据和结果resource 被隐藏的只读的物理数据库第四章 数据库的管理1.数据库概述2.创建数据库3.修改数据库4.删除数据库5.分离与附加数据库了解数据库对象所包含的内容与数据库存储方式,掌握数据库所包含的文件;分别掌握用管理平台和T-SQL创建,修改,删除,分离,附加数据库。数据库对象包括包括表 数据存放的场所视图 虚表,定制复杂和常用的查询,以便用户使用索引,加快从表和视图上检索数据的速率,所以视图既可以对表操作也可以对视图操作存储过程 约束,规则,默认值和触发器 确保数据完整性,强制执行业务规则登录,用户,角色,和组,保障数据安全的基础。数据库所包含的文件,数据文件 主数据文件.mdf仅有一个和次数据文件.ndf零到多个和日志文件.ldf一个多个,主文件组只有一个,次文件组零到多个,日志文件不属于如何一个文件组。每个数据文件只属于一个数据库,文件和文件组不能被一个以上的数据库使用,一个文件只能属于一个文件组,数据和日志不能属于一个文件或文件组,事务日志文件不能属于任何文件组 数据库的创建 打开ssms窗口,在对象资源管理器中右击数据库,选择新建数据库,输入数据库的名称,调整各个参数 create database gcj on primary 主数据文件的 ( name=‘gcj_data’,不要忘记逗号,sql均是单引号,只有最后一个逗号可以不写,主数据文件的名字 filename=‘e:\sql\gcj_data.mdf,主数据文件的物理地址 size=5mb,主数据文件的初始大小 maxsize=50mb,最大的大小 filegrowth=10% 自动增量 ) log on()日志文件,除ldf外,其余的和前者相同。 创建两个数据文件的,直接在那个主数据文件中写两个数据文件用括号括起来 数据库的修改(只要是对数据库的修改都必须要有alter) 右击要修改的数据库,选择属性,打开数据库属性窗口。 alter database gxg只要是对数据库进行修改,这句话必须有 modify name=gzc 修改数据库名称修改数据库的名称modify修改修饰限定 add file 添加数据文件 要是日志文件,要变成add log file (name filename size maxsize filegrowth)go 有没有都可以添加一个日志文件 删除文件(数据文件) remove file 数据文件名添加文件组,add filegroup 文件组名若要添加文件到文件组,用上面添加文件的方式,只不过在最后的括号后面写上to filegroup 文件组名删除数据库drop database 数据库名1,数据库名2删除数据库右键想要删除的数据库点击删除即可分离数据库,右击要分离的数据库,点击任务中的分离即可或者使用存储过程 exec sp_detach_db 数据库名分离数据库并不是删除了数据库,保留了数据文件和日志文件的完好无损。附加数据库,右击数据库点击任务下的附加,找到要附加数据库的主数据文件这个必须指明主数据文件的位置. mdfcreate database 数据库名on()主数据文件的内容,里面至少必须得有主数据文件的物理地址for attach第五章 数据表的管理1.数据表概述2.创建数据表3.修改数据库4.删除数据表理解表的结构,掌握数据存储的数据类型;掌握分别用管理平台和T-SQL在指定数据库中创建,维护,删除表的方法。表的结构,不包括任何记录的数据表,也就是空表,就是刚创建好的表,啥也没填空表只有字段名和属性,无任何数据创建表要先创建表结构,表机构一旦确定,就不会轻易更改。数据类型是数据的特征,创建表的时候必须要创建数据类型,数据类型决定了字段的取值范围,可通过计算数据类型计算出存储需要的内存空间。字符型,数值型,日期型,位型,二进制型char nchar字符串长度固定,会用空格填充,适用于长度固定的varchar nvchar长度不固定,不用空格填充text长文本数据数值型 tinyint smallint int bigint decimal(p,s)p为总的位数,s为精度,也就是小数点后后面的位数。浮点型 float real货币 money日期datetime位型 一个字节0表示假,非0表示真bitNull not Null primary key foreign key unique default创建数据表左击创建好的数据库,在表节点右键新建表,在其中输入要创建表的列名以及相应的数据类型,保存为表的名字use 数据库名gocreate table 表名(列名 数据类型 not null,总计 AS 基本工资+奖金)使用表达式,其中那两个也是列属性on()指定文件组自增列从12000开始每次增加1删除表向表中添加新的一列 alter table 表名add 列名 数据类型 Null添加新的一列删除一列alter table 表名drop column 列名修改某一列的数据类型alter table 表名alter column 列名 新的数据类型 not Null(只有在确认了原有的都不为为空时才用。)修改某一列删除表,先删除主码上的表就可以删除了,若是删外码上面的会发生错误drop table Teacherdrop table 表名 有外键约束的要先删除外键约束,且不能删除系统表既删除了表也删除了他上面的索引删除指明数据库中的表 drop table 数据库名. 表名维护表插入数据插入数据右击要插入的表,点击编辑前200行,输入要插入的数据点击运行不指定列 insert into 表名 values()字符型的要用单引号指定列的只需要把表中的列名列出来即可修改数据(这个就是update了)update 表名set 更新的操作name=’'telephone=‘098’+telephone,即可实现在手机号前加字母了新的内容等于旧的内容和他的变化还可以在set后面加上where语句或者select语句更新数据删除数据删除所有行(所有记录) delete 表名,即可将表中所有的行删除而drop是将此表删除可以加上where语句有条件的删除删除某一列删除表中所有数据(清空points表中所有记录)第六章 数据完整性1.数据完整性概述2.规则3.默认对象4.主键、外键、Check 约束、唯一性约束、默认约束掌握数据完整性概念、类型,掌握规则、默认对象、约束保障数据完整性;掌握分别用管理平台和T-SQL在指定数据库中使用规则、默认对象、约束的使用方法。数据完整性是指存储在数据库中所有值均正确的状态类型:实体完整性,域完整性,参照完整性,用户定义的完整性实体完整性:每一条记录都是唯一的,可以区别不同的行,每一行都不能重复且不能为空域完整性:特定列值的有效性参照完整性:外键要么和主键值相同要么为空用户定义的完整性:根据应用环境的要求和需要满足用户定义的约束条件规则保障完整性规则是数据库中对存储在表中的列或用户定义的数据类型中的值的规定和限制,规则可以同时使用,即表的列可以有多个规则创建规则create rule 规则名 as 约束表达在一个区间中 create rule age_rule as @age>=1 and @age>=10改成as @sex in在几个值中取一个 @sex in(‘男’,‘女’)使用存储过程sp_helptext可以查看规则的文本信息execute sp_helptext 规则名规则的绑定只有将创建好的规则绑定到某个数据表的列上他才能起约束作用,表的一列只能绑定一个规则,第二次绑定的规则会让第一次绑定到规则失效,同一个规则可以绑定多个表的列exec sp_bindrule ‘规则名’,'要绑定的表. 要绑定的列’规则的解绑表中的列不需要规则对象,可以将规则对象解除绑定exec sp_unbindrule ‘要接触规则绑定的列. 要解除绑定的列’ 不在需要绑定角色的名字有无go都可删除规则删除规则之前一定要先解除他的绑定drop rule 规则名1,规则名2默认值保障完整性默认值是用户输入记录时往没有指定具体的数据列中自动插入的数据创建默认值create default 默认对象名 as 表达式eg create default address_defa as '山西农业大学’查看默认值 exec sp_helptext 默认值名字 这一点和规则的一致绑定默认值,除sp_bindefault之外,全部一致逗号就行解绑默认值,sp_unbindefault 同上解绑的话都不需要名字,只需要知道绑定的那个列名就行删除默认值,drop default 默认值对象名 也是需要先解除所有绑定约束约束是保持数据库完整性的一种机制,且约束优先与触发器规则和默认值,约束可以在创建表的时候声明(create table),也可以在后期用alter table语句添加和删除,当表被删除时,那么表上的所有约束都会被删除主键约束 主键不能为空,且不同两行的键值不能相同,候选键可以有多个,在候选键中选择一个当做主键在创建表的时候创建主键约束,只需要在某一列属性后面加上primary key,这叫列级主键这种写在每一行的最后面,还有一种叫做表级主键,写在创建表的最后面(若主键由两个以上的列组成,则只能使用表级主键)创建表的同时创建约束constraint 主键名 primary key(,)constraint PK_sno primary key(sno,sname)在创建好的表中增加主键(也要用alter table)alter table 表名 add constraint 约束名 primary key(主键那一列)删除主键alter table 表名 drop constraint 约束名外键约束表与表之间的关系级联 当主键表中某行被删除时,外键表中所有的相关行将被删除,当修改时另一个也会自动修改在创建表的时候创建,在每一行后面 foreign key references 主键表名(外码)在创建表的最后创建,constraint 约束名 foreign key(外键名)references 同上后面这个是外码的在创建好的表中创建外键 alter table 表名 add constraint 约束名 同上一层后者的这个是外码唯一性约束 unique唯一性的约束的列允许有空值null,主键也执行唯一性,但主键不能为空值,所以unique约束的列一定不能是主键列在创建表的时候创建 直接在数据类型后加上unique即可在创建表的最后 constraint 约束名 unique(唯一性列名)在已创建的表中添加唯一性约束alter table 表名 add constraint 约束名 unique(唯一性列名)检查约束 check当具有检查约束列进行插入或修改时,首先要用检查约束的逻辑表达式进行检查,只有当逻辑表达式返回true值才能填入,可以为每列指定多个check约束在创建表的时候直接在数据类型后加check() check(sex=‘男’or sex=‘女’)更改表的约束 ALTER TABLE studentinfo ADD CONSTRAINT CK_sex CHECK (sex=’男’or sex=’女’)默认约束 default只有这个还需要加个for默认值可以是常量,也可以是表达式也可以是null确保在没有为某列指定数据时,来指定列的值。在创建表的时候直接在数据类型后加 default(默认值) default(‘山西农业大学’)对创建的表添加默认值约束 ALTER TABLE student2ADD constraint def_enrolldate2 default (‘2017-09-01’) for enrolldate(列名)为数字字符第七章 数据查询1.简单查询2.嵌套查询3.连接查询掌握T-SQL作为数据查询的语法与应用,掌握WHERE, ORDER BY、GROUP BY、HAVING子句的使用;掌握基本的多表查询以及内连接、外连接、交叉连接和联合查询的使用,掌握多行和单值子查询的使用和嵌套和单值子查询的使用。select 要显示出来的列all重复的也输出,distinct 多个要输出的以逗号隔开 from 表名或者视图名where 查询条件select distinct name fromstudent0 重复的只输出一个select top 2 * from student0 前两个的所有信息count 满足条件的个数 sum 所有值的总和 avg 平均值 max最大值 min起别名 select avg(credit)as 平均学分 from student比较运算符 不等于<>逻辑运算符 and or not字符匹配 like not like%a 代表零个或者多个字符,即字符中含a的_a单]字符,即第二个字符是a的[]指在指定的集合或者范围内查找单个字符如like’%【a-f】%’【^】与他相反,指不包括的确定范围 between and not between and确定集合 in not in空值 is null is not nullwhere sex=‘男’ name like ‘张%’ grade<60排序输出 order by desc降序 asc升序 默认 select * from points order by grade desc,studentid asc 分组查询 group by 与筛选 having 当使用having短句筛选条件时,必须与group by配合使用 where语句用于表的选择运算,having 设置分组筛选条件Select curid ,avg(grade) From points Group by curid having curid=1000嵌套查询将一个查询语句嵌套在另一个查询语句中的查询也叫子查询,子查询语句放在having或者where语句之中,子查询的结果作为父查询的搜索值,先执行淄川区下去,在执行父查询,子查询的结果不显示,子查询的select语句必须放在括号内单值嵌套查询,子查询的结果是一个值的嵌套查询 select studentid,grade from points where curid=(select curid from curs where curname=‘SQL数据库应用’)多值查询,子查询的返回值是一列值,即形成了一个集合的时候要用in把=换成in (select id from points where grade<60),只要返回的值不是一个值,是多个值即为一列的时候,要用集合运算inall关键字 必须都满足时some any关键字 有一个或者一部分满足时即可查询比李四某一门成绩高的学生信息,且不能是李四select * from pointswhere grade >any(select grade from points where studentid=(select studentid from student0 where name =‘李四’))and studentid !=(select studentid from student0 where name =‘李四’)比李四任意一门成绩都高的学生信息,把any换成all即可连接查询查询结果涉及多个表的查询,两个表必须建立起联系,要有一致的数据类型,交叉连接,内连接和外连接内连接包括等值连接自然连接,非等值连接,自然连接等值连接 where子句中where中的 表1. 列1=表2. 列2 等价于 from 中 表1 inner join 表2 on 表1. 列=表2. 列名自然连接,删除重复列,使用等于运算符连接被连接列的列值外连接 左 右 全外只限制一张表的数据必须满足连接条件左外连接,只限制右边的表必须满足条件,不用管左边的表满不满足,都会输出,只是将join 换成了 left join右外连接 right全外连接 full join 返回两个表的所有行,不管两个表的行是否满足连接条件,对于不满足连接条件的记录,另一个表相对应字段用Null代替交叉连接,不带where语句,返回的是第一个符号查询条件的数据行数乘以第一个表中符合查询条件的集合 cross join 无where语句按性别顺序列出学生的学号、姓名、性别相同的按学号由小到大排序。默认升序在student表中查找与学号为12004的学生性别相同的所有学生的姓名和学号单值嵌套把in换成等于也对列出学号为12004的学生的分数比12006号学生的最低分数高的课程编号和分数。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:有时为all,any也是大于最小的所有的select s.学号,s.姓名,课程名称,分数from student s inner join grade g on g.studentid=s.studentid inner join curs c on g.curid=c.curidwhere c.curname='SQL sever’只是把等值连接的语句放到了from之中(内连接)第八章 视图与索引 1.索引概述2.索引操作3.视图概述4.视图的操作5.视图的应用理解SQL Server 中数据库、表和索引之间的关系和概念,掌握使用管理平台和T-SQL语句创建、修改和删除索引;同时理解视图的概念及分类,掌握创建、修改、删除和使用视图的方法,了解视图的作用。索引类似于图书馆中图书的标号,方便我们查阅图书,索引可以加快查询速度是提高数据查询速度的技术,相当于指像基本中数据的指针表扫描,一条一条扫描,当扫描到符合条件的拿出来,速度慢索引,树状结构速度快索引和表是分开存储的,可以提高检索的性能,被创建和撤销时,对数据都毫无影响,索引要占用的物理空间比基本表还要大,用户不必在存储数据时选择索引,索引由系统自动执行当表中数据很多时,建立索引很有用,反之不然,索引过多会增加系统负担聚集索引,表中各记录的物理顺序和键值的逻辑顺序相同,一个表只能按照一个顺序来存储,所以只能有一个聚集索引创建索引 非聚集 create nonclustered index 索引名 on 表名(列)查看索引,使用存储过程查看索引exec sp_helpindex 索引名编辑索引,更改名字 exec sp_rename 旧名字,新名字删除索引 drop index 表名. 索引名create unique nonclustered index i_stuid_cid on points(studentid,curid)唯一性索引,若是非聚集索引去掉unique查看索引exec sp_helpindex curs重命名索引exec sp_rename ‘points.i_stuid_cid’,'i_sid_cid’删除索引drop index points.i_sid_cid视图视图是一种数据库对象,是从若干个表或已存在的视图提取出来的虚表,视图不保存如何数据,其数据仍存储在视图引用的基本表中,视图也可以进行查询删除和修改但是对数据的操作要满足一定的条件,当通过视图对所看到的数据进行修改时,其引用的数据源中的数据也会发生变化,反之,当数据源中的数据发生变化时,这种变化也会发生在视图中,他们是彼此关联的。视图不占用物理存储空间,不会出现数据冗余,视图是外模式,他是从一个表或者多个表派生出来的,依赖于表不能独立存在。视图是外模式,表是内模式,视图是一些sql语句的集合,视图的创建和删除只影响视图本身,依赖于基本表的存在而存在,可以来自于一个表也可以来自于多个表。不能再视图上创建触发器和索引。在使用插入和修改数据时,不能影响一个以上的视图基表,视图中的计算列不能插入数据,update也不能修改计算列的数据创建视图 create view 视图名 as select语句 with check option 有约束的视图修改视图 alter view 视图名 with 操作性质 as select查看视图文本信息 使用系统存储过程 exec sp_helptext 视图名查看数据库中的视图信息 使用select * from 视图名查看依赖关系 sp_depends 重命名 sp_rename 旧名字,新名字视图应用,sql默认排序是升序 order by之中建立好视图后,可以使用任意一种查询方式检索视图数据,修改视图实际上是修改基本表,但是不能同时对含有两个及以上的基本表进行修改若是有with check option则必须使得修改后的数据满足视图定义的数据插入数据 insert into 视图名 values()修改数据 update 视图名 set =列值1 还可以有where语句删除数据,尽管视图不一定包括基础表的所有列,但可以通过视图删除基本表的数据行delete from 视图名 where逻辑表达式删除视图 drop view 视图名create view v_stu_gasselect student.studentid,name,curs.curid,curname,points.gradefrom student,curs,pointswhere student.studentid=points.studentidand curs.curid=points.curidwhere中的语句相当于将三个表连接起来select * from v_stu_gwhere studentid='12004’视图是可以进行操作的insert into v_stu_info values(‘12013’,‘王磊’,‘男’,‘20’)插入不进去,如果视图是基于一个基础表产生的,那么就可以更新也就是可以insert update delete,但是若是好几表产生的在定义视图中使用了with check option那么不能执行insert操作delete from v_stu_info where studentid=12004update v_stu_gset grade=80where name=‘张三’ and curname='Computer Image’可以更新,因为这个视图只是基于一个表生成的删除视图drop view v_stu_g,v_stu_info第九章 T-SQL程序基础1.常量与变量2.运算符与表达式3.算数运算与位运算4.流程控制语句与批处理5.常见函数与用户自定义函数掌握T-SQL语言的分类,常量和变量定义及使用;掌握SQL Server中常见函数、批处理、流程控制和用户自定义函数的使用。常量的值在程序运行过程中不会改变变量是临时存放数据,不断变化的局部变量的定义 declare declare @name char(8)局部变量的赋值 select语句和set语句 前者可以同时赋值多个变量,后者只能赋值给一个变量 set @v1=(select count()from student局部变量的显示 select print 局部变量要一直带着@位运算,与 或 非 异或,相反为1,均是换成二进制进行运算全局变量 @@由系统并赋值,用户不能自己创建全局变量注释-- 单行注释 多行注释也不能跨越批处理/ */流程控制语句 复合语句 begin 执行的sql语句 end判断语句 if begin end else begin endwhile 循环语句批处理是一个sql语句集,这些语句一起提交并作为一个组来执行,可节省系统开销 存储结构和触发器内的所有语句构成一个批处理还有execute的语句执行的字符串结束和退出的标志是go,批处理必须以create语句开始,同一个批处理中不能既绑定到列又使用规则和默认,不能删除数据库对象又重建它,不能改变一个表再立即引用其新列,如果exec是第一句则不需要exec,如果不是则需要函数 字符串函数 ASCII char数学函数 round ceiling floor rand用户定义的函数 可以有零到多个参数,可以返回单个值也可以返回一个表。declare @name nvarchar(5) 定义了一个局部变量select @name=name 赋值语句from studentwhere name like ‘王%‘select @name 显示select printdeclare @grademax int 定义局部变量set @grademax=(select max(grade) from grade) 赋值尽量还是用setprint @grademax 输出还是用print,只会显示出这个局部变量declare @分数 decimaldeclare @及格情况 varchar(30)set @分数=(select grade from gradewhere studentid=1200 and curid=1001)set @及格情况 = 多种赋值语句用case end 里面用when要一直都有@局部变量case when @分数>=60 then ‘你的成绩及格了,恭喜你’ 这个就是及格情况varchar得用字符串 when @分数<60 then’你的成绩不及格,加油’endprint @及格情况declare @分数 decimaldeclare @成绩等级 nchar(3)set @分数=(select grade from gradewhere studentid=1200 and curid=1001)set @成绩等级 =case when @分数>=90 then’A’ when @分数>=80 and @分数<90 then’B’ when @分数>=70 and @分数<80 then’C’ when @分数>=60 and @分数<70 then’D’ when @分数<60 then’E’endprint @成绩等级⑤ 编写代码计算并显示@n=1+2+3+…+20。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:declare @a int declare @s int set @a = 1set @s =0 while @a<=20 begin set @s=@s+@a set @a=@a+1 endprint @s第十章 存储过程与触发器1.存储过程概述2.存储过程的创建与使用3.触发器概述4.触发器的创建于使用了解存储过程、触发器的基本概念与特点,掌握存储过程的优点,掌握存储过程的基本类型与相关操作,掌握触发器的类型与相关操作。掌握存储过程和触发器的区别。存储过程 proc存储过程是一组预编译的sql语句集,用于完成对数据库的指定操作优点 减少网络流量,提高系统性能安全性高,可重用性基本类型包括系统存储类型,扩展存储类型,用户定义存储类型系统存储类型 在master数据库并以sp_为前缀用户定义的存储过程 由用户定义的完成某一特定的功能,没有前缀sp_动态 xp_需要先删除这三个表上的外键约束创建一个存储过程,显示12004的学生信息create proc stu_gradeasselect name,curname,gradefrom student inner join points on student.studentid=points.studentidinner join curs on points.curid=curs.curidwhere student.studentid='12004’创建一个带输入参数的存储过程stu_g_p,当输入一个学生姓名时,将从3个表中查询该学生的学号、姓名、他修的课程名称和对应的分数,若不存在该学生,输出“该学生不存在,请重新输入!”;通过不同的输入测试该存储过程;通过系统存储过程Sp_helptext,查看存储过程stu_g_p的文本信息。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:create proc [dbo].[stu_g_p]@name varchar(40)asif @name in (select name from student)beginselect student.studentid,name,grade,curnamefrom student inner join points on student.studentid=points.studentidinner join curs on points.curid=curs.curidwhere student.name like @nameendelsebeginprint’该学生不存在,请重新输入’end输入参数为李四(存在此同学时) exec stu_g_p '李四’输入参数为赵六(不存在此同学时) exec stu_g_p ‘赵六’ exec Sp_helptext 'stu_g_p’创建一个带输入参数和返回参数的存储过程stu_g_r,当输入一个学生学号时,将返回该学生所修的课程的平均成绩,若不存在该学生,输出“该学生不存在,请重新输入!”;执行该存储过程,并输出该平均成绩。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:create proc [dbo].[stu_g_r]@id varchar(40)asif(@id in (select studentid from points))beginselect studentid,avg(grade)‘平均成绩’ from pointswhere studentid=@idgroup by studentidendelsebeginprint’该学生不存在,请重新输入!'endexec stu_g_r ‘12004’ (存在此同学时)exec stu_g_r ‘12001’(不存在此同学时)④ 使用T-SQL语句删除存储过程stu_grade。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:drop proc stu_grade删除存储过程触发器为points表建立一个名为insert_s_tr的INSERT触发器,当用户向points表中插入一个条学生信息记录时,classes表中对应的上课人数加1;通过在插入points表语句的前后分别输出该班级人数,来测试该触发器。在studentdb数据库下,点击“新建查询”,输入并运行如下代码: create trigger insert_s_str on points for insert as if(update(studentid)) declare @classid nchar(20) set @classid =(select curid from inserted) update classes set number=number+1 where classes.curid=@classid为students表建立一个名为del_s_tr的DELETE触发器,当students表中的记录被删除后,points表中相应的记录也被自动删除;测试触发器是否成功(这里必须删除points与students表外键,否则会报错)。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:create trigger del_s_tr on studentfor deleteasdelete from pointswhere studentid=(select studentid from deleted)删除学号为‘12006’的学生信息delete from Student where studentID='12006’④ 删除触发器del_s_tr。在studentdb数据库下,点击“新建查询”,输入并运行如下代码:drop trigger del_s_tr第十一章 游标 、锁与事务1.事务概述2.事务管理3.锁模式与锁类型4.游标概述掌握事务的概念和属性,掌握执行、撤销和回滚事务;掌握锁的概念,锁模式。了解游标的概念与分类,掌握游标的使用步骤;事务是对数据库的若干操作组成的一个逻辑工作单元,这些操作要么都执行 ,要么都不执行 ,是一个不可分割的整体。用这种方法保持了并发性和完整性属性 ACID 原子性 事务要么全部执行,要么全不执行,不能只完成部分操作,由恢复机制实现一致性 事务开始之前,数据库处于一致性的状态;事务结束后,数据库仍处于一致性的整体 。隔离性 系统必须保证事务不受其他并发执行事务的影响,即当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。永远不会查看中间状态,要么是初始要么是终止。持久性 事务对数据所做的任何变动在系统中是永久有效的,即使是错误,也会一直保持显式事务模式:有一个开头 begin transaction 结束 commit提交 rollback回滚隐性事务模式:不需要使用BEGIN TRANSACTION语句标识事务的开始,一个的结束就是一个的开始,但需要以COMMIT或ROLLBACK语句来提交或回滚事务,一句T-SQL语句就是一个隐性事务声明游标,打开游标并显示,关闭游标第十二章 SQL Server安全机制1.创建登录名2.为用户分配服务器角色与数据库角色 3.数据库备份4.数据库恢复掌握权限管理的基本操作,掌握数据库备份类型与恢复模式。数据某个角色的用户或者登录名 拥有相应的权限。不同的角色有不同的管理范围服务器级角色数据库级角色应用程序角色创建角色 create role 角色名权限管理 授予grant使得所有该角色或者用户继承此权限 grant select,insert,update,deleteon studentto cc|teacher --cc是用户名 teacher是角色名 撤销权限 revokerevoke deleteon studentfrom cc为用户xinke 删除对数据库stu中students表的Delete权限。根据提供的stu数据库,做如下操作:拒绝权限 denydeny inserton studentto cc备份与恢复 遇到介质故障、用户错误、硬件故障、自然灾难等造成灾难性数据丢失时可以利用备份的数据库恢复。备份类型 完整备份 差异备份 事务日志备份 文件与文件组备份完整数据库备份是指数据库中的所有数据,包括事务日志。完整数据库备份的创建频率通常要比差异备份或者日志备份低,适用于备份容量较小或数据库中数据的修改较小的数据库。差异备份是完整备份的补充,只备份上次完整备份之后更改的数据,适合于修改频繁的数据库。在还原数据时,先要还原前一次做的完整备份,然后再还原最后一次所做的差异备份,这样才能让数据库中的数据恢复到与最后一次差异备份时的内容相同事务日志备份只备份事务日志里的内容。事务日志记录了上一次完整备份、差异备份或者事务日志备份后数据库的所有变动过程。差异备份类似,事务日志备份生成的文件较小。占用时间较短,创建频率较频繁文件或者文件组备份,只备份数据库中的某些文件,该备份方式在数据库文件非常庞大时十分有效,由于每次只备份一个或几个文件或文件组,所以可以多次备份数据库,避免大型数据库备份时间过长恢复模式 简单恢复模式 完整恢复模式 大容量日志恢复模式 简单恢复模式,把不活动的日志删除 ,使用简单恢复模式只能将数据库恢复到最后一次备份时的状态,不能恢复到故障点或者特定的即时点完整恢复模式 ,完整记录下操作数据库的每一个步骤,使用完整恢复模式可以将整个数据库恢复到一个特定的时间点,这个时间点可以是最近一次可用的备份 ,一个特定的日期和时间或者是标记的事务大容量日志恢复模式,对大容量进行最小日志记录,以节省日志文件的空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值