PrincipleandApplicationofDatabaseSystemAnQingTeachersCollegeDepartmentofComputer&Information数据库原理与应用PrincipleandApplicationofDatabaseSystem安庆师范学院计算机与信息学院PrincipleandApplicationofDatabaseSystem第8章创建和使用表8.1创建、修改和删除表8.2数据更新(记录的增加、修改、删除)PrincipleandApplicationofDatabaseSystem创建一个数据表时主要包括以下几个组成部分:1字段名(列名):字段名可长达128个字符。字段名可包含中文、英文字母、下划线、#号、货币符号($)及AT符号(@)。同一表中不许有重名列;2字段数据类型:;3字段的长度、精度和小数位数;4NULL/NOTNULL5其他约束:PRIMARYKEY、UNIQUE、FOREIGNKEY(主键约束、唯一约束、外键约束)8.1创建、修改和删除数据表PrincipleandApplicationofDatabaseSystem2字段数据类型当定义表时,需要为表中的每一个字段设置一个数据类型,用来指定字段所存放的数据是整数、字符串、货币或是其它类型的数据。8.1创建表、修改表、删除表PrincipleandApplicationofDatabaseSystemSQLServer的数据类型有很多种,主要分为以下8类:1.整数数据类型:依整数数值的范围大小,有BIT,INT,SMALLINT,TINYINT四种。2.精确数值类型:用来定义可带小数部分的数字,有NUMERIC和DECIMAL两种。二者相同。如:123.0、8000.563.近似浮点数值数据类型:当数值的位数太多时,可用此数据类型来取其近似值,用FLOAT和REAL两种。如:1.23E+104.日期时间数据类型:用来表示日期与时间,依时间范围与精确程度可分为DATETIME与SMALLDATETIME两种。如:1998-06-0815:30:00PrincipleandApplicationofDatabaseSystem5.字符串数据类型:用来表示字符串的字段。包括:CHAR,VARCHAR,TEXT三种,如:“数据库”6.UNICODE字符串数据类型:UNICODE是双字节文字编码标准,包括NCHAR,NVARCHAR与NTEXT三种。与字符串数据类型相类似,但UNICODE的一个字符用2字节存储,而一般字符数据用一个字节存储。7.二进制数据类型:用来定义二进制码的数据。有:BINARY,VARBINARY,IMAGE三种,通常用十六进制表示:如:OX5F3CPrincipleandApplicationofDatabaseSystem8.货币数据类型:用来定义与货币有关的数据,分为MONEY与SMALLMONEY两种,如:123.0000各种数据类型的有关规定如下表:数据类型数据内容与范围占用的字节BIT0,1,NULL实际使用1BIT,但会占用1BYTE,若一个数据中有数个BIT字段,则可共占1个BYTEPrincipleandApplicationofDatabaseSystemINT-2^31到2^31-14BYTESSMALLINT-2^15至2^15-12BYTESTINYINT0至2551BYTESNUMERIC-10^38-1至10^38-11-9位数使用5BYTES10-19位数使用9BYTES20-28位数使用13BYTES29-38位数使用17BYTESDECIMAL-10^38-1至10^38-15-17BYTES因长度而异,与NUMERIC相同FLOAT(n)-3.40E+38至3.40E+38,最多可表示24位数-1.79E+308至1.79E+308,最多可表示53位数当n在1-24之间,4BYTES当n在25-53之间,8BYTESREAL-3.40E+38到3.40E+38,最多可表示24位数4BYTESPrincipleandApplicationofDatabaseSystemDATETIME1753/1/1至9999/12/318BYTESSMALLDATETIME1900/1/1至2079/6/64BYTESCHAR1-8000个字符1个字符占1B,尾端空白字符保留VARCHAR1-8000个字符1个字符占1B,尾端空白字符删除。TEXT2^31-1个字符1个字符占2B,最大可存储2GBNCHAR1-4000个字符1个字符占2B,尾端空白字符保留NVARCHAR1-4000个字符1个字符占2B,尾端空白字符删除PrincipleandApplicationofDatabaseSystemNTEXT2^30-1个字符1个字符占2B,最大可存储2GBBINARY1-8000个字符在存储时,SQLSERVER会另外增加4B,尾端空白字符会保留VARBINARY1-8000个字符在存储时,SQLSERVER会另外增加4B,尾端空白字符会删除IMAGE2^31-1个字符最大可存储2GBMONEY-2^63-2^63-18BSMALLMONEY-2^31-2^31-14BPrincipleandApplicationofDatabaseSystem①字段的长度:指字段所能容纳的最大数据量,对不同的数据类型来说,长度对字段的意义可能有些不同。对字符串与UNICODE数据类型而言,长度代表字段所能容纳的字符的数目,因此它会限制用户所能输入的文本长度。对数值类的数据类型而言,长度则代表字段使用多少个字节来存放数字。对BINARY、VARBINARY、IMAGE数据类型而言,长度代表字段所能容纳的字节数。3字段的长度、精度和小数位数PrincipleandApplicationofDatabaseSystem②精度和小数位数精度是指数中数字的位数,包括小数点左侧的整数部分和小数点右侧的小数部分;小数位数则是指数字小数点右侧的位数。例如:数字12345.678,其精度为8,小数位数为3;所以只有数值类的数据类型才有必要指定精度和小数位数。PrincipleandApplicationofDatabaseSystem经常以如下所示的格式来表示数据类型以及它所采用的长度、精度和小数位数,其中的N代表长度,P代表精度,S表示小数位数。BINARY(N)--------BINARY(10)CHAR(N)--------CHAR(20)NUMERIC(P,[S])-------NUMERIC(8,3)但有的数据类型的精度与小数位数是固定的,对采用此类数据类型的字段而言,不需设置精度与小数位数,如:如果某字段采用INT数据类型,其长度固定是4,精度固定是10,小数位数则固定是0,这表示字段将能存放10位没有小数点的整数。存储大小则是4个字节。PrincipleandApplicationofDatabaseSystem4NULL/NOTNULL空值(NULL)就是“不知道”或“无意义”的值。PrincipleandApplicationofDatabaseSystem5其他约束:PRIMARYKEY、UNIQUE、FOREIGNKEY(主键约束、唯一约束、外键约束)(1)PRIMARYKEY:主码(2)UNIQUE:码(3)FOREIGNKEY:外码设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码基本关系R称为参照关系(ReferencingRelation)基本关系S称为被参照关系(ReferencedRelation)或目标关系(TargetRelation)PrincipleandApplicationofDatabaseSystem界面方式创建、修改和删除表PrincipleandApplicationofDatabaseSystemPrincipleandApplicationofDatabaseSystemPrincipleandApplicationofDatabaseSystemPrincipleandApplicationofDatabaseSystemPrincipleandApplicationofDatabaseSystemPrincipleandApplicationofDatabaseSystem1、创建表使用语句CREATETABLE创建数据表,其基本语法格式为:CREATETABLE表名(列定义[{,列定义|表约束}])表名是合法标识符,最多可有128个字符,如S,SC,C,不允许重名。列定义:列名数据类型[{列约束}]命令方式创建、修改和删除表PrincipleandApplicationofDatabaseSystem定义完整性约束上例为创建基本表的最简单形式,还可以对表进一步定义,如主键、空值等的设定,使数据库用户能够根据应用的需要对基本表的定义做出更为精确和详尽的规定。在SQLServer中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用’,’分隔,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:[CONSTRAINT约束名]约束类型约束名:约束不指定名称时,系统会给定一个名称。PrincipleandApplicationofDatabaseSystem约束类型:在定义完整性约束时必须指定完整性约束的类型。在SQLSERVER中可以定义五种类型的完整性约束,下面分别加以介绍:(1)NULL/NOTNULL是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用只能用于定义列约束,其语法格式如下:[CONSTRAINT约束名][NULL|NOTNULL]PrincipleandApplicationofDatabaseSystem例3.1建立一个Student表,对Sno字段进行NOTNULL约束。USEStudent_CourseCREATETABLEStudent(SnoCHAR(8)CONSTRAINTS_CONSNOTNULL,SnameVARCHAR(20),SageINT,SsexCHAR(2),SdeptVARCHAR(20));当Sno为空值时,系统给出错误信息,无NOTNULL约束时,系统缺省为NULL。其中S_CONS为指定的约束名称,当约束名称省略时,系统自动产生一个名字。如下列功能同上,只是省略约束名称。PrincipleandApplicationofDatabaseSystem(2)UNIQUE约束UNIQUE约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。UNIQUE既可用于列约束,也可用于表约束。UNIQUE用于定义列约束时,其语法格式如下:[CONSTRAINT约束名]UNIQUEPrincipleandApplicationofDatabaseSystem例3.2建立一个Student表,定义Sname为唯一键。USEStudent_CourseCREATETABLEStudent(SnoCHAR(8),SnameVARCHAR(20)CON