返回顶部
首页 > 资讯 > 数据库 >SQLserver 数据库的索引,存储过程和触发器的使用与概念
  • 196
分享到

SQLserver 数据库的索引,存储过程和触发器的使用与概念

2024-04-02 19:04:59 196人浏览 八月长安
摘要

前言:索引,存储过程和触发器可以对一些高级的数据处理和查询,从而更好的实现对数据库的操作,诊断和优化。一.索引 索引提供指针以指向存储在表中指定的数据值,数据库的索引,就好比一本书中的目录类似,无

前言:索引,存储过程和触发器可以对一些高级的数据处理和查询,从而更好的实现对数据库的操作,诊断和优化


一.索引

 索引提供指针以指向存储在表中指定的数据值,数据库的索引,就好比一本书中的目录类似,无需阅读整个一本书,利用目录就可以快速的查找所需信息。在数据库中,索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据。通过使用索引,可以大大提高数据库的查询速度

 (1) 索引分类

   1.唯一索引

   唯一索引不允许两行具有相同索引值

   2.主键索引

   在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型

   3.聚集索引

   在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同

   4.非聚集索引

   非聚集索引建立在索引页上,在查询数据时可以从索引中找到记录存放位置

   5.复合索引

   在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引

 

 (2)创建和使用索引


1、首先创建一个数据量大的表,名称为“学生表”,分别有三列,学号,姓名和班级,如下图所示,学号为自动编号,班级为默认值“一班”。

SQLserver 数据库的索引,存储过程和触发器的使用与概念


2、向表中插入大量数据,数据越多,验证索引的效果越好。

使用语句完成:While 1>0  Insert into t388(姓名)  values(‘小明’)

上面语句是一个死循环,除非强制结束,如果1大于0就会一直向表中插入姓名

如下图所示:


SQLserver 数据库的索引,存储过程和触发器的使用与概念

3,等待5分钟左右,打开表的属性,查看表的行数,当前为1,如下图所示:713179


SQLserver 数据库的索引,存储过程和触发器的使用与概念


4,使用语句查询第600000行的数据,Select * from t388 Where 学号=600000

SQLserver 数据库的索引,存储过程和触发器的使用与概念


5、打开“SQL Server profiler ”工具进行跟踪,如下图所示:

打开“sql server profiler ”工具查看跟踪的信息,发现查询时间很长,cpu工作了188毫秒,reads:读了6614次,writes:写了9次,duration:总计花费2977毫秒完成查询。

SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念


6,开始创建索引(唯一索引)

SQLserver 数据库的索引,存储过程和触发器的使用与概念

SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念


点击确定,完成创建,再次使用语句查询第600020行的数据,Select * from t388 Where 学号=600020

SQLserver 数据库的索引,存储过程和触发器的使用与概念

这是唯一索引创建。主键索引不用创建,把列设置为表的主键,自动生成主键索引

SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念



二,存储类型

  

   (1) 存储过程是sql语句和控制语句的预编译集合,保存在数据库中,可由应用程序执行,而且允许用户声明变量,逻辑控制语句和强大的编程功能

    使用存储过程的好处:

        1.模块化程序设计

      2.执行速度快,效率高

      3.减少网络流量

      4.具有很好的安全

   (2)系统存储过程

      sql-server提供了很多的系统存储过程,他们是一组预编译的T-SQL语句,系统存储过程提供了管理数据库和更新表的机制,并充当从系统表中检索信        息的快捷方式。

           常用的系统存储过程

           sp_database 列出服务器上的所有数据库的信息,包括数据库名和数据大小

           sp_helpdb 报告有关指定数据库或所有数据库的信息

           sp_renamedb 更改数据库的名称

           sp_tables 返回当前环境下可查询的表和视图的信息

           sp_columns 返回某个表和视图的列信息,包括列的数据类型和长度等

           sp_help 查看某个数据库对象的信息:如列名,主键,约束,外键,索引等

           sp_helpconstraint 查看某个表的索引

           sp_stored_procedures 显示存储过程的列表

           sp_passWord 添加或修改登录账户的密码

           sp_helptext 显示默认值,未加密的存储过程,用户定义的存储过程,触发器或视图的实际文本

 

            使用T-SQL语句调用执行存储过程的语法如下:

             EXEC 存储过程名 [参数值]

                 其中EXEC时execute的简写


    (3)使用系统存储过程,以查询数据库大小的 sp_database 为例,以上的都是以下格式来执行

    SQLserver 数据库的索引,存储过程和触发器的使用与概念

 (4)扩展存储过程

    语法:EXEC xp_cmdshell DOS命令 {no_output}


    若xp_cmdshell作为服务器安全配置的一部分而被关闭,请用以下语句开启:

       

   

   exec sp_configure 'show advanced options',1  --显示高级配置信息

   Go 

   reconfigure   --重新配置

   go

    exec sp_configure 'xp_cmdshell',1

   go

   reconfigure   -- 重新配置

   go

