版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京传智播客教育SQLServer与讲师:蒋坤课前说明->课程进度->数据库基本概念与基本的T-SQL语言->->T-SQL其他语法->推荐教材->程序员的SQL金典->SQLServer联机帮助数据库的作用->数据库就是用来管理大量数据的->数据的存储与结构的定义->数据的访问方法->数据的安全->连接安全、访问安全、崩溃安全->数据管理技术的发展->人工管理->文件系统->数据库系统->关系型数据库几个概念->数据库、数据文件与数据库管理系统->SQL与SQLServerSQL<>SQLServer<>MSSQLServerT-SQL->几个常见的数据库->MYSQL(速度快,适合对数据要求不十分严谨的地方)->MSSQLServer(与.net结合很好)->DB2(大型)、Oracle(大型)->Access(文件)、SQLite(及其轻量级数据库)、->Sybase等。->对于开发人员大同小异SQLServer的安装与简单结构(了解、略)->SQLServer2008的安装说明->数据库与实例->SQL
Server的简单结构->SQLServer网络接口(SNI)与协议层(TDS)->关系引擎->命令分析器、查询优化器、查询执行器->存储引擎->访问方法、事务管理器、缓冲区管理器->缓冲池(内存)->数据库->架构与对象用ManagementStudio连数据库(SSMS)->SSMS与SQL脚本->身份验证->windows身份验证->SQLServer身份验证->开启sa用户名->安全性->登录名->设定密码与启用->数据库->右键属性->安全性->重启数据库->创建架构SqlServer身份验证->Windows身份验证进入->在对象资源管理器中右键实例名->选择属性->找到安全性,修改服务器身份验证(需要重新启动服务)->然后在对象资源管理器中找到“安全性”->找到登录名sa,右键属性(sa有个向下的红色箭头,表示用户被禁用)->找到状态,启用,权限授予->找到常规,设定密码(可以设置“强制实施密码策略”,表示密码必须复杂)创建数据库->使用SSMS创建数据库->数据库名、文件名、大小、增长、上限、路径->日志文件->数据库的附加与分离->使用T-SQL语句创建数据库->当前数据库(use)->注释(--与/**/)->基本语法(createdatabase)->go命令(略)练习1、开启sa用户进行连接SSMS2、在D盘创建一个文件夹,使用SSMS创建一个数据库(TestDataBase_你的名字)3、将数据库分离后交给同桌进行附加系统数据库创建数据表->数据表是存储数据的地方->表、列、行、主键->主键表与外键表的概念->使用SSMS创建表->常见的数据类型->主键约束与自动增长列->非空与命名规范->使用T-SQL语句创建表分类备注和说明类型说明二进制数据类型存储非子符和文本的数据Image可用来存储图像文本数据类型字符数据包括任意字母、符号或数字字符的组合Char固定长度的非Unicode字符数据Varchar可变长度非Unicode数据Nchar固定长度的Unicode数据Nvarchar可变长度Unicode数据Text()存储长文本信息(指针,2G)varchar(max)NtextNvarchar(max)日期和时间日期和时间在单引号内输入Datetime日期和时间数字数据该数据仅包含数字,包括正数、负数以及分数intsmallint整数floatreal数字货币数据类型用于十进制货币值MoneyBit数据类型表示是/否的数据Bit存储布尔数据类型基本的T-SQL语句(增删改查)->查询数据select字段from数据表;->增加数据insertinto表(列)values(值);->删除数据deletefrom表where条件->修改数据update表set列=值where条件练习1、在之前创建的数据库中添加学生表2、插入3条数据3、将年龄统一修改为10岁4、将3号学生的性别修改为女5、删除所有数据6、使用SSMS和T-SQL两种方法实现基本SQL语句(补充)->删除数据库与表dropdatabase数据库名droptable表名->截断数据truncatetable表名->修改多个列的数据update表名列1=值1,列2=值2,…where条件约束数据库约束是为了保证数据的完整性(正确性)而实现的一套机制非空约束主键约束(PK)
primarykeyconstraint唯一且不为空唯一约束(UQ)uniqueconstraint唯一,允许为空,但只能出现一次默认约束(DF)defaultconstraint默认值检查约束(CK)checkconstraint范围以及格式限制外键约束(FK)foreignkeyconstraint表关系手动添加约束(设计器)->单击右键->设计表->主键->唯一约束->右键->索引键->添加->常规->唯一键->命名“UQ_表名_字段名”->检查约束->右键->check约束->添加->表达式命名“CK_表名_列名”T-SQL实现添加约束->使用修改表结构方式实现->修改表结构使用altertable->altertable表名addconstraint约束名约束类型与条件->主键约束:primarykey(字段)->唯一约束:unique(字段)注意为空与空字符串->check约束:check(约束表达式)->默认约束:default(值)for字段名->添加多个约束(逗号隔开)altertable表名addconstraint约束名约束类型与条件……删除约束altertable表名dropconstraint约束名可以删除多个约束,用,分隔开建表时添加约束->在字段后直接加上约束类型与条件->主键:primarykay->非空约束:notnull->唯一约束:unique->检查约束:check(约束表达式)->默认值约束:default(值)如何查看已有约束->约束与表是同一级别->select*fromsys.objects->type不同表示的类型不一样->S 系统表->U 用户表->PK主键->UQ唯一约束->C 检查约束->D 默认约束修改表->删除一列altertable表名dropcolumn列名->增加一列altertable表名add列名类型->修改数据类型altertable表名altercolumn列名类型关于外键设计器操作->在外键表上右键设计->任意右键->关系->添加->设置表和列规范(谁与谁关联)->命名规范:FK_外键表_主键表_主键T-SQLaltertable外键表addconstraint外键名foreignkey(外键)references主键表(主键)练习1、为学生表添加邮箱列、班级列和IsDel列2、添加非空约束3、为年龄与性别添加检查约束4、为邮箱添加唯一约束5、添加一张班级表tblCourse有班级id、班级名字和班级描述6、为两张表添加主外键关系7、使用SSMS和T-SQL分别实现一个查询——from子句->from子句是一个查询的开始->语法from数据源->注意->from后面写表名->实际上from后面可以使任何结果集->查询的select子句用来显示数据一个查询——where子句->where紧跟在from后执行,用来初选->语法where条件->注意->where子句对数据源直接进行筛选->筛选可以是表达式、判断、匹配、范围和空筛选条件为表达式->将from子句中的数据源字段直接运算例:一张记录期中成绩与期末成绩的表需要查询出考试及格的人最终分数期中成绩占30%,期末成绩占70%最终分数大于60分算及格判断->使用=、<>、>、>=、<、<=进行判断->多个条件使用and和or连接->否定使用not->优先级为not>and>or例:查出总成绩及格,但是期中没有及格的学生匹配->有时需要查询姓”牛”的人->语法使用”_”表示一个任意字符使用”%”表示任意个任意字符判断使用like,而非=例:找出名字叫亮亮的人,找出名字中包含虎的人范围->判断一个字段的取值范围例:查询年龄是19到26岁的女生查询年龄是19、21、25和26岁的女生->可以使用between左值and右值->可以使用in(散列可选值)空值处理->在表中的数据,有些是允许为空的那么查询出性别为空的人怎么办呢?select*fromPersonwheresex=null吗?->数据库中对于空的判断使用isselect*fromPersonwheresexisnull->有时得到的数据中不希望有空可以使用isnull函数一个查询——groupby子句与聚合函数->使用groupby子句可以将数据分组->语法group
by字段->注意->查询中只允许出现分组的字段或聚合函数->分组查询中可以有常量例:查询一张学生表里不同的名字有多少种聚合函数->分组后对数据进行汇总->count() 求总数->sum() 求和->avg() 求平均->max()和min() 求最大与最小->注意->聚合函数忽略空值数据开窗函数over例:查询出所有的分数,要求在每行结果中同时显示出平均分->使用了聚合函数后,结果只能是一行->使用over可以将聚合函数扩展到所有行->语法聚合函数()
over()一个查询——having子句例:查询出名字出现三次以上的人需要统计姓名出现的次数,所以考虑count()->但是where只能直接对数据源进行筛选->使用having对聚合后的数据进行筛选->语法having含有聚合函数的判断一个查询——select子句->使用select子句可以展示查询的数据->可以使用*将所有的列都列出(不推荐)->select子句还可以展示数据(print)->使用表达式的列需要取别名Distinctdistinct去除重复的数据(distinct是对整个结果集进行数据重复处理,不是针对某一列)->检查返回不重复的数据(对于整条记录不重复才会去除)selectdistinct*from表名->针对某一列去除重复,检索数据selectdistinct(需要去除的字段),其他字段from表名Top->获取前几条数据,放在列前面,常与orderby一起使用->排序->select*from表名orderby字段asc->asc表示升序、desc表示降序->查询(百分比向右对齐)->select
top3*
from表名orderbyAge
asc->selecttop5percent*from表名一个查询——orderby子句->数据库中的数据是没有顺序的->使用orderby得到有序的结果(cursor)->语法orderby字段->注意:->使用排序默认是升序,降序后面加desc->使用orderby后得到的是游标而非结果集联合结果集与批量插入数据(*)->将两个结果简单的拼接起来->语法查询union[all]查询->注意:使用union会筛选掉重复的数据,不建议使用->插入数据insertinto表名(列)结果集selectinto语法插入数据->语法select列1,列2,…into不存在的表名from数据源->注意:->表名不允许存在,insertinto的表必须存在->这样的复制没有将约束复制过来->使用where1>2复制表结构表值构造函数(了解)->语法1(SQLServer2008+才有的语法)insertinto表(列)values(值1),(值2),(值3),…->语法2(values(值1),(值2),(值3))as别名(col1,col2,col3)->注意:->表值构造函数是内存中的数据,是临时的->不能单独使用字符串函数(掌握)查阅联机丛书LEN():计算字符串长度(字符的个数。)datalength();//计算字符串所占用的字节数,不属于字符串函数。LOWER()、UPPER():转小写、大写LTRIM():字符串左侧的空格去掉RTRIM():字符串右侧的空格去掉LTRIM(RTRIM('bb'))LEFT()、RIGHT()截取取字符串SELECTLEFT('abcdefg',2)SUBSTRING(string,start_position,length) ->参数string为主字符串,start_position为子字符串在主字符串中的起始位置,该位子从1开始 ->length为子字符串的最大长度。 ->SELECTSUBSTRING('abcdef111',2,3)日期函数->获得系统当前时间:getdate()selectgetdate()当前是第几天:selectday(getdate())当前的年份:selectyear(getdate())当前的月份:selectmonth(getdate())->在当前时间加上一个时间间隔dateadd(在哪个部分增加,增加多少,日期)->判断两个日期的间隔datediff(单位,开始的时间,结束的时间)->实例:将学生按年龄分组(学生表要有出生年月)selectdatediff(year,sBirthday,getdate()),count(*)fromstudentgroupbydatediff(year,sBirthday,getdate)->返回日期的特定部分datepart()实例:统计学生生日的年份数量(某一年的有多少个等)selectdatepart(year,sBirthday),count(*)fromstudentgroupbydatepart(year,sBirthday)类型转换函数CAST(expressionASdata_type)CONVERT(data_type,expression,[style])Select‘您的班级编号’+1错误这里+是数学运算符SELECTFIdNumber,CAST(RIGHT(sNo,3)AS
INTEGER)as
后三位的整数形式,CAST(RIGHT(sNo,3)AS
INTEGER)+1as
后三位加1,CONVERT(INTEGER,RIGHT(sNo,3))/2as
后三位除以2FROMstudent对日期的转换。转换成各种国家格式的日期。select
convert(varchar(20),getdate(),104)Style的格式,查sql帮助。(输入convert函数查询)将日期转换为指定格式的字符串。日期→字符串练习(*)创建一张表,记录电话呼叫员的工作流水,记录呼叫员编号、对方号码、通话开始时间、通话结束时间。建表、插数据等最后都自己写SQL语句。要求:输出所有数据中通话时间最长的5条记录。orderbydatediff输出所有数据中拨打长途号码(对方号码以0开头)的总时长。like、sum输出本月通话总时长最多的前三个呼叫员的编号。输出本月拨打电话次数最多的前三个呼叫员的编号.groupby,count(*)
为什么要学之前我们所学只能在查询分析器里查看数据,操作数据,我们不能让普通用户去学sql,所以我们搭建一个界面(WebWinform)让用户方便的操作数据库中的数据什么是就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类用类操作文件一样,System.Data.这组类是用来操作数据库(不光是MSSqlServer),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSqlServer一致组成(*)数据提供程序***Connection,用来连接数据库***Command,用来执行SQL语句DataReader只读只进的结果集,一条一条读取数据DataAdapter,一个封装了上面3个对象的对象。数据集(DataSet),临时数据库。断开时连接的数据库操作访问数据库的步骤。11.连接数据用Connection2.执行SQL语句Command3.执行完毕之后将结果一条一条返回。DataReader2使用DataAdapter+DataSet,这种方法本质还是通过Connection、Command、DataReader将数据全部取出来然后放到了DataSet中。如何连接数据库在管理工具里面->连接数据库->新建查询->写SQL语句->执行SQL语句在中->创建连接通道(SqlConnection)->创建SQL命令对象(mand)->开始查询连接SQLServer->SqlConnection->构造方法提供连接字符串->属性提供连接字符串->连接字符串->datasource=实例名;initialcatalog=数据库名;integratedsecurity=true/userid=…;password=…;->server=实例名;database=数据库名;integratedsecurity=true/uid=…;pwd=…;->打开连接open()->连接都需要Dispose()->State属性可以查看连接状态准备执行SQL语句->执行SQL语句使用mand对象->提供SQL语句->构造方法提供->属性提供->执行SQL语句需要知道在哪儿执行->mand需要提供SQL语句和连接通道->常用三个方法->ExecuteNonQuery() 处理增、删、改,返回受影响行数->ExecuteScalar() 处理查询,返回首行首列->ExecuteReader() 处理查询,返回DataReader对象执行简单的增删改语句mand的ExecuteNonQuery执行增删改操作ExecuteNonQuery返回值是执行的影响行数//执行数据库操作3步//打开连接conn.Open();//执行操作result=cmd.ExecuteNonQuery();//关闭连接conn.Close();使用using语句即使释放连接资源,不用再考虑是否关闭连接,推荐使用练习添加学生编辑学生删除学生案例,对班级表操作1.增加一个班级2.修改一个班级的名称3.删除一个班级的信息。异常处理在执行数据库操作时,如果数据库服务器未打开,或者sql语句写错了会怎么样?可以使用try…catch…finally来捕获异常使用异常处理可以保证一个功能出错不影响另一个功能,比如添加操作失败,不影响查询的操作ExecuteScalar->使用ExecuteScalar()执行SQL语句,返回第一行第一列,object类型->转换使用Convert,不要使用强转->使用ExecuteScalar()一般执行聚合查询->使用ExecuteScalar()亦可查询selectgetdate()->在添加数据的时候,得到自动增长id->在value前使用outputinserted.主键字段->添加学生练习ExecuteReader->查询多行数据,返回一个DataReader对象->HasRows属性表示查询结果->提供连接通道用来持续得到数据->并未将数据全部倒入到内存->如何处理DataReader->使用while循环,调用Read方法->调一次,查一次->GetString()、GetInt32()、GetOrdinal()方法->使用索引,索引器有重载->DataReader必须保证SqlConnection处于连接状态SQL注入漏洞攻击->对于用户登录的实现,提供SQL语句->select*from表名whereuid=…andpwd=…->使用字符串拼接->提供密码为:’or’1’=’1’->防范注入漏洞攻击的方法就是使用参数查询查询参数->提供SqlParameter对象处理参数比较->SqlParameter提供两个参数->参数别名->参数值->mand提供一个Parameter属性->该属性表示SqlParameter的集合->使用Add方法添加(记得new)->AddWithValue方法->不使用要清空->SQL语句中直接使用参数别名->参数在SQLServer内部不是简单的字符串替换->SQLServer直接用添加的值进行数据比较案例V1.0:用户界面中进行登录判断。V1.1:输错三次禁止登陆,用数据库记录ErrorTimes。数据导入:从文本文件导入用户信息。数据导出:将用户信息导出到文本文件。案例(省市联动)省市选择程序,数据全部来自于数据库:把createtable中的varchar改为nvarchar,在Insert语句的汉字前面加上N(查找“,'”替换为“,N'”)ComboBox的显示值:Items.Add的参数是Object类型,也就是可以放任意数据类型的数据,可以设置DisplayMember属性设定显示的属性,通过SelectedItem属性取得到就是选择的条目对应的对象。例子。疑问:取出来的是Object,怎么能转换为对应的类型?变量名只是“标签”。显示的值和实际的对象不一样,在中也有相同的东西创建一个ProvinceItem类,将数据填充在这个对象中添加到ComboBox中。将连接字符串写在代码中的缺点:多次重复,违反了DRY(Don'tRepeatYourself)原则;如果要修改连接字符串就要修改代码。将连接字符串写在App.Config中:添加App.config文件(文件名不能改):添加→新建项→常规→应用程序配置文件。App.config是.Net的通用配置文件,在中也能同样使用。在App.config中添加connectionStrings段,添加一个add项,用name属性起一个名字(比如DbConnStr),connectionString属性指定连接字符串。在“引用”节点上点右键“添加引用”,找到System.configuration。不是所有.Net中的类都能直接调用,类所在的Assembly要被添加到项目的引用中才可以。ConfigurationManager.ConnectionStrings["DbConnStr"].ConnectionString得到连接字符串。如何在部署的程序中修改配置。DataSet(断开式数据访问)->DataSet是数据集,是一个临时数据库->多层数据中常用->现在多用List<T>强类型->建数据集->建表->建列结构->附加->设置列属性:自增、是否允许为空->添加数据(创建行对象)->创建行->加行到DataSet->遍历数据集(循环与集合与索引结构)->显示在DataGrideView(DataSource属性)SqlDataAdapter->将数据库中的数据一次性提出放至DataSet->创建一个DataSet->创建一个SqlDataAdapter->Fill方法取数据->保存修改数据->mandBuilder对象(以主键定位)->Update方法SQLHelper(重点)->封装一个SQLHelper类方便使用,提供->ExecuteDataTable(stringsql,paramsSqlParameter[]parameters)->ExecuteNonQuery(stringsql,paramsSqlParameter[]parameters)->ExecuteScalar(stringsql,paramsSqlParameter[]parameters)->网上有微软提供的最全的SQLHelper类,是EnterpriseLibrary中的一部分->案例:用SQLHelper实现省市选择->练习:用SQLHelper重写登录程序->sqlconnection在程序中一直保持它open可以吗?对于数据库来说,连接是非常宝贵的资源,一定要用完了就close、dispose。CASE函数用法->使用类似switch-case与if-elseif->语法case[字段]when表达式then显示数据when表达式then显示数据else显示数据end->百分制转素质教育->then后数据类型要一致练习2单号金额Rk110Rk220Rk3-30Rk4-10将上面的表输出为如下的格式:单号收入支出Rk1100Rk2200Rk3030Rk4010子查询->将查询出来的结果括起来作为一个查询的条件或显示结果(单值与列值)->单值子查询、多值子查询->查询学生表中最高分与最低分和平均分->查询某位学生的分数(单值子查询)->查询多个学生的分数(多值子查询)->快速删除表连接Join->交叉连接(crossjoin)->内连接(innerjoin…on)->外连接(leftjoin…on和rightjoin…on)->多表连接(了解)表join表on…join表on…案例1:查询所有学生信息案例2:查询学生分数案例3:查询所有学生(参加及未参加考试的都算)及成绩表表达式->派生表(临时)将查询出的数据(结果集)作为from后的数据源查询使用括号括起来,并命名(必须)不能在里面使用orderby(除非加top)->公用表表达式(CTE,临时)语法->视图(vw,持久)语法视图概述回顾数据怎么存储的视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同:数据表是实际存储记录的地方,然而视图并不保存任何记录,它存储的实际上是查询语句相同的数据表,根据不同用户的不同需求,可以创建不同的视图(不同的查询语句)视图的目的是方便查询,所以一般情况下不能对视图进行增删改优点:筛选表中的行防止未经许可的用户访问敏感数据降低数据库的复杂程度分页,务必自己写出来数据库中分页的实现,见备注。每页5条,数据,查询第4页的数据。row_num()over(orderby字段asc)限制结果集。返回第3行到第5行的数据:select*from(selectrow_number()over(orderbysIdasc)asnum,*fromstudent)asswheres.numbetween6and10orderbysIdasc内联表值函数(了解,知道有即可)->语法createfunctionfn_函数名(@变量as类型)returnstableasreturn结果集局部变量_先声明再赋值
声明局部变量
DECLARE@变量名数据类型DECLARE@namevarchar(20)DECLARE@idint
赋值
SET@变量名=值--set用于普通的赋值
SELECT@变量名=值--用于从表中查询数据并赋值,,可以一次给多个变量赋值例如:SET@name=‘张三’SET@id=1SELECT@name=sNameFROMstudentWHEREsId=@id输出变量的值SELECT以表格的方式输出,可以同时输出多个变量PRINT以文本的方式输出,一次只能输出一个变量的值SELECT@name,@idPRINT@namePRINT@id补充问题:newSqlParameter(“参数名”,“值”);newSqlParameter(“@id”,0);有问题?报错信息:参数化查询‘(@tidbigint)insertintotblT1values(@tid)’需要参数‘@tid’,但未提供该参数。2.app.config文件的位置。变量种类变量分为:局部变量:局部变量必须以标记@作为前缀,如@Ageint局部变量:先声明,再赋值全局变量(系统变量):全局变量必须以标记@@作为前缀,如@@version全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值全局变量变量含义@@ERROR最后一个T-SQL错误的错误号@@IDENTITY最后一次插入的标识值@@LANGUAGE当前使用的语言的名称@@MAX_CONNECTIONS可以创建的同时连接的最大数目@@ROWCOUNT 受上一个SQL语句影响的行数@@SERVERNAME本地服务器的名称@@TRANSCOUNT 当前连接打开的事务数@@VERSION
SQLServer的版本信息IFELSEIF(条件表达式)
BEGIN--相当于C#里的{
语句1
……
END--相当于C#里的}ELSE
BEGIN
语句1
……
END计算平均分数并输出,如果平均分数超过60分输出成绩最高的三个学生的成绩,否则输出后三名的学生declare@avgfloatselect@avg=avg(english)fromscoreprint'平均分数'+convert(varchar(20),@avg)if(@avg>60)Beginprint'前三名‘selecttop3sName,englishfromstudentinnerjoinscoreonstudent.sId=score.studentIdorderbyenglishdescEndElse begin print'后三名' selecttop3sName,englishfromstudentinnerjoinscoreonstudent.sId=score.studentIdorderbyenglishasc end例:WHILE循环WHILE(条件表达式)
BEGIN
--相当于C#里的{
语句……
continue
BREAK
END--相当于C#里的}--计算1-100之间所有奇数的和。事务-为什么需要事务如,转账问题:假定钱从A转到B,至少需要两步:A的资金减少然后B的资金相应增加updatebanksetbalance=balance-1000wherecid='0001'updatebanksetbalance=balance+1000wherecid='0002'--查看结果。SELECT*FROMbank注意约束:金额不能小于10会否出问题?什么是事务(Transaction)事务:同生共死指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行语法步骤:开始事务:BEGINTRANSACTION事务提交:COMMITTRANSACTION事务回滚:ROLLBACKTRANSACTION判断某条语句执行是否出错:全局变量@@ERROR;@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计;例:SET@errorSum=@errorSum+@@error事务语法开启事务(begintransaction)一般定义一个局部变量记录信息书写T-SQL语句执行代码,并记录数据判断记录的信息是否满足要求满足提交事务(committransaction)不满足回滚(rollbacktransaction)存储过程存储过程---就像数据库中运行方法(函数)和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果。前面学的ifelse/while/变量/insert/select等,都可以在存储过程中使用优点:执行速度更快–在数据库中保存的存储过程语句都是编译过的允许模块化程序设计–类似方法的复用提高系统安全性–防止SQL注入减少网络流通量–只要传输存储过程的名称系统存储过程由系统定义,存放在master数据库中名称以“sp_”开头或”xp_”开头,自定义的存储过程可以以usp_开头。自定义存储过程由用户在自己的数据库中创建的存储过程系统存储过程系统存储过程说明sp_databases列出服务器上的所有数据库。sp_helpdb报告有关指定数据库或所有数据库的信息sp_renamedb更改数据库的名称sp_tables返回当前环境下可查询的对象的列表sp_columns回某个表列的信息sp_help查看某个表的所有信息sp_helpconstraint查看某个表的约束sp_helpindex查看某个表的索引sp_stored_procedures列出当前环境中的所有存储过程。sp_password添加或修改登录帐户的密码。sp_helptext显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。创建存储过程定义存储过程的语法
CREATE
PROC[EDURE]存储过程名@参数1数据类型[=默认值][OUTPUT],@参数n数据类型[=默认值][OUTPUT]
ASSQL语句参数说明:参数可选参数分为输入参数、输出参数输入参数允许有默认值EXEC
过程名
[参数]调用带参数的存储过程无参数的存储过程调用:Execusp_upGrade有参数的存储过程两种调用法:EXECusp_upGrade260,55---按次序EXECusp_upGrade2@english=55,@math=60--参数名参数有默认值时:EXECusp_upGrade2--都用默认值EXECusp_upGrade21--第一个用默认值EXECusp_upGrade21,5--不用默认值存储过程中使用输出参数输出参数关键字:OUTPUTdeclare@aintexecusp_pp@canshu=@aoutputprint@a通过执行存储过程设置执行类型CommandType设置参数类型Direction实现登陆的存储过程实现分页的存储过程(*)作业:将前面的所有操作,都重新做一遍,使用app.config、SQLHelper、存储过程。案例:使用存储过程、事务、wi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陶艺课程设计论文
- 阿米巴管理课程设计
- 电力控制系统课程设计
- GB/T 31235-2024±800 kV直流输电线路金具技术规范
- 2024校企合作环境科学与工程专业共建合同3篇
- 2024智慧城市交通信号控制系统升级合同
- 二零二五年度电子商务与物流企业智能物流服务合同2篇
- 二零二五年新能源电池研发与生产合同6篇
- 2024泰安市环保行业劳动合同规范文件3篇
- 二零二五版互联网+高额抵押反担保合同3篇
- GB/T 45102-2024机采棉采收技术要求
- 2025年海南省盐业集团有限公司招聘笔试参考题库含答案解析
- 2024-2025学年成都市高一上英语期末考试题(含答案和音频)
- 2024年南通职业大学单招职业技能测试题库有答案解析
- 2024股权融资计划
- 西式面点师试题与答案
- 钢结构连廊专项吊装方案(通过专家论证)
- 50MWp渔光互补光伏电站项目锤桩施工方案
- 2025免疫规划工作计划
- 初二家长会课件下载
- 食品安全知识培训
评论
0/150
提交评论