触发器是一种特殊的存储过程,类似于其它编程语言中的事件函数,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。
创建触发器用 CREATE TRIGGER
CREATE TRIGGER 触发器名称
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS
T-SQL 语句
注意:触发器名称是不加引号的。
如下是联机丛书上的一个示例,当在 titles 表上更改记录时,发送邮件通知 MaryM。
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE, DELETE
AS
EXEC master..xp_sendmail 'MaryM',
'Don''t forget to print a report for the distributors.'
存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程的基本结构如下:
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字;
下面列举一个具体的例子来说明这个问题。
首先在数据库中创建一个测试表:
1
2
create table yjf_test(username varchar2,userid number,telphone varchar2(11));
commit;
创建完后,开始编写存储过程:
1
2
3
4
5
6
7
8
9
10
11
create or replace procedure yjfproc
(
username in varchar2,
userid in number,
telphone in varchar2
) is
begin
insert into yjf_test(username,userid,telphone)
values(username,userid,telphone);
commit;
end;
这里说明一下,这里我通过传递参数,向yjf_test表中插入一个数据,这样在调用存储过程的时候,直接传入参数即可,而不用在存储过程里面具体化某一个记录。
然后就是调用这个存储过程:
1
exec yjfproc('yjf',123456,'13500000000')
这个时候,会发现在yjf_test表中存在一个插入的记录,表示存储过程调用成功。
什么是索引
与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。
索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。
索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。
语法:
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*实例*/
USE 库名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除
--创建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引
ON TEST(TNAME) --为TEST表的TNAME字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO
SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查询
总结:
1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
2.分类:
唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
3.创建索引的标准:用于频繁搜索的列;用于对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长
视图其实就是一个预先执行的查询语句。
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
SELECT * FROM [Current Product List]
在程序设计的时候必须先了解视图的优缺点,这样可以扬长避短,视图具有如下的一些优点:
● 简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。
● 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。
● 逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
视图也存在一些缺点,主要如下。
● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。
● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。
分享到:
相关推荐
数据库课程的详细介绍。...它详细介绍了数据库的相关知识, 介绍了数据库的相关知识 数据库课程的详细介绍。希望可以帮助一部分人下载。 它详细介绍了数据库的相关知识, 介绍了数据库的相关知识
- **XML数据库**(2000年代):随着互联网的普及,XML成为一种重要的数据交换格式,因此出现了专门用于存储和查询XML文档的数据库。 - **NoSQL数据库**(2010年代至今):针对传统关系型数据库在大数据和高并发场景...
【数据库基础知识】数据库是计算机科学中的重要组成部分,用于存储、管理和检索数据的系统。它不仅仅是单纯的数据集合,更是一个能够提供高效访问、管理和更新数据的工具。本章将深入介绍数据库的相关概念,以及数据...
数据库系统概述是信息技术领域中的核心概念,主要关注如何有效地存储、...这些知识对于理解和应用数据库技术至关重要,特别是在今天这个大数据和云计算的时代,数据库系统已经成为企业和组织不可或缺的信息基础设施。
T6财务软件是用友公司推出的一款面向中小企业的普及型ERP(企业资源规划)系统,其数据库维护是系统稳定运行的关键环节。在处理T6财务软件的问题或错误数据时,首先需要具备一定的数据库基础知识和经验,能够对问题...
随后出现了层次结构模型和网状结构模型数据库,但它们的复杂性和使用难度限制了其普及。关系结构模型的出现,即以二维表格形式存储数据,极大地简化了数据库的使用,这便是我们现在最常使用的RDBMS(关系型数据库...
- 云数据库服务的普及。 3. **基本概念**: - 实体:现实世界中的事物或概念; - 属性:实体的特性或特征; - 关系:实体之间的联系; - 数据模型:描述数据结构、数据操作和数据约束的集合。 ### 数据库管理...
然而,由于内存占用和性能考虑,随着ADO的普及,BDE逐渐被取代。 ADO技术由微软提出,基于OLE DB,设计用于处理广泛的商业数据源,不仅限于关系型数据库。ADO的核心组件包括Connection、Command和Recordset。...
【数据库基础知识】 数据库是计算机科学中的重要组成部分,用于存储、管理和检索数据。它不仅包含数据本身,还涉及数据的组织、存储方式以及访问这些数据的方法。本章将介绍数据库的基本概念,包括数据管理的发展...
数据库技术的发展历程悠久,从早期的层次型和网状型数据库,到关系型数据库的普及,再到如今的NoSQL数据库和云计算环境下的分布式数据库,数据库一直在适应着信息化社会的需求变化。 在学习数据库的过程中,我们...
本复习资料基于《数据库原理》第二版,由潘永浩和杨克戎主编,电子科技大学出版社出版,旨在帮助学生全面掌握数据库系统的基础知识。 首先,我们需要了解数据库管理的三个发展阶段:人工管理阶段、文件系统阶段和...
《基于大语言模型和多向量数据库的知识库问答系统白盒化解决方案》 在当今的信息时代,知识库问答系统已经成为企业、学术机构以及广大用户获取信息的重要途径。本解决方案聚焦于利用大语言模型和多向量数据库技术,...
"基于python知识图谱的百科知识问答平台源码数据库论文.docx" 本文主要介绍了基于Python知识图谱的百科知识问答平台的设计与实现。该平台的主要功能是通过构建领域内的知识图谱,来实现百科知识搜索的问答平台。...
3. **电子数据处理阶段**:1946年后,随着电子计算机的普及,数据管理进入了电子时代,数据库系统应运而生,极大地提高了数据处理的速度和准确性。 **基本概念** 1. **数据库技术**:研究数据库的设计、实现、管理...
《网络数据库技术》目的是通过本课程的学习使学生能了解网络数据库的基本知识、基本原理和基本技术,学会网络数据库应用系统的设计方法和步骤。 本课程的学习任务是,掌握网络数据库系统一些基础知识和基本要点,...
总结来说,BORLAND公司在数据库领域的贡献不仅体现在其创新的产品上,还在于它推动了数据库开发工具的普及,使得更多开发者能够轻松地构建和管理数据库应用。尽管随着时间的推移,BORLAND的业务重心有所转移,但其在...
- **现代数据库(20世纪90年代至今)**: 随着互联网的普及,出现了更多种类的数据库系统,如NoSQL数据库、云数据库等。 #### 二、数据库管理系统(DBMS) 数据库管理系统(DBMS)是一种位于用户与操作系统之间的...