SQLserver 数据库的索引,存储过程和触发器的使用与概念


以在C盘创建一个bene的文件夹为例

exec xp_cmdshell 'mkdir c:\bene',no_output

 SQLserver 数据库的索引,存储过程和触发器的使用与概念

SQLserver 数据库的索引,存储过程和触发器的使用与概念

 

(5)自定义存储过程

          在sql-server中,用于创建处处过程的sql语句为create procedure,所有的存储过程都存放在当前数据库中。一个完整的存储过程都包含以下三        部分

          1.输入参数和输出参数

          2.在存储过程中执行的T-SQL语句

          3.存储过程的返回值

   自定义存储过程

   以编写求网络管理平均分存储过程为例

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE name = 'usp_GetAverageResult') 

DROP PROCEDURE usp_GetAverageResult

GO

CREATE PROCEDURE usp_GetAverageResult

AS

DECLARE @subJectID nvarchar(4)

SELECT @subJectID=subJectID FROM dbo.TSubject WHERE subJectName='网络管理'

DECLARE @avg decimal (18,2)

SELECT @avg=avg(mark) from dbo.TScore where subJectID=@subJectID

PRINT '网络管理专业平均分是:'+CONVERT(VARCHAR(5),@avg)

go

SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念

SQLserver 数据库的索引,存储过程和触发器的使用与概念

上述代码主要理解创建存储过程的语法,其中涉及的变量及判断语句等无需深究,只要能根据语句理解就可,有兴趣可以查看资料自学



三,触发器

  触发器是一种特殊的存储过程,当表中的数据发生更新时将自动调用,以响应INSERT,UPDATE,DELETE语句

  (1)触发器类型
        INSERT触发器:当向表中插入数据是触发,自动执行所定义语句

        UPDATE触发器:当更新表中某列,多列时触发,自动执行所定义语句

        DELETE触发器:当删除表时触发,自动执行所定义语句


 (2)创建触发器

       使用T-SQL语句创建

