很菜的问题(50分)

  • 主题发起人 主题发起人 gobwang
  • 开始时间 开始时间
G

gobwang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问数据库中的存储过程、触发器、规则、视图是怎么回事?什么地方用?
书上写的太悬,能举例说明吗?
我用的是SQL6.5.
谢谢!
 
编辑C/S时有道INTERBASE的问题,我做了注释,书中没有编入,现在有用了:

来自:walkdan 时间:1998-11-28 下午 01:49:42 ID:93438
I can give you a brief description of what and how it works, but u'd better read manual book of interbase to understand clearly and deeply.
-----------------------------------------------------------
domain:A domain specifies a data type, and a set of column attributes and constraints.
Example : How to create a domain
CREATE DOMAIN myDataType
AS CHAR(5)
CHECK (VALUE = UPPER (VALUE));
-----------------------------------------------------------
table - A table is a data structure consisting of an unordered set of horizontal rows, each containing the same number of vertical columns.
Example : How to create a table

CREATE TABLE myTable(
userid AS INTEGER,
username AS myDataType,
address AS CHAR(40),
PRIMARY KEY (userid)
)
-----------------------------------------------------------
view - A view is a virtual table that is not physically stored in the database, but appears exactly like a "real" table.
Example: How to create a view
CREATE VIEW view_user_address (user_id) AS
SELECT address FROM myTable WHERE userid=user_id
You can use following statements to get user id 1's address
SELECT address FROM view_user_address(1)
-----------------------------------------------------------
procedure - such as function of Delphi, A internal function that can be defined in SQL and can directly be invoked in SQL statement and other system such as Delphi, VB.
Example: Create a procedure
/* delete user from myTable */
CREATE PROCEDURE delete_user(user_id AS INTEGER) AS
DELETE myTable WHERE user_id=:user_id
END;
Example : call procedure
/* call procedure delete_user to delete user 1 */
....
EXECUTE PROCEDURE delete_user(1);
...
-----------------------------------------------------------
function - A function is a User-defined functions(UDF) that created by other language. The function of Interbase is so limited that you must use UDF to perform special requests.

Example : How to defined a function
/*
* Function ADDRTONAME
* addrToName resolve the IP address to DNS address
*/
DECLARE EXTERNAL FUNCTION ADDRTONAME
CSTRING(32)
RETURNS CSTRING(254)
ENTRY_POINT "addrToName" MODULE_NAME
"/home/Project/NetCharge/bin/lib/libaddrToName.so"

/* in you C program you can write:
(char *) addrToName((char *) ip){
return = gethostbyAddress(ip);
}
-----------------------------------------------------------
generator - A generator is a mechanism that creates a unique, sequential number that is automatically inserted into a column by the database when SQL data manipulation operations such as INSERT or UPDATE occur.
Example: How to create a generator

CREATE GENERATOR userid_gen;
SET TERM ^ ;
CREATE TRIGGER CREATE_userid FOR myTable
BEFORE INSERT
POSITION 0
AS BEGIN
NEW.userid = GEN_ID(userid_gen, 1);
END
SET TERM ; ^
----------------------------------------------------------
exception - An exception is a named error message that can be raised from a trigger or a stored procedure.
Example : How to create a exception
/*Create exception unknow_userid:*/
CREATE EXCEPTION unknow_userid "Invalid user ID number ";
/*The following statement from a stored procedure raises the previously set exception when SQLCODE -530 is set, which is a violation of a FOREIGN KEY constraint.*/
. . .
WHEN SQLCODE -530 DO
EXCEPTION unknow_userid;
. . .
----------------------------------------------------------
Blob Filters - A BLOB filter is a routine that translates BLOB data from one subtype to another.
You cannot using blob Filters in your SQL statments directly.
Blob Filter is User-defined functions (UDFs) that written by other langruage such as C, C++. You could write a blob Filter routing using C, and you may use DECLARE FILTER statement to invoke to filter routing which you defined.

