数据库应用课件示例代码.docx
- 文档编号:23855945
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:69
- 大小:195.77KB
数据库应用课件示例代码.docx
《数据库应用课件示例代码.docx》由会员分享,可在线阅读,更多相关《数据库应用课件示例代码.docx(69页珍藏版)》请在冰豆网上搜索。
数据库应用课件示例代码
订单(订单ID,订购日期,发货日期,货主名称,货主城市,运货费)
订单明细(订单ID,产品ID,单价,数量,折扣)
@订单IDint,
@产品IDint,
@单价money,
@数量smallint,
@折扣real
产品(产品ID,产品名称,类别ID,供应商ID,单价,库存量)
类别(类别ID,类别名称,说明)
@类别名称nvarchar(15),
@说明nvarchar(max)
供应商(联系人姓名,地址,电话)
客户(联系人姓名,地址,电话)
雇员通讯录(
雇员IDintPRIMARYKEY,
姓氏nvarchar(20)NOTNULL,
名字nvarchar(10)NOTNULL,
邮政编码nvarchar(10)NULL,
城市nvarchar(15)NULL,
地址nvarchar(60)NULL,
家庭电话nvarchar(24)NULL
)
usetest1
go
CREATETABLE类别(
类别IDintPRIMARYKEY,
类别名称nvarchar(15),
说明nvarchar(max)
)
CREATETABLE供应商(
供应商IDintPRIMARYKEy,
联系人姓名nvarchar(20)NULL,
地址nvarchar(60)NULL,
电话nvarchar(24)NULL)
CREATETABLE客户(
客户IDintPRIMARYKEY,
联系人姓名nvarchar(20),
地址nvarchar(60)NULL,
电话nvarchar(24)NULL)
CREATETABLE产品(
产品IDintPRIMARYKEY,
产品名称NVARCHAR(50),
类别IDintFOREIGNKEYREFERENCES类别,
供应商IDintFOREIGNKEYREFERENCES供应商,
单价MONEY,
库存量INT
)
CREATETABLE订单(
订单IDintPRIMARYKEY,
订购日期DATETIMEDEFAULTgetdate(),
发货日期DATETIMEDEFAULTgetdate(),
货主名称NVARCHAR(50),
货主城市NVARCHAR(50),
运货费MONEY
)
CREATETABLE订单明细(
订单IDint,
产品IDint,
单价money,
数量smallint,
折扣real,
constraintpk_mxprimarykey(订单ID,产品ID)
)
CREATETABLE雇员通讯录(
雇员IDintPRIMARYKEY,
姓氏nvarchar(20)NOTNULL,
名字nvarchar(10)NOTNULL,
邮政编码nvarchar(10)NULL,
城市nvarchar(15)NULL,
地址nvarchar(60)NULL,
家庭电话nvarchar(24)NULL
)
订单(订单ID,订购日期,发货日期,货主名称,货主城市,运货费)
DELETE订单
WHERE订购日期<'1996.8.1'
SELECTDISTINCT货主名称,货主城市
FROM订单
订单明细(订单ID,产品ID,单价,数量,折扣)
@订单IDint,
@产品IDint,
@单价money,
@数量smallint,
@折扣real
INSERTINTO订单明细
(折扣,数量,单价,产品ID,订单ID)
VALUES(0.8,3,26,2,10248)
产品(产品ID,产品名称,类别ID,供应商ID,单价,库存量)
SELECT产品ID,产品名称,类别ID
FROM产品
UPDATE产品
SET单价=单价*1.5
WHERE产品名称=N'牛奶'
供应商(联系人姓名,地址,电话)
客户(联系人姓名,地址,电话)
SELECT联系人姓名,地址,电话
FROM供应商
UNIONALL
SELECT联系人姓名,地址,电话
FROM客户
类别(类别名称,说明)
@类别名称nvarchar(15),
@说明nvarchar(max)
INSERTINTO类别
(类别名称,说明)
VALUES(N'图书',N'所有类型的图书')
INSERTINTO类别
(类别ID,类别名称)
VALUES(100,N'电器')
GO
CREATETABLE雇员通讯录(
雇员IDintPRIMARYKEY,
姓氏nvarchar(20)NOTNULL,
名字nvarchar(10)NOTNULL,
邮政编码nvarchar(10)NULL,
城市nvarchar(15)NULL,
地址nvarchar(60)NULL,
家庭电话nvarchar(24)NULL
)
GO
INSERTINTO雇员通讯录
SELECT雇员ID,姓氏,名字,邮政编码,城市,地址,家庭电话
FROM雇员
GO
CREATETABLE操作记录表(
编号intIDENTITY(1,1)NOTNULL,
操作表名varchar(50)NOTNULL,
操作语句varchar(2000)NOTNULL,
操作内容varchar(2000)NOTNULL,
操作时间datetimeNOTNULL
CONSTRAINTDF_操作记录表_操作时间DEFAULT(getdate()),
CONSTRAINTPK_操作记录表PRIMARYKEYCLUSTERED
(
编号ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
GO
CREATETABLE日志记录表(
编号intIDENTITY(1,1)NOTNULL,
事件varchar(5000)NULL,
所用语句varchar(5000)NULL,
操作者varchar(50)NULL,
发生时间datetimeNULL,
CONSTRAINTPK_日志记录表PRIMARYKEYCLUSTERED
(
编号ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
第2讲SQLServer2005/2008基础
--例2-1:
在MODEL数据库里创建新表
USEmodel
CREATETABLEModelTable
(
编号int,
姓名nvarchar(50)
)
GO
USEmaster
--Dropthedatabaseifitalreadyexists
IFEXISTS
(
SELECTname
FROMsys.databases
WHEREname=N'test‘
)
DROPDATABASEtest
GO
1.创建数据库
用CREATEDATABASE语句创建一个名为Ex_db的数据库,其中包括五个数据文件,三个文件组,存储在e:
\sqldb\data\目录中:
主文件组包括主数据文件Ex_db_data1,文件大小为50MB,按10%增长,最大大小不受限制,一个辅助数据文件Ex_db_data2,文件大小为10MB,按1MB增长,最大大小为50MB。
次要文件组名为Ex_dbgroup1,包括二个辅助数据文件Ex_db_data3和Ex_db_data4,文件大小均为50MB,按2MB增长,最大大小不受限制;
第三个文件组名为Ex_dbgroup2,包括一个辅助数据文件Ex_db_data5,文件大小为2MB,按15%增长,最大大小100MB;
有一个日志文件,文件大小为2MB,按1MB增长,最大大小35MB;
步骤一:
在硬盘上建立目录e:
\sqldb\data
步骤二:
打开查询分析器,输入下列语句
USEmaster
GO
CREATEDATABASEEx_db
ON
PRIMARY
/*主文件组包括主数据文件Ex_db_data1,文件大小为50MB,按10%增长,最大大小不受限制,一个辅助数据文件Ex_db_data2,文件大小为10MB,按1MB增长,最大大小为50MB。
*/
(NAME=Ex_db_data1,
FILENAME="e:
\sqldb\data\Ex_db_data1.mdf",
SIZE=50MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%),
(NAME="Ex_db_data2",
FILENAME="e:
\sqldb\data\Ex_db_data2.ndf",
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=1MB),
FILEGROUPEx_dbgroup1
--包括二个辅助数据文件Ex_db_data3和Ex_db_data4,文件大小均为50MB,按2MB增长,最大大小不受限制;
(NAME=Ex_db_data3,
FILENAME="e:
\sqldb\data\Ex_db_data3.ndf",
SIZE=50MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=5MB),
(NAME=Ex_db_data4,
FILENAME="e:
\sqldb\data\Ex_db_data4.ndf",
SIZE=50MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=5MB),
FILEGROUPEx_dbgroup2
/*第三个文件组名为Ex_dbgroup2,包括一个辅助数据文件Ex_db_data5,文件大小为2MB,按15%增长,最大大小100MB*/
(NAME=Ex_db_data5,
FILENAME="e:
\sqldb\data\Ex_db_data5.ndf",
SIZE=2MB,
MAXSIZE=100MB,
FILEGROWTH=15%)
LOGON
/*一个日志文件,文件大小为2MB,按1MB增长,最大大小35MB*/
(NAME=Ex_db_log,
FILENAME="e:
\sqldb\data\Ex_db_log.ldf",
SIZE=2MB,
MAXSIZE=35MB,
FILEGROWTH=1MB);
GO
步骤三:
刷新查询分析器中的对象浏览器,即可看到新建的数据库.
工具-->对象浏览器-->刷新
步骤四:
查看分组信息和文件信息
useEx_db
go
select*fromdbo.sysfilegroups
select*fromdbo.sysfiles
go
附:
Master数据库中的服务器级系统表及其功能:
系统表功能
•Sysaltfiles记录文件的状态和变化信息
•Sysdevices记录磁盘、磁带备份文件的相关信息
•Sysoledbusers记录连接服务器的用户名、密码等信息
•Syscacheobjects记录高速缓存的使用情况
•Syslanguages记录服务器所能识别的语言
•Sysperfinfo记录有关统计服务器性能的计数器的信息
•Syscharsets记录字符集和排列顺序的相关信息
•Syslockinfo记录各种数据封锁的信息
•Sysprocesses记录正在进行中的进程信息
•Sysconfigures记录服务器的配置信息
•Syslogins记录所有的本地账户信息
•Sysremotelogins记录所有的远程用户信息
•Syscurconfigs记录服务器当前的配置信息
•Sysmessages记录所有的系统错误和警告信息
•Sysdatabases记录所有SQLServer数据库的相关信息
•Sysservers记录所有可访问的SQLServer服务器信息
每个数据库中的系统表及其功能
系统表功能
•syscolumns数据字典
•syscomments视图、规则、默认值、触发器、约束、和存储过程的项
•sysconstraints数据库约束信息
•sysdepends对象(表、视图和过程)之间的相关性信息
•sysfilegroups数据库的文件组信息
•sysfiles数据库中的文件信息
•sysfulltextcatalogs全文目录集
•sysforeignkeys外键约束的信息
•sysindexes数据库中的索引表信息
•sysindexkeys索引中的键或列的信息
•sysmembers数据库角色成员信息
•sysobjects数据库的对象(约束、默认值、日志、规则、存储过程等)信息
•syspermissions有关对数据库内的用户、组和角色授予和拒绝的权限的信息
•sysprotects安全帐户的权限的信息
•sysreferences参照关系信息
•systypes数据类型和用户定义数据类型信息
•sysusers数据库中用户、组、角色信息
2.为数据库增加文件组
用ALTERDATABASE语句为Ex_db数据库增加一个名为Ex_dbgroup3的文件组,并为其添加二个数据文件Ex_db_data6和Ex_db_data7,文件大小均为10MB,按2MB增长,最大大小不受限制;
ALTERDATABASEEX_DB
ADDFILEGROUPEx_dbgroup3
GO
ALTERDATABASEEX_DB
ADDFILE
(NAME=Ex_db_data6,
FILENAME="e:
\sqldb\data\Ex_db_data6.ndf",
SIZE=10MB,
MAXSIZE=unlimited,
FILEGROWTH=2MB),
(NAME=Ex_db_data7,
FILENAME="e:
\sqldb\data\Ex_db_data7.ndf",
SIZE=10MB,
MAXSIZE=unlimited,
FILEGROWTH=2MB)
TOFILEGROUPEx_dbgroup3
GO
3.创建数据库表,定义完整性约束.
在数据库Ex_db中建立订货数据库表,其关系模型如下:
仓库(仓库号,城市,面积)
职工(仓库号,职工号,工资)
供应商(供应商号,供应商名,地址,电话)
订购单(职工号,供应商号,订单号,订购日期,)
约束要求如下:
仓库面积不小于500M2,每座城市只能设一个仓库;
职工最低工资为800元,最高5000元,缺省值为1200元.
订购单中的职工和供应商信息不能为空.
该关系模型的关系示意图如下:
USEEx_db
/*
(1)建立仓库表*/
CREATETABLE仓库(
仓库号CHAR(5)PRIMARYKEY,
城市CHAR(10)constraintun_cityunique,
面积INTCHECK(面积>100))
/*
(2)建立职工表*/
CREATETABLE职工(
仓库号CHAR(5)FOREIGNKEYREFERENCES仓库,
职工号CHAR(5)PRIMARYKEY,
工资INTCHECK(工资>=800AND工资<=5000)
DEFAULT1200)
/*(3)建立供应商表*/
CREATETABLE供应商(
供应商号CHAR(5)PRIMARYKEY,
供应商名CHAR(20),
地址CHAR(20),
电话INT)
/*(4)建立订购单表*/
CREATETABLE订购单(
职工号CHAR(5)NOTNULLFOREIGNKEYREFERENCES职工,
供应商号CHAR(5)NOTNULLFOREIGNKEYREFERENCES供应商,
订购单号CHAR(5)PRIMARYKEY,
订购日期DATETIMEDEFAULTgetdate())
GO
4.修改基本表
ALTERTABLE<表名>
[ADD<新列名><数据类型>[<完整性约束>][,…n]]
[DROP[[[CONSTRAINT]<约束名>]|[COLUMN<列名>]][,…n]]
[MODIFY<列名><数据类型>[,…n]];
修改订购单表,增加订购商品的品名、规格、数量、单价,金额等项,修改后的订购单关系如下
订购单(职工号,供应商号,订单号,订购日期,品名,规格,数量,单价,金额)
约束要求:
数量、单价>0,金额为计算列,由数量*单价得到。
1)问题:
a)如此修改后是否破坏了该关系模型的3NF属性?
为什么?
(提示:
结合E-R图思考)
b)如要保持关系模型的3NF属性,应如何修改关系表?
2)参考解决方案:
a)增加新实体:
商品表
b)在订购单中增加订购商品联系信息
c)建立订购信息视图(职工号,供应商号,订单号,订购日期,品名,规格,数量,单价,金额)
USEEx_db
go
CREATETABLE商品(
商品号CHAR(5)PRIMARYKEY,
商品名CHAR(20),
规格CHAR(20))
altertable订购单
add商品号CHAR(5)FOREIGNKEYREFERENCES商品,
数量intCHECK(数量>0),
单价decimalCHECK(单价>0)
go
修改后的关系模型如下:
仓库(仓库号,城市,面积)
职工(仓库号,职工号,工资)
供应商(供应商号,供应商名,地址,电话)
订购单(职工号,供应商号,订单号,订购日期,商品号,数量,单价)
商品(商品号,商品名,规格)
USEEx_db
go
alterTABLE商品
add商品名CHAR(20),规格CHAR(20)
alterTABLE商品
dropCOLUMN供商品名
go
5.建立关系图
建立仓库、职工、供应商、订购单等关系的关系图。
打开企业管理器,选择操作->新建数据库关系图,按向导引导操作。
调整图形布局,完成后存盘。
6.建立索引
/*对订购单表按职工号和供应商号降序、订购单号升序创建惟一性索引;*/
createuniqueindexidx_xh_kch
on订购单(职工号desc,供应商号desc,订购单号asc);
CREATEUNIQUECLUSTEREDINDEXnumber_ind
ON订购单(职工号,供应商号,订单号,订购日期,商品号,数量,单价)
with
pad_index,
fillfactor=20,
ignore_dup_key,
drop_existing,
statistics_norecompute
7.建立视图
建立订购信息视图(职工号,供应商号,订单号,订购日期,品名,规格,数量,单价,金额)
USEEx_db
go
createviewview_订购信息(职工号,供应商号,订单号,订购日期,商品名,规格,数量,单价,金额)
asselect订购单.职工号,订购单.供应商号,订购单.订购单号,订购单.订购日期,
商品.商品名,商品.规格,商品.数量,商品.单价,商品.数量*商品.单价
from订购单,商品
where订购单.商品号=商品.商品号
8.增加数据
向下表中输入数据:
1)仓库(仓库号,城市,面积)
2)职工(仓库号,职工号,工资)
3)供应商(供应商号,供应商名,地址,电话)
4)订购单(职工号,供应商号,订单号,订购日期,商品号,数量,单价)
5)商品(商品号,商品名,规格)
/*向仓库表中插入右表数据*/
insertinto仓库values('WH1','北京',370)
insertinto仓库values('WH2','上海',500)
insertinto仓库values('WH3','广州',200)
insertinto仓库values('WH4','武汉',400)
select*from仓库
/*向职工表中插入右表数据*/
insertinto职工values('WH2','E1',1220)
insertinto职工values('WH1','E3',1210)
insertinto职工values('WH2','E4',1250)
insertinto职工values('WH3','E6',1230)
insertinto职工values('WH1','E7',1250)
select*from职工
/*向供应商表中插入右表数据*/
insertinto供应商values('S3','振华电子厂','西安',13041)
insertinto供应商values('S4','华通电子公司','北京',13652)
insertinto供应商values('S6','607厂','郑州',13653)
insertinto供应商values('S7','爱华电子厂','北京',13654)
select*from供应商
/*向商品表中插入右表数据*/
insertinto商品values('TV','电视机','48')
insertinto商品values('PHONE','电话机','T8')
select*from商品
/*向订购单表中插入右表数据*/
insertinto订购单values('E3','S7','OR67','2003/06/23','TV',10,5000)
insertinto订购单values('E1','S4'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 课件 示例 代码