- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章 表的创建和管理
主要内容
数据类型 创建表结构 增加、删除和修改表结构 插入、删除和修改数据
表的基础知识
建表的基本步骤
1 2 3 4 5
确定表中有哪些字段
确定每个字段的数据类型
给表添加各种约束 创建各表之间的关系 创建各表之间的关系
输入表中数据
按照E-R图转换规则,可以得到如下的关系模式:
项目要求
考虑到WebShop数据库中的注册会员 考虑到WebShop数据库中的注册会员 WebShop Customers)、 )、网站员工 (Customers)、网站员工 Employees)、订单(Orders) )、订单 (Employees)、订单(Orders)和商 Goods)表中都包含“日期” 品(Goods)表中都包含“日期”,为 了保证该系统中日期数据的一致性, 了保证该系统中日期数据的一致性,使 用一个别名数据类型mydate。 用一个别名数据类型mydate。 mydate
SQL Server中的数据类型
精确数值型
包括decimal和numeric两类,在使用时, 需指明精度(即全部有效位数)与小数位数。 格式:
numeric(p[,s])或decimal(p[,s]), 其中p为精度,s为小数位数
例:在numeric(9,4)表示精度为9,即总共有9 位数,其中有5位整数和4位小数;若不指定, , 则默认为numeric(18,0)
SQL Server中的数据类型
其他数据类型
说明 存储除text、ntext和image以外的其它各 sql_variant 种数据类型的数据,应用在字段、参数、变 量和函数返回值中 可以用来存储从数据库表中取出的结果数 table 据集 uniqueidentif 系统将为这种类型的数据产生惟一标识值, ier 它是一个16字节长的二进制数据 类型
SQL Server中的数据类型
Unicode字符型
类型 nchar(Unicode定长字符型) nvarchar(Unicode变长字符型) ntext(Unicode文本型) 范围(字符) 范围(字符) 1~4000 1~4000 4000~ 1 073 741 823
二进制数据
类型 Binary (定长二进制型) Varbinary (变长二进制型) Image (大二进制型) 说明 用于存储固定长度的n个字节的二进制数据, n的取值范围为1~8000 用于存储可变长度的二进制数据,n的取值范 围为1~8000 如果超过8000字节且为可变长度的二进制数 据适合存放图片文件、OLE对象等
表的管理
表的管理
表结构的修改
增加字段 删除字段 修改字段属性
表的删除
用T-SQL增加、删除和修改字段
添加新字段的语法
ALTER TABLE 表名 ADD [列定义][…n](seed,increment)]][,...n] )
删除字段的语法
ALTER TABLE 表名 DROP COLUMN [列定义][,…n]
CREATE TYPE mydate FROM varchar(10) NOT NULL DROP TYPE mydate
项目要求
在前面做好的数据模型的基础上, 在前面做好的数据模型的基础上,将其在 2005中实现 也就是在WebShop 中实现, SQL SERVER 2005中实现,也就是在WebShop 数据库中创建商品信息表、会员信息表、 数据库中创建商品信息表、会员信息表、 定单表等八个表,并对表结构进行修改。 定单表等八个表,并对表结构进行修改。建 好表结构后在向各个表中添加数据 。
1.
2. 3.
4. 5. 6. 7. 8.
会员(会员编号,会员名称,真实姓名,性别,出生日 期,身份证号,客户地址,邮政编码,手机号码,固定电话, 电子邮箱,密码,安全码,提示问题,提示答案,用户类型) 商品类别(类别编号,类别名称,类别描述) 商品(商品编号,商品名称,商品类别,商品价格,商 品折扣,商品数量,生产日期,商品图片,商品状态,商品 描述) 员工(员工编号,员工姓名,性别,出生年月,员工地 , , 址,邮政编码,手机号码,固定电话,电子邮箱) 支付方式(支付编号,支付名称,支付说明) 订单(订单编号,客户编号,订单日期,订单金额,处理 员工,送货方式,支付方式,订单状态) 订单详情(订单编号,商品编号,购买价格,购买数量) 用户(用户编号,用户名称,用户类型,用户密码)
CREATE TABLE Goods CHAR(6 (g_ID CHAR(6) NOT NULL primary key, , varchar(50), g_Name varchar(50), char(2), g_ID char(2), g_Price float, g_Discount float, g_Number smallint, g_ProduceDate datetime, g_Image varchar(100), g_Status varchar(10), varchar(1000)) g_Description varchar(1000))
alter table WebShop add g_Producer varchar(20) alter table WebShop drop column g_Producer
想一想
删除customers表 的c_birth字段;增 加c_age字段,int 类型,可空;修 改c_address字段为 varchar(50) 在WebShop数据库 中删除goods表
Transact-SQL语句创建表
创建表的语法
CREATE TABLE 表名 ( 字段名 数据类型 [NOT NULL|NULL] [ IDENTITY (seed, increment)]][,...n] )
起始值
递增量
任务
--T-SQL
在WebShop数据库中创建商品信息表(goods), g_Discount字段的默认值为“0.9”,将商品编号 设置为主键。 在WebShop数据库中创建订单详情表 (orderdetails),将编号字段设置成标识列,从 10000开始递增,每次增1,并将其设置为主键,购 买价格精度为5,小数位数1。 按以上方法依次建立其他6个表(P6)
用DELETE语句删除表中的记录
单个表的语法
DELETE [ FROM ] 表名[ WHERE <条件> ]
CREATE TABLE OrderDetails numeric(5,0) ( d_ID numeric(5,0) not null identity(10000,1) primary key, o_ID char(14) NOT NULL, g_ID char(6) NOT NULL, d_Price float NOT NULL, d_Number smallint not null)
d_ID 编号) (编号) 8 9 o_ID 订单编号) (订单编号) 20081000008 20081000008 g_ID 商品编号) (商品编号) 010001 010002 d_price (购买价 格) 2800 null d_number (购买数量 ) 26 12
insert information values(8,'20081000008 20081000008‘, 010001 010001' 2800, 26) values(8,'20081000008 , ‘010001',2800, 26) insert information(d_ID, o_ID, g_ID, d_number) '20081000008’, 010002 values(9, '20081000008 , ‘010002 ',12)
插入、删除和修改数据
SSMS插入、删除和修改数据(演示) 利用Transact-SQL语言
INSERT语句插入新记录
新数据插入的语法
INSERT [INTO] 表名 [(列表)] VALUES (列值)
从已有表中插入的语法
INSERT [INTO] 表名…SELECT
任务
向orderSQL Server中的数据类型
日期时间型
类型 datetime smalldatetime 范围 长度 1753年1月1日~9999年12月31 8B 1900年1月1日~2079年6月6日 4B
字符型
类型 Char(定长字符型) Varchar(变长字符型) Text(文本型) 范围(字符) 范围(字符) 1~8000 1~8000 8000~ 2 147 483 647
自定义数据类型
用户定义的数据类型
当多个表的列中要存储同样类型的数据, 且想确保这些列具有完全相同的数据类 型、长度和为空性时,可使用用户定义 数据类型
创建用户定义的数据类型
CREATE TYPE 类型名 { FROM 基本数据类型 [ NULL | NOT NULL ] }
任务
为WebShop数据库中的日期型列创建一个 别名数据类型mydate,它的基本数据类型 为Varchar、长度为10、非空。考虑到如果 不需要别名数据类型,现在要删除创建的 别名数据类型 mydate。
alter table customers drop column c_birth alter table customers add c_age int alter table customers alter column c_address varchar(50) drop table goods
SQL Server中的数据类型
几个概念
精度 十进制数字的总位数,不包括小数点 123.45 精度是5 小数位数 针对数值型,小数点右边数字个数。 长度 存储数据时所占用的字节数