Example : defined a text_fileter filter which perform a special
function.
DECLARE FILTER BLOB_FORMAT
INPUT_TYPE 1 OUTPUT_TYPE -99
ENTRY_POINT "Text_filter" MODULE_NAME "myFilterModule";

编者按:这些概念多数都得到所有SQL数据库的支持,walkdan的这段文字对于C/S数据库编程的初学者很有用,他解释了一些基本概念,并给出了简单的实例,所以我把他的大意翻译为中文,供广大读者参考:
Domain(域):一个域指一种数据类型,或一组列的属性和约束。

Table(表):是包含一组未排序的行(记录),每行包含相同数量的列(字段)。

View(视图):是一张虚拟表,它并不是物理的存在于数据库中(并不包含数据),但它很像一张“真正”的表。

Procedure(常用做Stored Procedure预存储过程):它像Delphi的函数,一个用SQL语言建立的内部的函数,可在SQL语句和其它系统中(如VB和Delphi)直接调用。

Function(函数):是一个由用户用其它语言定义函数(UDF)。Interbase的函数有许多限制。你只能用UDF做专门(有限)的工作。

generator(生成器)是生成唯一、有序的数字的机制。在SQL数据库中执行INSERT、UPDATE时,对于某一列是自增的。

Exception(异常):是一个命名的错误信息,它可以被触发器或存储过程所触发。

Blob Filter:是一个例程,它可以把BLOB数据的表示类型间转换。 你不能在你的SQL语句中直接使用(建立)BLOB Filter。Blob Filter 是用一组由其它语言编写(如C,C++)的户定义函数(UDF)。你可以用C来写Blob Filter ,然后用 DECLARE FILTER 语句调用你定义的例程。
 
sorry 没换行
 
触发器好象没有讲, 我来补充一下 :).


触发器的作用和Delphi中的事件很象,

可以定义 表的三种触发器.

定义Insert触发, 当表发生Insert记录时触发该事件过程.
定义Update触发, 当表记录发生Update时触发该事件过程.
定义Delete触发, 当表记录发生Delete时触发该事件过程.
 
我来讲一讲用法吧,我先声明,我也刚看sql server, 全是书上讲的
1. 视图 使用视图可以从一个或多个表中选区特定列,限制某些列的显示,可以
增强安全性,并且可以使程序员和用户看到不复杂的表.主要是为程序员创建的.
2. 使用触发器,可以增强数据库德一致性, 在insert, update, delete 时,系统
执行一定的代码.
3. 存储过程是在服务器端执行的,使用存储过程,可以减少服务器和客户端的数据
交换,比如一个统计,如果把表返回给客户端,由客户端执行,则网络数据量大,
如果在服务器端执行,则只要返回一个数值,另外可以增强安全性.

建议你看一下<sql server 6.5 技术揭秘> <规划与建立高性能sql server 6,5
数据库>
 
hhe,sorry。遗漏了
 
各位大虾,可能是我水平太低,我是想问什么情况下用以上的东东。
如开发一个学生管理系统,里边有学生录取情况库、学生在校情况库、学生毕业
信息库、成绩库,全用学号关联,有修改、增加、删除等操作,需要作数据库
的日志,即要记录哪个用户什么时间进行过甚么操作,并记录改动前和改动后
的记录内容。
 
真的是很菜!
 
回答这个很菜的问题可以的50分,很划算的啊!
请回答吧!
:-)
 
忘了说明:
这是个“搽屁股”工程,前一拨人走了,我接着作,我觉得数据库设计有问题,
但没办法,只能硬着头皮作,各位高手请点拨一下我。
谢谢!
 
//faint
老兄找本书吧。
 
各位大虾,你们对我打击很大,以后再不来了!!!!
不回答可以,但别嘲笑人!!!!
请斑竹把我注销吧。(找不到注销的地方!)
byebye
 
找到注销地啦!
你们对一个初学的菜鸟太残酷了!
&amp;-(((((((((((((
但也要谢谢你们!
我才来几天啊!!!!!!
byebye...................
 
多人接受答案了。
 
后退
顶部