语句:CREATE TRIGGER [触发器名称]

      ON [需要创建触发器的表]

     FOR ([DELETE,INSERT,UPDATE)

     AS SQL 语句

      以当有人试图在表中更改数据时,将提示一条消息并阻止操作为例,以下语句可实现:

create trigger reminder --定义触发器名称为“reminder”

on dbo.TScore --在哪个表执行,此例在“dbo.Tscore”表中

for UPDATE --指定在表中执行那些数据修改语句时激活触发器,可以指定多个,用,分隔。此例为“UPDATE”

as

print '禁止修改,请联系DBA'   --触发时显示的文字

ROLLBACK TRANSACTION

GO

SQLserver 数据库的索引,存储过程和触发器的使用与概念SQLserver 数据库的索引,存储过程和触发器的使用与概念



您可能感兴趣的文档:

--结束END--

本文标题: SQLserver 数据库的索引,存储过程和触发器的使用与概念

本文链接: https://lsjlt.com/news/41848.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQLserver 数据库的索引,存储过程和触发器的使用与概念
    前言:索引,存储过程和触发器可以对一些高级的数据处理和查询,从而更好的实现对数据库的操作,诊断和优化。一.索引 索引提供指针以指向存储在表中指定的数据值,数据库的索引,就好比一本书中的目录类似,无...
    99+
    2024-04-02
  • 数据库的索引、视图、触发器、存储过程、游标等概念的理解
    索引、视图、游标、存储过程和触发器的理解索引、视图、游标、存储过程和触发器的理解 1、索引       1-1、索引的概述   &nbs...
    99+
    2024-04-02
  • 索引、视图、存储过程和触发器
    1、索引:数据排序的方法,快速查询数据分类:唯一索引:不允许有相同值主键索引:自动创建的主键对应的索引,命令方式不可删聚集索引:物理顺序与索引顺序一致,只能创建一个非聚集索引:物理顺序与索引顺序不一致,可创...
    99+
    2024-04-02
  • SQLServer中函数、存储过程与触发器的用法
    一、函数 函数分为(1)系统函数,(2)自定义函数。 其中自定义函数又可以分为(1)标量值函数(返回单个值),(2)表值函数(返回查询结果) 本文主要介绍自定义函数的使用。 (1)编...
    99+
    2024-04-02
  • 数据库 --- 索引、触发器、事务(存储引擎)
    一、数据库  -----   按照数据结构来组织、存储和管理数据的仓库  主要特点:实现数据共享;减少数据的冗余度;数据的独立性;数据实现集中控制;数据一致性和可维护性,以确保...
    99+
    2024-04-02
  • 数据库之——索引、触发器、事务(存储引擎)
    一. 数据库    数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。其主要特点有如下几个方面:实现数据共享数据共享包含所有用户可同时存取数据库中的数据,也包括用户可...
    99+
    2024-04-02
  • MySQL数据库实验之 触发器和存储过程
    目录一、实验目的二、实验要求三、实现内容及步骤1、创建一个不带参数的简单存储过程2、创建一个带输入参数的存储过程3、创建一个带输入输出参数的存储过程4、触发器的创建与使用四、实验总结观前提示:本篇内容为mysql数据库实...
    99+
    2022-06-20
    MySQL数据库实验 MySQL触发器 MySQL存储过程
  • MySQL数据库的触发器和存储过程实例分析
    这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。一、实验目的掌握某主流D...
    99+
    2023-07-02
  • 对比索引、视图、游标、存储过程和触发器
    1、索引        1-1、索引的概述                 我们把一个表中的一列或者多列和列中元素所在表中记录的物理地址组合成一个新的表。这个表的记录大致为列的内容和该列所在记录的物理地址。        1-2、...
    99+
    2020-01-22
    对比索引 视图 游标 存储过程和触发器
  • MySQL数据库中的键和索引的概念
    本篇内容主要讲解“MySQL数据库中的键和索引的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库中的键和索引的概念”吧!1.键的概念键:数据库中的键(key)又称为关键字,是关...
    99+
    2023-06-02
  • SQL Server如何查询数据库所有存储过程、触发器、索引信息
    这篇文章主要介绍SQL Server如何查询数据库所有存储过程、触发器、索引信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1. 查询所有存储过程select...
    99+
    2024-04-02
  • MySQL存储过程的概念与用法实例
    目录概念特性存储过程通常有以下优点格式创建存储过程定义变量局部变量用户变量系统变量存储过程存储过程传参-in存储过程传参-out存储过程传参-inout流程控制流程控制-判断流程控制...
    99+
    2024-04-02
  • 数据库中存储过程和触发器有哪些区别
    这篇文章主要讲解了“数据库中存储过程和触发器有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中存储过程和触发器有哪些区别”吧!什么是触发器?触...
    99+
    2024-04-02
  • MySQL数据库的视图、存储过程和存储引擎
    本文主要介绍了MySQL数据库的视图和MySQL数据库的存储过程,还介绍了MySQL的两个存储引擎MyISAM和InnoDB,希望大家通过这篇文章有所收获。一、前言MySQL 视图(View)是一种虚拟存在...
    99+
    2024-04-02
  • 数据库优化之创建存储过程、触发器
        存储过程可加快查询的执行速度,提高访问数据的速度,帮助实现模块化编程,保存一致性,提高安全性。触发器是在对表进行插入、更新、删除操作时自动执行的存储过程,通常用于强制业务规则。一...
    99+
    2024-04-02
  • 如何在Oracle数据库中使用PL/SQL编写存储过程和触发器
    在Oracle数据库中使用PL/SQL编写存储过程和触发器,可以按照以下步骤进行操作: 使用SQL Developer或者其他O...
    99+
    2024-03-02
    Oracle
  • 数据库中的触发器,索引 ,事务
    一.触发器 触发器是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行update、insert或delete语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的参数。 creat&n...
    99+
    2024-04-02
  • 如何在MySQL元数据库里查看索引,约束,触发器,存储过程和事件的相关信息
    -- 查看主键约束 SELECT * FROM information_schema.`TABLE_CONSTRAINTS`; -- 查看外键约束 SELECT * FROM inf...
    99+
    2024-04-02
  • MySQL的存储函数与存储过程相关概念与具体实例详解
    目录MySQL存储过程与存储函数的相关概念存储过程存储函数存储函数与存储过程的对比存储过程和函数的查看修改删除MySQL存储过程与存储函数的相关概念 存储函数和存储过程的主要区别: ...
    99+
    2023-03-01
    MySQL的存储函数与存储过程 MySQL存储过程 MySQL存储函数
  • 在MySQL中如何使用存储过程和触发器
    在MySQL中,可以使用存储过程和触发器来实现一些特定的功能。下面分别介绍如何创建和使用存储过程和触发器: 存储过程: 存储过程...
    99+
    2024-04-09
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作