第8章 Delphi数据库及SQL基础Word格式.docx
- 文档编号:3703327
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:30
- 大小:618.63KB
第8章 Delphi数据库及SQL基础Word格式.docx
《第8章 Delphi数据库及SQL基础Word格式.docx》由会员分享,可在线阅读,更多相关《第8章 Delphi数据库及SQL基础Word格式.docx(30页珍藏版)》请在冰点文库上搜索。
createdomainbooleanaschardefault'
check(valuein('
,'
));
2、货币数据类型money、smallmoney
由于interbase6。
0的dialect3已经实现了大型精确数据,完全可以使用numeric类型构造出货币类型。
money类型:
createdomainmoneyasnumeric(18,4);
smallmoney类型:
createdomainsmallmoneyasnumeric(9,4);
你可以根据实际情况改变长度和小数点位数使之符合你的要求。
3、其他整数类型tinyint、bigint
tinyint类型(0~255):
createdomaintinyintasintegercheck(valuebetween0and255);
bigint类型(-2的63次方~2的63次方-1):
createdomainbigintasnumeric(18,0);
4、图像类型image
通过BLOB类型的子类型构造。
createdomainimageasblobsub_type0
5、文本类型text
createdomaintextasblobsub_type1
6、用户自定义数据类型
使用域,你可以象其他关系数据库一样创建丰富多彩的功能各异的自定义数据类型。
TABLES
TABLES表
语法
CREATETABLE“表名"
(
“字段1"
INTEGERDEFAULT0NOTNULL,
"
字段2"
CHAR
(1)DEFAULT'
A'
NOTNULL,
字段3"
TIMESTAMPDEFAULT'
NOW'
字段4"
VARCHAR(254),
CONSTRAINT“PK_表名”PRIMARYKEY(“字段1”,“字段2"
)
);
创建Table注意事项
(1)字段名大写,“”的使用
(2)字符类型字段超过255最好用BOLB类型
(3)使用DEFAULT,禁止空值NULL。
原因:
a防止空值扩散:
一个SQL计算表达式里,如果有一个值为空,那么结果就一定为空!
b.空值不能作为索引字段和orderby排序。
(4)相关连表的主键,外键。
字段的一致性:
例:
seabillsMblno和AccbillsItemsMblno
VIEWS视图
可以被看成是虚拟表或存储查询
语法:
CREATEVIEW视图名(
字段1,
字段2,
字段3,
字段4,
字段5,
字段6)
AS
Select字段1,字段2,字段3,字段4,字段5,字段6
from物理表
where条件
视图的作用
1、将用户限定在表中的特定行上。
2、将多个表中的列联接起来,使它们看起来象一个表。
3、聚合信息而非提供详细信息。
TRIGGERS触发器
定义:
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。
作用
触发器经常用于加强数据的完整性约束和业务规则等。
触发器中可以使用大多数T-SQL语句,但如下一些语句是不能在触发器中使用的。
CREATE语句,如:
CREATEDATABASE、CREATETABLE、CREATEINDEX等。
ALTER语句,如:
ALTERDATABASE、ALTERTABLE、ALTERINDEX等。
DROP语句,如:
DROPDATABASE、DROPTABLE、DROPINDEX等。
注意事项:
1、NEW.代表新记录OLD.代表旧记录
2、正确写法:
BEFORE_INSERT用NEW
AFTERDELETE用OLD
3、执行顺序POSITION从小到大,0最先执行
例子:
CREATEORALTERTRIGGERI_CORPS_AFTER_INSERTFORCORPS
ACTIVEAFTERINSERTPOSITION0
BEGIN
InsertintoAccbillTypeobjsvalues(1,11,3,New.Corpid);
InsertintoAccbillTypeobjsvalues(1,23,3,New.Corpid);
END
PROCEDURES存储过程
存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。
它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
优点:
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列SQL语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
GENERATORS生成子(发生器)
生成子也称为序列,它可以很容易的实现自动增加的字段。
它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
语法例子
CREATESEQUENCEGEN_TASKID;
ALTERSEQUENCEGEN_TASKIDRESTARTWITH1;
INDICES索引
普通索引
唯一索引UniqueIndex
语法及例子
CREATEINDEX索引名称ON表名(索引字段1;
索引字段2);
CREATEINDEXI_WF_TASKLIST_ACTIDONWF_TASKLIST(SYSID,ACTID,ENTITYID);
8.1.3建表规范
a)命名规则
i.表名命名
命名要本着简洁清晰原则,应用英文缩写通用易懂,表名长度不要超过20个字符,定义表名必须为大写。
如:
主表:
***BILLS
费用表:
***BILLSITEMS
主从表:
***ITEMS
其它从表:
***XXXITEMS
ii.字段定义
命名要本着简洁清晰原则,可用多英文缩写拼接,长度不要超过20个字符。
这字段名要大写,字段类型与长度要根据实际存储数据准确规划,定义默认值与不为空。
所有表必须设定主键。
例:
INTEGER类型要以‘ID’结尾,如SYSID;
编码类字段要以‘NO’结尾,如ITEMNO;
时间类要以‘TIME’结尾,日期类以‘DATE’结尾,如AUDITTIME、LOADDATE;
主键以关键唯一字段定义。
b)必要字段
i.主表必要字段
主表作为单据的主体,往往起着承上启下的作用,也可能多模块共用。
除记录清楚本单信息外,还要把上游、下游、状态、活动等全部信息记录完整。
SYSIDINTEGERDEFAULT0NOTNULL,
ENTITYIDINTEGERDEFAULT0NOTNULL,
ACCYEARINTEGERDEFAULT0NOTNULL,
ACCMONTHSMALLINTDEFAULT0NOTNULL,
BILLDEPTIDINTEGERDEFAULT0NOTNULL,
BILLKINDCHAR
(2)DEFAULT'
DD'
BILLNOVARCHAR(20)DEFAULT'
'
PBILLNOVARCHAR(20)DEFAULT'
BILLTYPEIDSMALLINTDEFAULT0NOTNULL,
BILLDATETIMESTAMPDEFAULT'
ACTIDINTEGERDEFAULT0NOTNULL,
BILLSTATUSINTEGERDEFAULT0NOTNULL,
POSTDATETIMESTAMP,/*完成时间*/
REFNOVARCHAR(20)DEFAULT'
NOTNULL,/*参考号*/
SRCACTIDINTEGERDEFAULT0NOTNULL,
SRCENTITYIDINTEGERDEFAULT0NOTNULL,
SRCLINENOINTEGERDEFAULT0NOTNULL,
ORGACTIDINTEGERDEFAULT0NOTNULL,
ORGENTITYIDINTEGERDEFAULT0NOTNULL,
ORGLINENOINTEGERDEFAULT0NOTNULL,
OPIDINTEGERDEFAULT0NOTNULL,
OPNAMEVARCHAR(20)DEFAULT'
NOTNULL,
ii.从表必要字段
从表在作业过程中可能会导入导出、多模块共用,也要记录清上下游信息。
LINENOINTEGERDEFAULT0NOTNULL,
SRCLINENOINTEGERDEFAULT0NOTNULL,
SRCQTYDOUBLEPRECISIONDEFAULT0NOTNULL,//导入数量
ORGACTIDINTEGERDEFAULT0NOTNULL,
ORGLINENOINTEGERDEFAULT0NOTNULL,
iii.标准费用明细表
费用标准明细表适用于代理业务收费,其中包含了增值税的操作,同时配套增值税操作代码详见附件《》。
CREATETABLE***BILLSITEMS(
SYSIDINTEGERDEFAULT0NOTNULL,
ENTITYIDINTEGERDEFAULT0NOTNULL,
LINENOINTEGERDEFAULT0NOTNULL,
CORPIDINTEGERDEFAULT0NOTNULL,
ITEMIDINTEGERDEFAULT0NOTNULL,
DCCHAR
(1)DEFAULT'
D'
QTYDOUBLEPRECISIONDEFAULT0NOTNULL,
TAXRATEDOUBLEPRECISIONDEFAULT0NOTNULL,
SURRATEDOUBLEPRECISIONDEFAULT0NOTNULL,
IFTAXCHAR
(1)DEFAULT'
F'
PRICEDOUBLEPRECISIONDEFAULT0NOTNULL,
FCYNOCHAR(8)DEFAULT'
FCYEXRATEDOUBLEPRECISIONDEFAULT0NOTNULL,
AMTDOUBLEPRECISIONDEFAULT0NOTNULL,
FCYAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
TAXAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
TAXFCYAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
NETAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
NETFCYAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
STLMODEIDINTEGERDEFAULT0NOTNULL,
STLDATETIMESTAMP,
STLFCYDOUBLEPRECISIONDEFAULT0NOTNULL,
STLAMTDOUBLEPRECISIONDEFAULT0NOTNULL,
STATUSCHAR
(1)DEFAULT'
N'
IFACCCHAR
(1)DEFAULT'
IFSTEPCHAR
(1)DEFAULT'
ISPUBLICCHAR
(1)DEFAULT'
T'
IFSHARECHAR
(1)DEFAULT'
USERIDINTEGERDEFAULT0NOTNULL,
REMARKSVARCHAR(254)DEFAULT'
NOTNULL
ALTERTABLE***BILLSITEMSADDCONSTRAINTPK_***BILLSITEMSPRIMARYKEY(SYSID,ENTITYID,LINENO);
c)主键与触发器
i.主键
所有填加的数据库表要加主键,主键以唯一编码为准。
ii.触发器
在删除主单同时,删除对应单据向下的明细项目。
CREATETRIGGERT_SALBILLS_AFTER_DELETEFOR***BILLS
ACTIVEAFTERDELETEPOSITION0
DELETEFROM***BILLSITEMS
WHERESYSID=OLD.SYSIDANDENTITYID=OLD.ENTITYID;
END;
8.2数据库的备份还原
8.2.1创建数据库
打开ibexport,Database-CreateDatabase,如下图所示.
输入所有内容之后,点击ok.
注册就行了。
8.2.2数据库备份
打开ibexport,使用帐户SYSDBA,密码MASTERKEY连接数据库。
现在Services——BackupDatabase
如下图所示
选择按钮【StartBackup】,开始备份数据库。
稍等片刻,完成会提示用时多少,已经备份完成。
8.2.3数据库还原
现在Services——RestoreDatabase
如下图所示.
选择按钮【StartRestore】,开始备份数据库。
8.3Linux环境数据库操作
//8.4基础
2、数据库还原
3、
4、说明:
创建新表
createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)
根据已有的表创建新表:
A:
createtabletab_newliketab_old(使用旧表创建新表)
B:
createtabletab_newasselectcol1,col2…fromtab_olddefinitiononly
5、说明:
删除新表
droptabletabname
6、说明:
增加一个列
Altertabletabnameaddcolumncoltype
注:
列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:
添加主键:
Altertabletabnameaddprimarykey(col)
说明:
删除主键:
Altertabletabnamedropprimarykey(col)
8、说明:
创建索引:
create[unique]indexidxnameontabname(col….)
删除索引:
dropindexidxname
索引是不可更改的,想更改必须删除重新建。
9、说明:
创建视图:
createviewviewnameasselectstatement
删除视图:
dropviewviewname
10、说明:
几个简单的基本的sql语句
选择:
select*fromtable1where
范围
插入:
insertintotable1(field1,field2)values(value1,value2)
删除:
deletefromtable1where
更新:
updatetable1setfield1=value1where
查找:
select*fromtable1wherefield1like’%value1%’---like的语法很精妙,查资料!
排序:
select*fromtable1orderbyfield1,field2[desc]
总数:
selectcountastotalcountfromtable1
求和:
selectsum(field1)assumvaluefromtable1
平均:
selectavg(field1)asavgvaluefromtable1
最大:
selectmax(field1)asmaxvaluefromtable1
最小:
selectmin(field1)asminvaluefromtable1
11、说明:
几个高级查询运算词
UNION
运算符
运算符通过组合其他两个结果表(例如
TABLE1
和
TABLE2)并消去表中任何重复行而派生出一个结果表。
当
ALL
随
一起使用时(即
UNIONALL),不消除重复行。
两种情况下,派生表的每一行不是来自
就是来自
TABLE2。
EXCEPT
运算符通过包括所有在
中但不在
TABLE2
中的行并消除所有重复行而派生出一个结果表。
一起使用时
(EXCEPTALL),不消除重复行。
C:
INTERSECT
运算符
运算符通过只包括
中都有的行并消除所有重复行而派生出一个结果表。
(INTERSECTALL),不消除重复行。
使用运算词的几个查询结果行必须是一致的。
12、说明:
使用外连接
A、left
(outer)
join:
左外连接(左连接):
结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL:
selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c
right
join:
右外连接(右连接):
结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
full/cross
全外连接:
不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12、分组:
Groupby:
一张表,一旦分组完成后,查询后只能得到组相关的信息。
组相关的信息:
(统计信息)
count,sum,max,min,avg
分组的标准)
在SQLServer中分组时:
不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;
13、对数据库进行操作:
分离数据库:
sp_detach_db;
附加数据库:
sp_attach_db
后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb'
old_name'
'
new_name'
//8.5提升
1、说明:
复制表(只复
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 Delphi数据库及SQL基础 Delphi 数据库 SQL 基础
![提示](https://static.bingdoc.com/images/bang_tan.gif)