实验2数据库表数据库表(Table)是包含数据库中所有数据的数据库对象,创建数据库之后,即可创建数据表。【知识要点】1.数据库表数据库表(Table)是数据库内最重要的对象,它最主要的功能是存储数据内容。创建数据库之后,即可创建数据表。数据库表存储在数据库文件中,并可以将其存放在指定的文件组上。数据库表是列的集合,每一列都是不可再分的。数据在表中是按行和列的格式组织排列的,每行代表唯一的一条记录,而每列代表记录中的一个数据项。每一列具有相同的域,即有相同的数据类型。SQLServer的每个数据库最多可存储20亿个表,每个表可以有1024列。表的行数及总大小仅受可用存储空间的限制。每行最多可以存储8,060字节。2.数据表结构•每个数据表至少包含下面内容:•数据表名称;•数据表中所包含列的列名称,同一表中的列名称不能相同;•每列的数据类型;•字符数据类型列的长度(字符个数);•每个列的取值是否可以为空(NULL)。实验2数据库表3.列的数据类型类型名称说明整型bigint存储大小为8个字节。从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。int存储大小为4个字节。从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。smallint存储大小为2个字节。从-2^15(-32,768)到2^15-1(32,767)的整型数据。tinyint存储大小为1字节。从0到255的整型数据。位bit整型数据1、0或NULL。Microsoft®SQLServer™优化用于bit列的存储。如果一个表中有不多于8个的bit列,这些列将作为一个字节存储。如果表中有9到16个bit列,这些列将作为两个字节存储。更多列的情况依此类推。数值型decimal[(p[,s])]带定点精度和小数位数的numeric数据类型。P(精度):指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从1到最大精度之间的值。最大精度为38。S(小数位数):指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从0到p之间的值。默认小数位数是0,因而0=s=p。最大存储大小基于精度而变化。Numeric[(p[,s])实验2数据库表货币型money存储大小为8个字节。货币数据值介于–2^63(-922,337,203,685,477.5808)与2^63–1(+922,337,203,685,477.5807)之间,精确到货币单位的千分之十。Smallmoney货币数据值存储大小为4个字节。介于–214,748.3648与+214.748,3647之间,精确到货币单位的千分之十。近似数字型float用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。Real字符串型char长度为n个字节的固定长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为n个字节。varchar长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。text存储大量的可变长度的非Unicode文本数据。其最大长度为231-1(2,147,483,647)个字符。实验2数据库表Unicode字符串nchar(n)存储包含n个字符的固定长度Unicode字符数据。n的值必须介于1与4,000之间。存储大小为n字节的两倍。nvarchar(n)存储n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。ntext存储大量的可变长度的Unicode文本数据。可变长度Unicode数据的最大长度为230-1(1,073,741,823)个字符。存储大小是所输入字符个数的两倍(以字节为单位)。二进制字符串Binary(n)存储固定长度的n个字节二进制数据。n必须从1到8,000。存储空间大小为n+4字节。varbinary(n)存储n个字节变长二进制数据。n必须从1到8,000。存储空间大小为实际输入数据长度+4个字节,而不是n个字节。输入的数据长度可能为0字节。image用来存储大量的二进制数据,通常用来存储图形。可变长度二进制数据介于0与231-1(2,147,483,647)字节之间。其它类型timestamp这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp一般用作给表行加版本戳的机制。存储大小为8字节。uniqueidentifier全局唯一标识符(GUID)。实验2数据库表4.对数据表的操作•创建数据表之后,可进行下面操作:•修改表结构•删除数据表•查询数据表中的数据•更新(插入、修改、删除)数据表中的数据实验2数据库表【实验目的】•掌握数据表的创建;•掌握数据表结构的修改;•掌握数据表的删除。实验2.1创建数据库表【实验目的】•掌握使用企业管理器创建数据库表;•掌握使用SQL命令创建数据库表;•掌握向数据库表中录入数据。【实验内容】1.创建数据库表。表名分别如下:教师表:T,学生表:S,课程表:C,选课表:SC,授课表:TC实验2数据库表2.各数据表的结构为:字段名数据类型长度(字节数)是否可NULL中文描述TNOchar2NOTNULL教师号TNchar8NOTNULL教师姓名SEXchar2NULL性别AGEtinyint1NULL年龄PROFchar10NULL职称SALsmallint2NULL工资COMMsmallint2NULL岗位津贴DEPTchar10NULL系名表1教师表T表2学生表S字段名数据类型长度(字节数)是否可NULL中文描述SNOchar2NOTNULL学生号SNchar8NOTNULL学生姓名SEXchar2NULL性别AGEtinyint1NULL年龄DEPTchar10NULL系名实验2数据库表表3课程表C字段名数据类型长度(字节数)是否可NULL中文描述CNOchar2NOTNULL课程号CNchar10NOTNULL课程名CTtinyint1NULL课时数表4选课表SC字段名数据类型长度(字节数)是否可NULL中文描述SNOchar2NOTNULL学号CNOchar2NOTNULL课程号SCOREtinyint1NULL成绩表5授课表TC字段名数据类型长度(字节数)是否可NULL中文描述TNOchar2NOTNULL教师号CNOchar2NOTNULL课程号实验2数据库表【实验步骤】1.用企业管理器创建数据表T设计表T实验2数据库表2.用企业管理器创建数据表S3.用SQL语句创建数据表C在查询窗口中输入下列SQL语句,创建数据表C:CREATETABLEC(CNOCHAR(2),CNCHAR(10),CTTINYINT)查询分析器中对象浏览器中的表C实验2数据库表4.用SQL语句创建数据表SCSQL语句为:CREATETABLESC(SNOCHAR(2),CNOCHAR(2))5.用SQL语句创建数据表TCSQL语句为:CREATETABLETC(TNOCHAR(2),CNOCHAR(2))实验2数据库表实验2.2修改数据库表结构【实验目的】•掌握用企业管理器修改已有数据表的结构;•掌握用SQL修改已有数据表的结构。【实验内容】1.向已有数据表S中追加学籍列追加的列定义如下:列名:NATIVE数据类型:CHAR长度:40允许空否:NOTNULL2.修改已有表S中的列定义把表S中的NATIVE列定义修改成下列定义:列名:NATIVE数据类型:CHAR长度:16允许空否:NULL3.删除表S中的NATIVE列实验2数据库表【实验步骤】1.用企业管理器向数据表S中添加列NATIVE在表设计器中追加列定义实验2数据库表修改数据表2.用企业管理器修改数据表S中的列NATIVE删除数据表中的列3.用企业管理器删除数据表S中的列NATIVE实验2数据库表4.用SQL向数据表S中添加列NATIVE、修改列NATIVE向S表中添加新列。新列定义为,列名:NATIVE,数据类型:NCHAR,长度:40,NULL。在查询窗口中输入下面SQL语句:ALTERTABLESADDNATIVENCHAR(40)NULL修改表S中的列名为NATIVE的定义。新定义为,列名:NATIVE,数据类型:CHAR,长度:16,NULL。在新的查询窗口中,输入下面SQL语句:ALTERTABLESALTERCOLUMNNATIVECHAR(16)NULL实验2数据库表实验2.3删除数据库表【实验目的】•掌握在企业管理器中删除数据表;•掌握用SQL删除数据表。【实验内容】•在企业管理器中删除数据表test1;•用SQL删除数据表test2。【实验步骤】1.在企业管理器中删除数据表test1。删除表test12.用SQL删除数据表test2。在查询窗口输入下面SQL语句:USEjxskDROPTABLEtest2GO实验2习题【实验题】•实验内容与要求1.创建数据库jiaoxuedb。2.在数据库jiaoxuedb中创建表Student、Teacher、Course、SC、TC,它们的表数据如图2-12~图2-16所示。学生表student教师表Teacher实验2习题选课表SC课程表Course教师任课表TC实验2习题3.给学生表Student增加两个字段,一个是长度为2000个字符的字段简历Resume,另一个是长度为20个字符的籍贯Native。4.把学生表中的籍贯列改为40个字符。5.删除学生表中的简历字段。6.删除表TC。【思考题】1.一个数据库中的数据表可以有相同的表名吗?同一个数据表中,列名称可以相同吗?2.用ALTERTABLE语句可以修改已有的列名或或删除已有的列吗?3.解释语句USEjxsk的含义?给出与此语句功能相同的操作?4.有下列定义:createtabletest(item1char(10),item2nchar(10),item3nchar(20),item4nvarchar(20))(1)item1与item2所占磁盘空间各是多少字节,是否相同?(2)Item3与item4所占磁盘空间各是多少字节,是否相同?(3)如果在item1对应的数据项中,输入字符串“12345678901”,可以吗?为什么?