第4次课数据表的创建及其管理PPT推荐.ppt
《第4次课数据表的创建及其管理PPT推荐.ppt》由会员分享,可在线阅读,更多相关《第4次课数据表的创建及其管理PPT推荐.ppt(76页珍藏版)》请在冰豆网上搜索。
数据库服务器中数据库服务器中l优点:
优点:
简化管理数据库的工作;
存储过程中创建简化管理数据库的工作;
存储过程中创建的同时在服务器上进行了编译,所以执行起来比的同时在服务器上进行了编译,所以执行起来比单个单个SQL快。
快。
8Createprocedureprocedure_1firstnamenvarchar(20)asbeginselect*fromswheres_namelikefirstname+%end9触发器触发器l触发器:
触发器:
特殊的存储过程。
l问题问题1:
特殊?
l在插入、删除或修改特定表中的数据时触发执在插入、删除或修改特定表中的数据时触发执行。
行。
l问题问题2:
存在哪儿呢?
l数据库中,使用数据库中,使用SQL和和PL/SQL语句编写。
语句编写。
l问题问题3:
和存储过程有何区别呢?
10l存储过程:
由用户、应用程序或触发器显式调由用户、应用程序或触发器显式调用用l触发器:
当触发事件发生时由系统触发执行。
11Createtriggertrigger_1onstudentafterinsertasprint(成功插入一条新记录!
成功插入一条新记录!
)12对象命名规则(了解)对象命名规则(了解)l表名:
表名:
XXX相关表以相关表以r_作为前缀,作为前缀,YYY相关表相关表以以t_作为前缀。
后台独有的表以作为前缀。
后台独有的表以”_b”作后缀。
作后缀。
lr_student,t_courselr_admin_bl视图名:
视图名:
以以v_作为前缀作为前缀lv_jiaowu13l触发器:
相应的表名加上后缀,相应的表名加上后缀,Insert触发器触发器加加_i,Delete触发器加触发器加_d,Update触发器加触发器加_ulr_test_ilt_student_dl存储过程名:
存储过程名:
sp_作为前缀作为前缀lsp_Northwind_test14l注释:
注释:
l用英文用英文l尽可能详细、全面尽可能详细、全面l单行注释:
两个连字符单行注释:
两个连字符-开头开头l多行注释:
多行注释:
/*/之间的部分之间的部分15第第2节节如何创建表如何创建表l直观可视方式直观可视方式lT-SQL方式方式l在在“表表”单击右键,选择单击右键,选择“新建表新建表”16语法格式:
语法格式:
CREATETABLEdatabase_name.owner.|owner.table_name(|column_nameAScomputed_column_expression|:
=CONSTRAINTconstraint_name|PRIMARYKEY|UNIQUE,.nONfilegroup|DEFAULTTEXTIMAGE_ONfilegroup|DEFAULT:
=column_namedata_typeCOLLATE使用使用T-SQL语句创建数据表语句创建数据表课本P157列数据类型列数据类型字符型字符型lchar:
用于存储长度固定的字符串。
当用用于存储长度固定的字符串。
当用char数数据类型存储数据时,每个字符和符号占用据类型存储数据时,每个字符和符号占用1个字节个字节的存储空间。
的存储空间。
l其定义形式为:
其定义形式为:
Char(n)l其中,其中,n表示所有字符所占的存储空间,表示所有字符所占的存储空间,n的的取值为:
取值为:
18000。
若不指定。
若不指定n,系统默认值为,系统默认值为1。
若输入数据的字符串长度小于若输入数据的字符串长度小于n,则系统自动在其,则系统自动在其后添加空格来填满设定好的空间。
若输入的数据后添加空格来填满设定好的空间。
若输入的数据过长,将会截掉其超出部分。
过长,将会截掉其超出部分。
18lvarchar:
存储可变长度字符串。
存储空间随输存储可变长度字符串。
存储空间随输入数据的实际长度而变化。
入数据的实际长度而变化。
varchar(n)其中,其中,n表示所有字符所占的表示所有字符所占的最大空间最大空间,n的的取值为:
若输入数据的字符串长度小于。
若输入数据的字符串长度小于n,则空间为输入数据的实际长度。
若长度大于,则空间为输入数据的实际长度。
若长度大于n,将会截掉其超出部分。
将会截掉其超出部分。
declarestrchar(20),str1varchar(20)setstr=char字符字符setstr1=varchar字符字符printstr+1printstr1+1text用于存储无限长的字符串用于存储无限长的字符串(每行可达每行可达2GB)。
19Unicode字符串:
用于支持国际上的非英语语种。
每字符串:
每个个Unicode字符用字符用2个字节为个字节为1个存储单位。
个存储单位。
lNchar(n):
n的取值为:
的取值为:
14000lNvarchar(n):
14000lNtext:
存储大容量文本数据。
(每行可达2GB)20l数值型:
数值型:
INT、NUMERIC、MONEYlINT:
lint(-21亿到正亿到正21亿):
亿):
4个字节个字节lSMALLINT(-32768到到32767):
):
2个字节个字节lTINYINT(0255):
1个字节个字节lNUMERICl-1038到到1038l表示小数部分表示小数部分l需要同时指定整数和小数部分的大小:
需要同时指定整数和小数部分的大小:
NUMERIC(23,0)l整数部分最多整数部分最多28位,小数位数不能高于整数位数位,小数位数不能高于整数位数lMONEYlMONEY:
(-922万亿到正万亿到正922万亿)万亿)lSMALLMONEY:
-21万到正万到正21万万21lDecimal和numeric:
l两者完全相同。
l定义形式:
decimal(p,s),其中P表示可供存储的数值的总位数,默认是18.s表示小数点后的位数,默认是0.l例:
decimal(10,5),表示共有10位数,整数5位,小数5位。
22逻辑型(布尔型):
逻辑型(布尔型):
lBIT:
lbit值类型可以取值为值类型可以取值为1、0。
l当直接打开表向这一列中插入数据时需要插入当直接打开表向这一列中插入数据时需要插入true或或false。
l当用当用sql语句插入数据的时候该列就语句插入数据的时候该列就插入插入0或或1l当在查询分析其中用当在查询分析其中用select语句读取这个表中的这语句读取这个表中的这一列数据时该列数据一列数据时该列数据显示显示的是的是0或或1。
usestudentcreatetabletable_1(sdbit)gousestudentinsertintotable_1values
(1)23l日期型日期型lDATETIME:
1753年年1月月1日到日到9999年年12月月31日,精日,精确到毫秒确到毫秒lSMALLDATETIME:
1900年年1月月1日到日到2079年年6月月6日,精确到秒日,精确到秒24q什么是数据完整性呢?
什么是数据完整性呢?
存储在数据库中数据的一致性和正确性。
q根据数据完整性措施所作用的数据库对象和范根据数据完整性措施所作用的数据库对象和范围不同,数据完整性分为:
围不同,数据完整性分为:
实体完整性、参照完实体完整性、参照完整性、域完整性和用户定义完整性整性、域完整性和用户定义完整性四种四种。
为列定义约束为列定义约束25qCHECK约束约束限制输入到一列或多列的值的范围限制输入到一列或多列的值的范围qDEFAULT约束约束如果没有为列指定数据,系统将默认值赋给列如果没有为列指定数据,系统将默认值赋给列qPRIMARYKEY约束约束如果某列或多列的值能惟一标识表中的每一行,如果某列或多列的值能惟一标识表中的每一行,这样的列称为表的主键,通过它可以强制表的实这样的列称为表的主键,通过它可以强制表的实体完整性。
体完整性。
约束的类型约束的类型26qFOREIGNKEY约束约束外键外键(ForeignKey)是用于建立和加强两个表是用于建立和加强两个表(主主表与从表表与从表)的一列或多列数据之间的链接,当数据的一列或多列数据之间的链接,当数据添加、修改或删除时,通过参照完整性保证它们添加、修改或删除时,通过参照完整性保证它们之间数据的一致性。
之间数据的一致性。
定义表之间的参照完整性是先定义主表的主键,定义表之间的参照完整性是先定义主表的主键,再对从表定义外键约束再对从表定义外键约束qUNIQUE约束约束确保表中的两个数据行在非主键列中没有相同确保表中的两个数据行在非主键列中没有相同的列值的列值约束的类型约束的类型27使用管理平台对表的约束管理使用管理平台对表的约束管理lcheck约束的创建、查看、删除lDefault约束的创建、查看、删除lPrimarykey约束创建、查看、删除l外键创建、查看、删除lUnique约束的创建、查看、删除28lNULL、NOTNULLl标识字段(标识字段(indentity)每个表可以有每个表可以有1个标识字段,也只能有个标识字段,也只能有1个个标识字段。
标识字段。
CLUSTERED:
聚集索引聚集索引NONCLUSTERED:
非聚集索引:
非聚集索引29创建表实例创建表实例1:
CREATETABLENewEmployees(EmployeeIDintnotnull,Namenvarchar(20)notnull,Titlenvarchar(30),TitleOfCourtesynchar(25),BirthDaydatetime,HireDaydatetime)30创建一个主键为两个列组成的表创建一个主键为两个列组成的表CREATETABLENewEmployees1(EmployeeIDintnotnull,Namenvarchar(20)notnull,Titlenvarchar(30),TitleOfCourtesynchar(25),BirthDaydatetime,HireDaydatetime,constraintasdaprimarykey(EmployeeID,name)31CREATEtableProducts(ProductNamenvarchar(20)NOTNULLUNIQUENONCLUSTERED,ProductIDintPRIMARYKEYCLUSTERED,AmountintCHECK(Amount=1000andAmount=1andage=1000andAmount100ALTERTABLEEmployeesWITHNOCHECKADDCONSTRAINTID_checkCHECK(EmployeeID100)WITHNOCHECK避免根据现有记录验证该约束50例:
删除刚添加到例:
删除刚添加到EmployeeID的的Check约束约束ALTERTABLEEmployeesDROP