收藏 分销(赏)

Sql Server 技巧大全.doc

上传人:xrp****65 文档编号:7020696 上传时间:2024-12-25 格式:DOC 页数:14 大小:180KB 下载积分:10 金币
下载 相关 举报
Sql Server 技巧大全.doc_第1页
第1页 / 共14页
Sql Server 技巧大全.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
SQL Server 技巧大全 数据完整性 1. 实体完整性约束:数据行不能有重复,每一行数据都由主键来唯一确定 2. 域完整性约束:实现了对输入到特定列的数值的限制 3. 引用完整性约束:用来保持表之间已定义的关系 4. 自定义完整性约束:用来定义特定的规则 SQL Server中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束 如果建立了主表和子表的关系,则: ● 子表中的相关项目的数据,在主表中必须存在 ● 主表中相关项的数据更改了,则子表对应的数据项也应当随之更改 ● 在删除子表之前,不能够删除主表 T-SQL的组成: ◇ DML(数据操作语言)用来查询\插入\删除和修改数据库中的数据 ◇ DCL(数据控制语言)用来控制数据库组件的存取许可、存取权限等的命令 ◇ DDL(数据定义语言)用来建立数据库、数据库对象和定义其列,大部分是以create开头的命令 使用INSERT插入数据行 INSERT [INTO] <表名> [列名] VALUES <值列表> 一次插入多行数据 1. 通过INSERT SELECT语句将现有表中的数据添加到新表 INSERT INTO TongXuLu(‘姓名’,’地址’,’电子邮件’) SELECT SName,SAddress,SEmail FROM Students 2. 通过SELECT INTO语句将现有表中的数据添加新表 SELECT Students.SName,Students.SAddress,Students.SEmail INTO TongXuLu FROM Students 创建一个新的标识列 SELECT IDENTITY (数据类型,标识种子,标识增长量) AS 列名 INTO 新表 FORM 原始表 3. 通过UNION关键字合并数据进行插入 INSERT Students (SName,SGrade,SSex) Select ‘女生1’,7,0 UNION … Select ‘女生n’,7,0 使用T-SQL更新数据 UPDATE <表名> SET <列名=更新值> [WHERE <更新条件>] 使用T-SQL删除数据 DELECT FROM <表名> [WHERE <删除条件>] 使用TRUNCATE TABLE删除数据 TRUNCATE TABLE 表名 使用SELECT语句进行查询 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名> [ASC或DESC]] 查询空行 Select SName from Students where SEmail is null 查询返回限制的行数 Select top 5 SName,SAddress from Students where SSex = 0 Select top 20 percent SName,SAddress from Students where SSex = 0 字符串函数 函 数 名 描 述 举 例 返 回 值 ASCII 返回字符表达式最左端字符的ASCII代码值 ASCII('a') 97 CHAR 将int ASCII代码转换为字符值 CHAR(65) A CHARINDEX 用来寻找一个指定的字符串在另一个字符串中的起始位置 CHARINDEX('ACCP','My Accp Course',1) 4 DATALENGTH 返回字符串包含的字符数,但不包含后面的空格 DATALENGTH('abc') 3 LEN 返回传递给它的字符串长度 LEN('SQL Server 课程') 12 LOWER 把传递给它的字符串转换为小写 LOWER('SQL Server 课程') sql server 课程 UPPER 把传递给它的字符串转换为大写 UPPER('SQL Server 课程') SQL SERVER 课程 LTRIM 清除字符左边的空格 LTRIM(' 周智宇') 去掉前面的空格 RTRIM 清除字符右边的空格 RTRIM(' 周智宇') 去掉后面的空格 RIGHT 从字符串右边返回指定数目的字符 RIGHT('买卖提.吐尔松',3) 吐尔松 REPLACE 替换一个字符串中的字符 REPLACE('莫乐可切.杨可','可','兰') 莫乐兰切.杨兰 REVERSE 反转字符串 REVERSE('abc') cba SPACE 生成空格 'abc'+SPACE(10)+'abc' abc abc STUFF 删除指定长度的字符,并在该位置插入一个新的字符串 STUFF('ABCDEFG',2,3,'我的音乐我的世界') A我的音乐我的世界EFG SUBSTRING 取子串 SUBSTRING('abcd',1,4) abcd 日期函数 函 数 名 描 述 举 例 返 回 值 GETDATE 取得当前的系统日期 GETDATE() 系统日期 DATEADD 将指定的数值添加到指定的日期部分后的日期 DATEADD(mm,4,'01/01/99') 以当前的日期格式返回05/01/99 DATEDIFF 两个日期之间的指定日期部分的区别 DATEDIFF(mm,'01/01/99','05/01/99') 4 DATENAME 日期中指定日期部分的字符串形式 DATENAME(dw,'01/01/2000') Saturday DATEPART 日期中指定日期部分的整数形式 DATEPART(day,'01/15/2000') 15 数学函数 函 数 名 描 述 举 例 返 回 值 ABS 取数值表达式的绝对值 ABS(-43) 43 CEILING 取大于或等于的最小整数 CEILING(43.5) 44 FLOOR 取小于或等于的最大整数 FLOOR(43.5) 43 PI 圆周率 PI() 3.14159265358979 POWER 取数值表达式的幂值 POWER(5,2) 25 ROUND 四舍五入为指定精定 ROUND(43.543,1) 43.5 SIGN 对于正数返回+1,对于负数返回-1,对于0则返回0 SIGN(-43) -1 SQRT 平方根 SQRT(9) 3 系统函数 函 数 名 描 述 举 例 返 回 值 CAST 用来显式转变数据类型 CAST('123' AS int)+10 133 CONVERT 用来转变数据类型 CONVERT(VARCHAR(5),12345) 字符串12345 CURRENT_USER 返回当前用户的名字 SELECT CURRENT_USER 你登录的用户名 DATALENGTH 返回用于指定表达式的字节数 DATALENGTH('中国A联盟') 9 HOST_NAME 返回当前用户所登录的计算机名 HOST_NAME() 你所登录的计算机名 SYSTEM_USER 返回当前所登录的用户名 SYSTEM_USER 你当前所登录的用户名 USER_NAME 从给定的用户ID返回用户名 USER_NAME(1) 从任意数据库中返回"dbo" 使用LINK进行模糊查询 Select * from Card where ID LINK ‘00[^8]%[A,C]%’ //查询不是八朋发行的A卡或C卡 使用BETWEEN在某个范围内进行查询 Select * from Score where Score BETWEEN 60 AND 80 //使用NOT来对限制条件″取反″操作 使用IN在列举值内进行查询 Select SName from Students where SAddress In(‘北京’,’广州’,’上海’) SQL Server中的聚合函数 1. SUM:返回表达式中所有数值的总和 2. AVG:返回表达式中所有数值的平均值 3. MAX和MIN:返回表达式中的最大值和最小值 4. COUNT:返回提花的表达式中非空值的计数 使用Group By进行分组查询 Select CourseID,AVG(Score) from Score Group By CourseID 使用HAVING子名进行分组筛选 Select StudentID,CourseID,AVG(Score) from Score Group By StudentID,CourseID Having count(Score)>1 多表联接查询 1. 内联接:根据表中共同的列来进行匹配 (1) 在WHERE子句中指定联接条件 Select Students.SName,Score.CourseID,Score.Score from Students,Score where Students.Score=Score.StudentID (2) 在FROM子句中使用JOIN…ON Select S.SName,C.CourseID,C.Score from Students as S INNER JOIN Score as C on (S.Score=C.StudentID) 2. 外联接 (1) 左外联接查询:结果集包括LEFT OUTER子名中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没匹配行,则在相关的结果集行中右表的所有选择列均为空值 Select S.SName,C.CourseID,C.Score from Students as S LEFT OUTER JOIN Score as C on S.Score=C.StudentID (2) 右外联接查询:返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值 Select Titles.Title_id,Titles. Title,Publishers.Pub_name from Titles RIGHT OUTER JOIN Publishers on Titles.Pub_id=Publishers.Pub_id (3) 完整外查询:FULL JOIN或FULL OUTER JOIN,返回左表和右表中的所有行,当某行在另一个表中没有匹配行时,则另一个表的选择列包含空值,如果表之间有匹配行,则整个结果集行包含基表的数据值 3. 交叉联接:返回左表中的所有行,左表中的每一行与右表中的所有行再一一组合,相当于两个表″相乘″ select * from spt_values cross join MSreplication_options 数据库设计:就是将数据库中的数据对象以及这些数据对象之间关系,进行规划和结构化的过程 设计数据库的步骤: (1) 收集信息 (2) 标识对象(实体) (3) 标识每个对象需要存储的详细信息(属性) (4) 标识对象(实体)之间的关系 实体-关系模型: 1. 实体:指现实世界中具有区分其他事物的特征或属性并与其他实体有联系的对象 2. 属性:实体的特征 3. 关系:两个或多个实体之间的联系 4. 映射基数:表示可以通过关系与该实体关联的其他实体的个数 一对一、一对多、多对一和多对多 5. 实体关系图 E-R图的组成包括以下几部分 ♂ 矩形表示实体集 ♂ 椭圆形表示属性 ♂ 菱形表示关系集 ♂ 直线用来连接属性和实体集,也用来连接实体集和关系集 数据规范化:从关系数据库表中除去冗余数据的过程。如果使用得当规范化是用于获得高效的关系数据库表的逻辑结构的最好和最容易的方法。规范化数据时,应执行下列操作 1. 将数据库的结构精简为最简单的形式 2. 从表中删除冗余的列 3. 标识所有依赖于其他数据的数据 规范设计 1. 第一范式(1NF,Normal Formate) 确保每列的原子性。如果每列(或每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式 2. 第二范式(2NF) 第二范式在第一范式的基础上,更进一层,其目标是确保表中的每列都和主键相关:如果一个关系满足1NF,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式 3. 第三范式(3NF) 第三范式在第二范式的基础上,更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关。如果一个关系满足2NF,并且除了主键以外的其他列都不依赖于主键列,则满足第三范式 SQL Server中的数据类型 类 型 数据类型 描 述 整型 Int 存储-231(-2147483648)~ 231(2147483647)之间的整数。占用4个字节 Smallint 存储-215(-32768)~ 215(32767)之间的整数。占用2个字节 Tinyint 存储0~255之间的整数。占用1个字节 bigint 存储-263(-9223372036845775808) ~ 263-1(9223372036845775807)之间的所有正负整型数据,占用8个字节 浮点型 Numberic 与decimal型相同 Real 像浮点数一样,是近似数值类型。在-3.40E+38 ~ -1.18e-38、0以及1.18e-38到3.40E+38之间的浮点数 Float 是一种近似数,供浮点数使用。在1.79E+308~1.79E+308之间的任意数 Decimal 存储-1038~ 1038之间的固定精度和范围的数值型数据。范围是小数点左右所能存储的数字的总位数,精度是小数点右边存储的数字的位数,形式:decimal[(p[,s])],其中,p是指精度,指定小数点左边和右边可存储的十进制数字的最大个数,数度必须是1到38之间的值,s是指小数数位,必须是0到精度p之间 字符型 Char 存储指定长度的定长非统一编码型的数据,最大长度为8000个字符 Varchar 同char类型一样,用来存储非统一编码型字符数据。与char类型不一样的是,此数据类型为变长。当定义一列为该数据类型时,要指定该列的最大长度 Text 存储大量的非统一编码型字符数据。最多可有231-1或20亿个字符 Unicode型 Nchar 存储定长Unicode(统一编码)字符型数据,用双字节结构来存储每个字符,而不是用单字符。它允许大量地扩展字符。能存储4000种字符,使用的字节空间增加了一倍 Nvarchar 用作变长Unicode编码字符型数据。能存储4000种字符,使用的字节空间增加了一倍 Ntext 存储大量的Unicode编码字符型数据。能存储230 -1或10亿个字符,使用的字节空间增加了一倍 是/否型 Bit 表示是/否值,其值只能是0、1。用于存储只有两种可能值的数据 二进制型 Binary 存储可达8000字节长的定长的二进制数据 Varbinary 存储可达8000字节长的变长的二进制数据 Image 存储变长的二进制数据,最大可达230 -1或20亿个字符 货币型 money 用来表示钱和货币值,存储从-9220~9220亿之间的数据,可以精确到货币单位1/10000 Smallmoney 用来表示钱和货币值,存储从-214748.3648~214748.3647之间的数据,可以精确到货币单位1/10000 日期时间型 Datatime 用来表示日期和时间。存储从1753年1月1日到9999年12月31日间所有的日期和时间数据,可以精确到11300秒或3.33毫秒 Smalldatetime 表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟 特殊类型 Timestamp 是一种特殊的数据类型,用来创建一个数据库范围内的唯一时间戳。一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有″time″,但timestamp列不是人们可识别的日期。在一个数据库中,timestamp值是唯一的 uniqueidentifier 用来存储一个全局的唯一标识符,即GUID。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID函数或转换一个字符串为唯一标识符来初始化具有标识符的列 用T-SQL建立文件夹目录:exec xp_cmdshell 'md c:\wuguanfeng' 语法:EXEC xp_cmdshell DOS命令 [NO_OUTPUT] 其中EXEC表示调用存储过程,NO_OUTPUT为可选参数,设置执行DOS命令后是否输出返回信息 如果不能执行xp_cmdshell,则用命令行参数sp_configure 'show advanced option',1 数据库文件由以下3部分绘成 1. 主数据文件:*.mdf 2. 次要数据文件:*.ndf 3. 日志文件:*.ldf 创建数据库 Create database 数据库名 on [primary] ( <数据库文件参数> [,…n] [<文件组参数>] ) [Log on] ( {<日志文件参数> [,…n]} ) 文件的具体参数语法如下: ([NAME=逻辑文件名,] FILENAME=物理文件名 [, SIZE=大小] [, MAXSIZE={最大容量|UNLIMITED}] [, FILEGROWTH=增长量]) [,…n] 其中,[]表示可选部分,{}表示必需的部分 删除数据库 If exists(select * from sysdatabases where name=’数据库名’) Drop database数据库名 创建表 Create table 表名 ( 字段1 数据类型 列的特征, 字段2 数据类型 列的特征, … ) 删除表 If exists(select * from sysobjects where name=’表名’) Drop table 表名 使用SQL语句创建约束 ---添加主键约束(将stuNo作为主键) ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ---添加唯一约束(身份证号唯一,因为每个人的身份证号全国唯一) ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID) ---添加默认约束(如果地址不填,默认为″地址不祥″) ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT (‘地址不祥’) FOR stuAddress ---添加检查约束(要求年龄只能在15~40岁之间) ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK (stuAge BETWEEN 15 AND 40) ---添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo) ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuNo(stuNo) 使用SQL语句删除约束 ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddress 使用SQL语句创建登录 创建登录账户 Windows:EXEC sp_grantlogin ‘windows域名\域账户’ SQL:EXEC sp_addlogin ‘账户名’,’密码’ 创建数据库用户 EXEC sp_grantdbaccess ‘登录账户’,’数据库用户’ 给数据库用户授权 Grant 权限 [ON 表名] TO 数据库用户 局部变量 DECLARE @variable_name DataType variable_name为局部变量的名称,DataType为数据类型 使用SET语句或SELECT语句赋值 全局变量 变 量 含 义 @@CONNECTIONS 记录自最后一次服务器启动以来,所有针对这服务器进行的连接数目,包括没有连接成功的尝试 @@CPU_BUSY 记录自最近一次服务器启动以来,以ms为单位的CPU工作时间 @@CURSOR_ROWS 返回在本次服务器连接中,打开游标取出数据行的数目 @@DBTS 返回当前数据库中timestamp数据类型的当前值 @@ERROR 最后一个T-SQL错误的错误号 @@IDENTITY 最后一次插入的标识值 @@IDLE 返回以ms为单位计算SQL Server服务器自最近一次启动以来处于停顿状态的时间 @@IO_BUSY 返回以ms为单位计算SQL Server服务器自最近一次启动以来花在输入和输出上的时间 @@LANGUAGE 当前使用的语言的名称 @@LOCK_TIMEOUT 返回当前对数据锁定的超时设置 @@MAX_CONNECTIONS 可以创建的同时连接的最大数目 @@PACK_RECEIVED 返回SQL Server服务器自最近一次启动以来从网络上接收数据分组的总数目 @@PACK_SENT 返回SQL Server服务器自最近一次启动以来一共向网络上发送数据分组的数目 @@PROCID 返回当前存储过程的ID标识 @@REMSERVER 返回在登录记录中记载远程SQL Server服务器的名字 @@ROWCOUNT 受上一个SQL语句影响的行数 @@SERVERNAME 本地服务器的名称 @@SERVICENAME 该计算机上的SQL服务的名称 @@SPID 返回当前服务器进程的ID标识 @@TIMETICKS 当前计算机上每刻度的微秒数 @@TOTAL_ERRORS 返回自SQL Server服务器启动以来,所遇到读写错误的总数 @@TOTAL_READ 返回自SQL Server服务器启动以来,读磁盘的次数 @@TOTAL_WRITE 返回自SQL Server服务器启动以来,写磁盘的次数 @@TRANCOUNT 当前连接打开的事务数 @@VERSION SQL Server的版本信息 输出语句 Print 局部变量或字符串 Select 局部变量 as 自定义列名 IF-ELSE条件语句 IF (条件) 语句或语句块 ELSE 语句或语句块 同Java语言一样,ELSE为可选,如果有多条语句,需要使用语句块,用BEGIN…END表示 为了把输出的表格数据和文本消息显示在同一个窗口中,需要做如下设置: 单击Microsoft SQL Server Studio的菜单中″工具″à″选项″命令,选择″查询结果″选项,将″显示结果的默认方式″设置为″以文本格式显示结果″ WHILE循环语句 WHILE (条件) 语句或语句块 [BREAK] 使用BREAK关键字从最内层的WHILE循环中退出 CASE多分支语句 CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 [ELSE 其他结果] END 批处理语句:它是一条或多条SQL语句的集合,主要好处是能够简化数据库的管理、提高语句执行的效率,批处理结束的标志是″GO″ 子查询:一般来说,表连接都可以用子查询替换,但反过来说却不一定,有的子查询不能用表连接替换,子查询比较灵活、方便,形式多样,适合于作为查询的筛选条件,而表连接更适合于查看多表的数据 IN和NOT IN子查询 IN后面的子查询可以返回多条记录,用于限制某列的筛选范围 EXISTS和NOT EXISTS子查询 从理论上讲,EXISTS可以作为WHILE语句的子查询,但一般用于IF语句的存在检测,如果子查询的结果非空,则EXISTS(子查询)将返回true,否则返回false 合并多个表中的数据有以下3种方法 4. 联合(Union)----合并多个数据表中的行 5. 子查询----将一个查询包含到另一个查询中 6. 连接----合并多个数据表中的列 事务:是指一组相互依赖的操作单元的集合,用来保证对数据库的正确修改,保持数据的完整性,如果一个事务的某个单元操作失败,将取消本次事务的全部操作。数据库事务必须具备以下特征(简称ACID): (1) 原子性(Atomicity):事务是一个完整的操作,条元素是不可分的,所有元素必须作为一个整体提交或回滚,如果事务中的任何元素失败,则整个事务将失败 (2) 一致性(Consistency):当事务完成时,数据必须处于一致状态 (3) 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或在另一个使用相同数据的事务结束之后访问这些数据 (4) 持久性(Durability):事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障,也将一直保持 开始事务:BEGIN TRANSACTION 提交事务:COMMIT TRANSACTION 回滚事务:ROLLBACK TRANSACTION 事务的分类有以下3种 ◆ 显式事务:用BEGIN TRANSACTION明确指定事务的开始 ◆ 隐式事务:通过设置SET IMPLICIT_TRANSACTIONS ON语句,将隐式事务模式设置为打开。当以隐式事务操作时,SQL  Server将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需提交或回滚事务 ◆ 自动提交事务:这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交。如果错误,则自动回滚 索引:可以大大提高数据库的检索速度,改善数据库性能 唯一索引:不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则一般情况下大多数数据库都不允许创建唯一索引。创建了唯一约束,将自动创建唯一索引,尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束 主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。它要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据 聚集索引:在聚集索引中,表中条行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。如果不是聚集索引,则表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。在SQL Server中,一个表只能创建一个聚集索引,但可以有多个(最多249个)非聚集索引,设置某列为主键,该列就默认为聚集索引 创建索引 CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX 索引名 ON 表名 (列名[,列名]…) [WITH FILLFACTOR=x] UNIQUE指定唯一索引,可选;CLUSTERED、NONCLUSTERED指定是聚集索引还是非聚集索引,可选;FILLFACTOR表示填充因子,指定0~100的值,该值指示索引面填满的空间所占的百分比 删除索引 IF EXISTS(select * from sysindexes where name=’索引名’) DROP INDEX 表名.索引名 指定按索引查询 Select * from 表名 (索引名) where 条件 视图:存在于数据库中的″虚拟表″,用户可以像使用表一样使用视图 创建视图 CREATE VIEW 视图名 AS <select语句> 修改视图 ALTER VIEW 视图名 AS <select语句> 删除视图 IF EXISTS(select * from sysobjects where name=视图名) DROP VIEW 视图名 常用的系统存储过程 系统存储过程 说 明 Sp_databases 列出服务器上的所有数据库 Sp_helpdb 报告有关指定数据库或所有数据库的信息 Sp_renamedb 更改数据库的名称 Sp_tables 返回当前环境下可查询的对象的列表 Sp_columns 返回某个表列的信息 Sp_help 查看某个表的所有信息 Sp_helpconstraint 查看某个表的约束 Sp_helpindex 查看某个表的索引 Sp_stored_procedures 列出当前环境中的所有存储过程 Sp_password 添加或修改登录账户的密码 Sp_helptext 显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本 存储过程的优点 (1) 允许模块化程序设计 (2) 允许更快地执行 (3) 减少网络流量 (4) 可作为安全机制使用 创建存储过程 CREATE PROC 存储过程名 [ {@参数1 数据类型} [=默认值] [OUTPUT], ……, {@参数n 数据类型} [=默认值] [OUTPUT] ] AS SQL语句 修改存储过程 ALTER PROC p_selectGoods @goodsID int=1 --定义参数 AS Select * from tb_goods where ID>@goodsID 删除存储过程 IF ESISTS(select * from sysobjects where name=存储过程名) DROP PROC 存储过程名 获取指定存储过程语句 EXEC sp_helptext[@objname=]'name' 参数说明 ● sp_helptext:系统存储过程名称 ● [@objname=]'name':对象的名称,对象必须在当前数据库中存在 /*--- 创建并调用不带参数的存储过程 ---*/ CREATE PROC p_selectUser AS select * from tb_user where Status='普通用户' EXEC p_selectUser /*--- 创建并调用带输入参数的存储过程 ---*/ CREATE PROC p_selectGoods @goodsID int=1 --定义参数 默认值为1 AS Select * from tb_goods where ID=@goodsID EXEC p_selectGoods @goodsID=13 /*--- 创建并调用带输出参数的存储过程 ---*/ CREATE PROC p_getMaxID @orderID varchar(30) output AS set @orderID='创建带返回参数的存储过程' DECLARE @maxID varchar(30) EXEC p_getMaxID @maxID output --执行存储过程 SELECT @maxID --显示返回值 处理错误信息 RAISERROR:用于在SQL Server系统返回错误信息的同时返回用户指定的信息,语法: RAISERROR({msg_id|msg_str}{,severity,state})[,argument[,...n]][WITH option[,...n]] ♂ msg_id:存储于sysmessages表中的用户定义的错误信息。用户定义错误信息的错误号应大于50000 ♂ msg_str:是一条特殊消息,最多可包含400个字符 ♂ severity:用户定义的与消息关联的严重级别。从0-18之间为严重级别,19-25之间的为严重级别只能由sysadmin固定服务器角色成员使用,必须选择WITH LOG选项 ♂ state:从1-127的任意整数,表示有关错误调用状态的信息 ♂ argument:用于取代msg_str中定义的变量或取代msg_id的消息参数,替代总数不能超过20个 ♂ option:错误的自定义选项 RAISERROR (‘及格线错误,请指定0-100之间的分数,统计中断退出’,16,1) 引发系统错误,指定错误的严重级别为16,调用状态为1(默认)。错误的严重级别大于10,将自动设置系统全局变量@@ERROR为非零值,表示语名执行出错 备份数据库 BACKUP DATABASE database_name To <backup_device> [With [Differential][[,]Format | Noformat][,]{Init | Noinit}] <backup_device>::= {{Disk | Type} = 'physical_backup_device_name'} * database_name:备份的数据库名称 * To:关键字,用于指定备份设备 * <backup_device>:一个备份设备,用于存储备份数据,其中Disk表示在磁盘上存储备份数据,Tage表示在磁带设备上存储备份设备。physical_backup_device_name表示磁盘事磁带上的物理路径,通常用于指定一个备份文件 * Differential:指定数据库备份或文件备份应该与上一次完整备份后改变的数据库或文件部分保持一致 * Format:表示重写媒体头 * Noformat:表示指定媒体头不应写入所有用于该备份操作的卷中,并不要重写该备份设备 * Init:表示重写所有备份集,介保留媒体头 * Noinit:表示备份集将追加到指定的磁盘或磁带设备上,以保留现有的备份集,该选项是默认设置 还原数据库 RESTORE DATABASE database_name [From <backup_device>[,…n]] [With [File=file_number]] * RESTORE DATABASE:关键字 * database_name:要还原的数据库名称 * From:关键字,表示从哪个备份设备上还原 * < backup_device>:用于指定一个备份设备,可以是一个磁盘或磁带上的备份文件 * File=file_number:标识要还原的备份集,file_number为1表示备份媒体上的第一个备份集 附加数据库 sp_attach_db [@dbname=]'dbname',[@filename1=]'filename_n'[,...] * [@dbname=]'dbname':要附加到服务器的数据库名称,该名称必须是惟一的 * Dbname:数据类型为sysname,默认值为null * [
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服