版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库程序设计——SQLServer2000数据库程序设计第1章SQLServer概述第2章创建和管理数据库第3章创建数据类型和表第4章实现数据完整性第5章Transact-SQL介绍第6章使用Transact-SQL查询工具第7章检索数据第8章数据分组与汇总第9章多表联接第10章子查询第11章修改数据第12章全文索引查询
第13章规划索引第14章创建和维护索引第15章实现视图第16章实现存储过程第17章实现用户定义函数第18章实现触发器第19章多服务器编程第20章优化查询性能第21章分析查询第22章管理事务和锁第3章创建数据类型和表创建数据类型创建表生成列值生成脚本推荐操作创建数据类型系统提供的数据类型创建和删除用户定义的数据类型选择数据类型的指导原则3.1创建数据类型系统提供的数据类型数字数据整型数据:存储整数小数数据:包含存储在最小有效数上的数据3.1.1系统提供的数据类型bigint占8个字节,值的范围为-263~263-1int占4个字节,值的范围为-231~231-1smallint占2个字节,值的范围为-32768~32767tinyint占1个字节,值的范围为0~255decimal[(p[,s])]p为精度,最大38;
s为小数位数,0≤s≤pnumeric[(p[,s])]在SQLServer中,等价于decimal系统提供的数据类型(续)数字数据(续)近似数字数据:表示浮点数据的近似数字货币数据:表示正的或负的货币值3.1.1系统提供的数据类型float[(n)]从-1.79E+308到1.79E+308之间的浮点数字数据;n
为用于存储科学记数法尾数的位数,同时指示其精度和存储大小,1≤n≤53real从3.40E+38到3.40E+38之间的浮点数字数据,存储大小为4字节;SQLServer中,real的同义词为float(24)
money占8个字节,值的范围为-922337203685477.5808~+922337203685477.5807smallmoney占4个字节,值的范围为-214748.3648~214748.3647系统提供的数据类型(续)日期和时间数据字符数据和Unicode字符数据3.1.1系统提供的数据类型datetime占8个字节,表示从1753年1月1日到9999年12月31日的日期smalldatetime占4个字节,表示从1900年1月1日至2079年6月6日的日期char[(n)]存储字符个数为0~8000varchar
[(n)]存储字符个数为0~8000text存储字符个数为0~2GBnchar
[(n)]存储字符个数为0~4000nvarchar[(n)]存储字符个数为0~4000ntext存储字符个数为0~1GB系统提供的数据类型(续)二进制数据其他3.1.1系统提供的数据类型binary[(n)]存储字节个数0~8000varbinary[(n)]存储字节个数0~8000image存储字节个数0~2Gbit存储位数据cursor存储对游标的引用rowversion(timestamp)时间戳sql_variant可存储除text、ntext、image、rowversion
之外的其他类型table存储函数返回结果uniqueidentifier存储GUID以及UUID创建和删除用户定义的数据类型3.1.2创建和删除用户定义的数据类型用户定义的数据类型当多个表的列中要存储同样类型的数据,且想确保这些列具有完全相同的数据类型、长度和为空性时,可使用用户定义数据类型创建用户定义的数据类型企业管理器系统存储过程
sp_addtype
{类型名},[系统数据类型][,[‘NULL’|‘NOTNULL’]][,’拥有者’]删除用户定义的数据类型
sp_droptype
{‘类型名’}
选择数据类型的指导原则若列值的长度相差很大,那么使用变长数据类型例如某列存储的是人名,地址等谨慎使用tinyint
数据类型虽然节省空间,但扩展性很小对于小数数据来说,一般使用decimal数据类型可以精确地控制精度如果行的存储量超过8000字节,使用text或者image若不大于8000字节,可使用char、varchar或者binary数据类型对于货币数据,使用money数据类型不要使用类型为float或者real的列作为主键因为它们不精确,所以不适合用于比较3.1.3选择数据类型的指导原则第3章创建数据类型和表创建数据类型创建表生成列值生成脚本推荐操作创建表SQLServer在行中组织数据的方式SQLServer组织text、ntext
和image数据的方式创建和删除表添加和删除列3.2创建表SQLServer在行中组织数据的方式行首定长数据NBVB变长数据空值块变长值块4字节数据部分数据行由行首和数据部分组成行首:四个字节,包括了数据行中每列的信息数据部分定长数据:存放定长数据类型的列的数据空值块:标示值为空的列变长值块:标示值为变长数据的列的信息以及存放位置变长数据:存放变长数据类型的列的数据3.2.1SQLServer在行中组织数据的方式SQLServer组织text、ntext
和image数据的方式Text、ntext
和image一般是存储在数据行之外的因为它们一般都比较大Text、ntext
和image的存储结构在数据行内存放一个16字节的指针,指向一个根结构根结构组成了一棵B树的根节点,B树的叶节点指向实际存放数据的数据块若数据大于32KB,在根节点和数据块之间添加中间节点将大对象数据类型的数据存储在数据行中避免了多次查找数据块位置,可提高性能设置表的textinrow选项查看表的textinrow选项:objectproperty
函数3.2.2SQLServer组织text、ntext
和image数据的方式SQLServer组织text、ntext
和image数据的方式(续)数据行text指针根结构中间节点中间节点块1块2块1块23.2.2SQLServer组织text、ntext
和image数据的方式创建表命名表和列:数据库名.拥有者.表名数据库名默认为当前的工作数据库拥有者默认为当前用户或者数据库的拥有者指定NULL或者NOTNULL
确定列值是否可为空默认按照会话或者数据库的默认值设定列的排序规则可为同一表中的各个列指定不同的排序规则计算列是一个虚的列,并不物理存放在表中当取列值的时候,SQLServer根据其他列的值和一个公
式计算出列值创建和删除表3.2.3创建和删除表分隔标识符命名规则:保留字,如table、create、select等,不能作为对象标识符不符合标识符格式规则的标识符必须使用分隔符两种分隔标识符括在括号中的标识符:用方括号分隔被引用的标识符:用双引号分隔仅当QUOTED_IDENTIFIER选项设置为ON时,被引用的标识符才有效SETQUOTED_IDENTIFIERON
删除表DROPTABLE表名[,…n]创建和删除表(续)3.2.3创建和删除表添加和删除列3.2.4添加和删除列添加列语法:ALTERTABLE表名
ADD列名
数据类型[NULL|NOTNULL]添加列时的各个选项和创建表时的列选项相同向表中添加新列时,SQLServer在列中为表中每个现有的数据行插入一个值。因此,在向表中添加列时向列添加DEFAULT定义会很有用如果新列没有DEFAULT定义,则必须指定它允许空值如果新列不允许空值,则SQLServer向其中插入空值时将返回错误添加和删除列(续)3.2.4添加和删除列删除列语法:ALTERTABLE表名DROP列名[,…n]不能删除以下列正在复制的列用在索引中的列用在CHECK、FOREIGNKEY、UNIQUE或PRIMARYKEY
约束中的列与DEFAULT定义关联或绑定到某一默认对象的列绑定到规则的列课堂练习添加列添加一个数值列添加列描述设置精度和小数位数设置列为标识列添加一个GUID列添加一个日期列添加一个字符列保存并关闭表设计器第3章创建数据类型和表创建数据类型创建表生成列值生成脚本推荐操作生成列值使用Identity属性使用NEWID函数和uniqueidentifier
数据类型3.3生成列值使用Identity属性使用Identity属性的要求每个表只能有一个标识列只用在integer、numeric和numeric(decimal)数据类型上。若用于numeric(decimal),小数位数必须为0标识列不能进行更新操作标识列不允许空值在查询中,可以用关键字IDENTITYCOL
来代表一个表中的标识列使得不必指明标识列的列名,增加了灵活性3.3.1使用Identity
属性使用Identity属性(续)检索Identity属性的信息使用函数IDENT_SEED和IDENT_INCR获得定义信息使用全局变量@@identity获得当前会话的所有作用域中的任何表最后生成的标识值使用函数SCOPE_IDENTITY返回当前会话和当前作用域中的任何表最后生成的标识值一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中使用函数IDENT_CURRENT返回任何会话和任何作用域中的特定表最后生成的标识值管理Identity属性设置IDENTITY_INSERT为ON,可在INSERT中为标识列显式地插入用户提供的值使用DBCCCHECKIDENT检查当前标识值是否越界3.3.1使用Identity属性使用NEWID函数和uniqueidentifier
数据类型作用:确保ID的全局惟一性uniqueidentifier
数据类型:存储GUIDNEWID函数:产生一个GUID两者常常和DEFAULT约束配合使用
CREATETABLECustomer(CustID
uniqueidentifierNOTNULLDEFAULTNEWID(),
CustNamechar(30)NOTNULL)3.3.2使用NEWID函数和uniqueidentifier
数据类型第3章创建数据类型和表创建数据类型创建表生成列值生成脚本推荐操作生成脚本使用企业管理器将模式生成Transact-SQL脚本维护备份脚本创建或者更新数据库开发脚本建立测试或开发环境训练新员工可以生成整个数据库的一个创建脚本文件一个或多个表的若干个创建脚本文件表、索引以及存储过程等各个对象的脚本,可以分别存放在不同脚本文件里3.4生成脚本第3章创建数据类型和表创建数据类型创建表生成列值生成脚本推荐操作推荐操作在CREATETABLE
语句中总是指定列的特性产生脚本以重建数据库和数据库对象指定适当的数据类型和大小3.5推荐操作目标创建用户定义数据类型创建表添加和删除列从数据库中生成Transact-SQL脚本练习1创建用户自定义数据类型练习2在ClassNorthwind
数据库中创建表练习3添加和删除列练习4生成Transact-SQL脚本练习5在ClassNorthwind
数据库中加载数据实验
创建数据类型和表回顾学习完本章后,将能够:
创建和删除用户定义数据类型创建和删除用户表生成列值生成脚本随堂练习1 下图所示是一个大学的管理数据库中的三张数据表的数据字典结构:
随堂练习1(续) 如果想要提高数据查询的速度和加少数据冗余,应当如何做?添加表Instructors,包含ID列、InstructorName列和OfficePhone列,将ID列加入到Courses表中将Classroom表与Course表的内容合并,删除Classroom表将Courses表中的主键约束设在CourseID和CourseTitle上删除ClassroomID列,将主键约束设在ClassNumber和ClassTime列上随堂练习2 在某个数据库中,为了产生一些查询信息,需要连接四五张数据表。假设该数据库在设计时做到了高度的规范化。在这种情况下应当如何提高数据查询的响应速度?在这四五张数据表上创建视图并在视图上创建索引降低数据库设计的规范化程度提高规范化程度在连接列上创建索引随堂练习3在为仓储公司开发的SQLServer2000数据库中,需要创建一张数据表存放了订单数据。其中OrderID必须是数据库自动生成的具备唯一性的数据列,CustomerID和CargoID分别是在另外的数据表Customers和Cargos中已有的数据中选取,OrderDate不能为空,下面四个选项中的SQL语句能实现创建功能?CREATETABLEOrders{
OrderID
intidentity(1,1)PRIMARYKEYNOTNULL,
OrderDate
datetimeNULL,
CustomerIDchar(5)NOTNULLFOREIGNKEYREFERENCESCustomers(CustomerID),
CargoID
intNOTNULLFOREIGNKEYREFERENCESCargos(CargoID),
ShipDate
datetimeNULL}随堂练习3(续)CREATETABLEOrders{
OrderID
intidentity(1,1)PRIMARYKEYNOTNULL,
OrderDate
datetimeNOTNULL,
CustomerIDchar(5)NOTNULLFOREIGNKEYREFERENCESCustomers(CustomerID),
CargoID
intNOTNULLFOREIGNKEYREFERENCESCargos(CargoID),
ShipDate
datetimeNULL}随堂练习3(续)CREATETABLEOrders{
OrderID
intidentity(1,1)PRIMARYKEYNOTNULL,
OrderDate
datetimeNO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年河南省洛阳市初中数学七年级期末下册点睛提升黑金考题附答案
- PCR混采检测专项考核试题及详细答案
- 铜冶炼吹炼工安全操作规程
- 2026年配电箱线路绝缘检测理论与实操模拟试卷及答案
- 2025-2026学年江苏省南通市初中历史七年级期末上册高分黑金试卷详细参考解析
- OUM运营管理岗位实操考核试题(含详细答案)
- 帕金森病吞咽障碍饮水安全照护规范共识
- 线上处方药学审核要点专家共识(2025版)
- 老旧厂区拆除及场地平整施工方案
- 中级刨工理论考试题库及答案
- T/CECCEDA 1-2025企业管理创新体系要求及实施指南
- 秘书专业知识讲座
- 2025年4月自考00795综合英语(二)试题
- 《热学(第二版)》杨体强编-李椿 第8章 液体学习资料
- 初中入团考试题型及答案
- 河北省房屋建筑和市政基础设施工程施工招标文件示范文本(2025版)
- 《多模式镇痛篇》课件
- 吉林大学《基础英语1》2023-2024学年第一学期期末试卷
- 【MOOC】颈肩腰腿痛中医防治-暨南大学 中国大学慕课MOOC答案
- 档案柜拆装、搬运及档案搬迁项目投标方案(技术方案)
- 建筑结构荷载规范DBJ-T 15-101-2022
评论
0/150
提交评论