数据库与程序设计.docx
- 文档编号:8903789
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:22.41KB
数据库与程序设计.docx
《数据库与程序设计.docx》由会员分享,可在线阅读,更多相关《数据库与程序设计.docx(23页珍藏版)》请在冰豆网上搜索。
数据库与程序设计
数据库与程序设计
数据库操作
一、创建数据库(page81)【重点程序page84】
创建数据库采用createdatabase语句,用来定义数据库名,确定数据库文件和数据库日志文件的属性(名称、位置、大小、最大容量、增长特性等)。
CREATEDATABASE数据库名
ONPRIMARY
(NAME=文件名,
FILENAME='系统路径+文件名.ndf',
SIZE=文件大小,
MAXSIZE=文件的最大容量,
FILEGROWTH=每次增容时增加的容量大小)
LOGON
(NAME=文件名,
FILENAME='系统路径+文件名.ldf',
SIZE=文件大小,
MAXSIZE=文件的最大容量,
FILEGROWTH=每次增容时增加的容量大小)
GO
2、修改数据库(page85)
1.增加数据库文件
ALTERDATABASE数据库名
ADDFILE
(NAME=文件名,
FILENAME='系统路径+文件名.ndf',
SIZE=文件大小,
MAXSIZE=文件的最大容量,
FILEGROWTH=每次增容时增加的容量大小)
GO
2.增加辅助日志文件
ALTERDATABASE数据库名
ADDLOGFILE
(NAME=文件名,
FILENAME='系统路径+文件名.ldf',
SIZE=文件大小,
MAXSIZE=文件的最大容量,
FILEGROWTH=每次增容时增加的容量大小)
GO
3.删除数据库文件
ALTERDATABASE数据库名
REMOVEFILE文件名
GO
4.修改文件
USE数据库名
GO
ALTERDATABASE数据库名
MODIFYFILE
(……修改的程序语言……)
三、重命名数据库(page89)
ALTERDATABASE数据库名
MODIFYNAME=修改后的数据库名
或者
EXECsp_renamedb'数据库名','修改后的数据库名'
4、删除数据库(page89)
数据表基本操作
1、创建数据表(page90)【重点程序page94】
1.创建数据表
USE数据库名
GO
CREATETABLE表名
(列名+数据类型+是否空值+约束)
2.查看结构
EXECsp_help表名
2、修改数据表(page96)
1.修改表中某列
USE数据库名
GO
ALTERTABLE表名
ALTERCOLUMN修改的内容
2.添加一列
USE数据库名
GO
ALTERTABLE表名
ADD添加的内容
3.删除某一列
USE数据库名
GO
ALTERTABLE表名
DROPCOLUMN列名
3、删除数据表(page98)
USE数据库名
GO
DROPTABLE表名
数据表的基本操作
1、添加记录(page99)【重点程序page100】
1.插入一条记录
USE数据库名
GO
INSERTINTO表名
VALUES(插入的数值)
2.插入子查询的结果
USE数据库
GO
INSERTINTO添加的位置
SELECT选择的数据
2、修改记录(page102)
USE数据库名
GO
UPDATE表名
SET列名+用于取代相应属性的表达式值
WHERE修改条件
3、删除记录(page103)
USE数据库名
GO
DELETEFROM表名
WHERE指定删除条件
数据库完整性的实现
1、数据完整性(page104)
数据完整性是指数据的正确性、有效性和相容性,目的是为了防止错误的数据进入数据库。
1.实体完整性,也称行完整性。
要求表中的所有行有一个唯一的标识符,这种标识符一般称为主键值。
主键值能否被修改或表中的数据是否能够被全部删除都要依赖于主键表和其他表之间要求的完整性。
2.参照完整性。
参照完整性是保证参照表(外键所在的表)与被参照表(主键所在的表)中数据的一致性。
如果被参照表中的一行被一个外键参考,那么这一行数据便不能直接被删除,用户也不能直接修改主键值。
3.域完整性,也称为列完整性。
指定一个数据集对某一个列是否有效和确定是否允许空值。
域完整性通常是经过使用有效性检查来实现的,并且还可以通过限制数据的类型、格式或者可能取值范围来实现。
二、约束(page105)
1.PRIMARYKEY约束(page106)
主键约束作为表的一个属性,可以唯一标识表中的记录。
在输入数据时,主键列不能为空且不能有重复值。
每个表都应该有且只有一个主键。
(1)建立PRIMARYKEY约束
USE数据库名
GO
ALTERTABLE表名
ADDCONSTRAINTPK_列名PRIMARYKEY(列名)
(2)删除PRIMARYKEY约束
USE数据库名
GO
ALTERTABLE表名
DROPCONSTRAINTPK_列名
2.FOREIGNKEY约束(page107)
外键约束标识表之间的关系,可以定义为一个列或多个列,这些列参照同一个表或另外的一个表中的PRIMARYKEY约束或UNIQUE约束列。
(1)建立FOREIGNKEY约束
USE数据库名
GO
ALTERTABLE表名
ADDCONSTRAINTFK_表名_列名
FOREIGNKEY(列名)REFERENCES(参照的列名)
(2)删除FOREIGNKEY约束
USE数据库名
GO
ALTERTABLE表名
DROPCONSTRAINTFK_表名_列名
3.UNIQUE约束
唯一值约束规定表中某一列或多个列不能有相同的两行两行以上的数据存在。
这种约束用来强制实体完整性。
(1)建立UNIQUE约束
USE数据库名
GO
ALTERTABLE表名
ADDCONSTRAINTIX_表名_列名
UNIQUE(列名)
(2)删除UNIQUE约束
USE数据库名
GO
ALTERTABLE表名
DROPCONSTRAINTIX_表名_列名
4.CHECK约束
条件约束通过指定的逻辑表达式来限制列的取值范围,只有当逻辑表达式为真时,才满足列的取值要求。
干约束用来加强域完整性。
可以为每列指定多个CHECK约束。
(1)建立CHECK约束
USE数据库名
GO
ALTERTABLE表名
ADDCONSTRAINTCK_表名_列名CHECK(约束条件)
(2)删除CHECK约束
USE数据库名
GO
ALTERTABLE表名
DROPCONSTRAINTCK_表名_列名
三、默认(page112)
1.创建DEFAULT约束
USE数据库名
GO
ALTERTABLE表名
ADDCONSTRAINTDF_表名_列名
DEFAULT默认值FOR列名
2.使用默认值
USE数据库名
GO
CREATEDEFAULTDF_列名AS默认值
3.绑定默认值
USE数据库名
GO
EXECsp_bindefault'DF_列名','表名.列名'
4.删除默认值
USE数据库名
GO
DROPDEFAULTDF_表名_列名
四、规则(page114)
1.创建规则并绑定到列
USE数据库名
GO
CREATERULE要创建的规则名称AS指定规则的条件
GO
sp_bindrule'R_列名','表名.列名'
2.删除规则
USE数据库名
GO
DROPRULER_列名
索引
1、索引的分类(page117)
1.按索引的顺序和表中记录的物理存储顺序是否相同。
(1)聚集索引
(2)非聚集索引
2.按索引值是否唯一
(1)唯一索引
(2)非唯一索引
2、创建索引(page117)【重点程序page119】
USE数据库名
GO
CREATE[UNIQUE][CLUSTERED][NONCLUSTERED]
INDEXIX_表名_列名
ON表名(列名)
3、管理索引(page120)
1.查看索引
USE数据库名
GO
EXECsp_helpindex表名
2.重命名索引
USE数据库名
GO
EXECsp_rename'表名.IX_表名_列名',
'IX_表名_列名','index'
3.删除索引
USE数据库名
GO
DROPINDEX表名.IX_表名_列名
数据管理
1、基本查询(page127)【重点程序page128】
各参数说明如下:
ALL:
返回结果集中的所有行,是系统默认值。
DISTINCT:
指明结果集中如果有值相同的行,则指显示其中的一行。
TOP
指明仅返回结果集中的前n行。
PERCENT
指明仅返回结果集中的前百分之n行。
1.查询指定的数据列
(1)查询全部列
USE数据库名
GO
SELECT*FROM表名
(2)查询指定的列
USE数据库名
GO
SELECT列名,列名FROM表名
(3)消除取值重复的行
USE数据库名
GO
SELECTDISTINCT列名FROM表名
2.改变列标题
USE数据库名
GO
SELECT'列标题'=列名,列名AS列标题FROM表名
3.数据运算
USE数据库名
GO
SELECT列名<运算符>AS'列标题'
FROM表名
2、条件查询(page130)
查询条件
谓词
比较
=,>,<,>=,<=,!
=,<>,!
>,!
<
确定范围
BETWEENAND,NOTBETWEENAND
确定集合
IN,NOTIN
字符匹配
LIKE,NOTLIKE
空值
ISNULL,ISNOTNULL
多重条件
AND,OR,NOT
(1)比较大小
USE数据库名
GO
SELECT列名FROM表名
WHERE条件范围
(2)限定范围
USE数据库名
GO
SELECT列名FROM表名
WHERE列名[NOT]BETWEEN数值AND数值
(3)限定集合
USE数据库名
GO
SELECT列名FROM表名
WHERE列名[NOT]IN(集合条件)
(4)字符匹配
USE数据库名
GO
SELECT列名FROM表名
WHERE列名[NOT]LIKE'<匹配串>'
(5)空值
USE数据库名
GO
SELECT列名FROM表名
WHERE列名IS[NOT]NULL
(6)多重条件
USE数据库名
GO
SELECT列名FROM表名
WHERE条件[AND][OR][NOT]条件
3、排序(page134)
1.查询结果排序
USE数据库名
GO
SELECT列名FROM表名
WHERE条件
ORDERBY列名,列名[ASC][DESC]
2.选取查询结果的前几行数据
USE数据库名
GO
SELECTTOP
WHERE条件
ORDERBY列名,列名[ASC][DESC]
4、查询输出(page135)
1.存储到基本表中
USE数据库名
GO
SELECT列名INTO基本表FROM表名
WHERE条件
2.存储到临时表中
USE数据库名
GO
SELECT列名INTO#临时表FROM表名
WHERE条件
5、聚合查询(page136)
1.SELECT子句中的聚合
在SELECT子句中可以使用聚合函数进行运算,运算结果作为新列出现在结果集中。
在聚合运算的表达式中可以包括列名、常量以及由算式运算符连接起来的函数。
函数
功能
COUNT([DISTINCT|ALL]*)
统计记录个数
COUNT([DISTINCT|ALL]<列名>)
统计一列中值的个数
SUM([DISTINCT|ALL]<列名>)
计算一列值的总和(此列必须是数值型)
AVG([DISTINCT|ALL]<列名>)
计算一列值的平均值(此列必须是数值型)
MAX([DISTINCT|ALL]<列名>)
求一列值中的最大值
MIN([DISTINCT|ALL]<列名>)
求一列值中的最小值
USE数据库名
GO
SELECT函数(列名)AS'列标题'FROM表名
2.COMPUTE子句中的集合
在SELECT子句中出现聚合函数时,结果集中的数据全是聚合值,没有明细值。
COMPUTE子句不仅可以使用聚合函数计算聚合值,而且可以依然保持原有的明细值;新的聚合值作为附加的汇总列出现在结果集的最后。
需要注意的是,COMPUTE子句中不允许使用DISTINCT关键字。
6、分组查询(page138)
GROUPBY子句对查询结果按照一定条件进行分组,分组子句通常与SQLServer提供的聚合函数一起使用。
对查询结果分组的目的是为了细化聚合函数的作用对象,如果未对查询结果分组,则聚合函数将作用于整个查询结果,分组后聚合函数将作用于每一个组,每一个组都有一个函数值。
SELECT语句后的输出列只能是聚合函数和分组列。
1.使用GROUPBY子句
SELECT列名FROM表名
GROUPBY列名
2.使用WITH选项
(1)使用CUBE操作符
SELECT列名FROM表名
GROUPBY列名WITHCUBE
(2)使用ROLLUP操作符
SELECT列名FROM表名
GROUPBY列名WITHROLLUP
3.使用HAVING子句
SELECT列名FROM表名
GROUPBY列名
HAVING子句指定筛选条件
7、连接查询(page140)
一个查询同时涉及两个或者两个以上的表,并且每一个表中的数据往往作为一个单独的列出现在结果中,则需要用到连接查询。
连接查询操作类型:
①INNER:
内连接,指定返回两个表中所有匹配的行,此项是默认值。
②LEFT[OUTER]:
左外连接,返回连接查询左边的表中的相应记录,在右表中对应于左表中无记录的部分用NULL表示。
③RIGHT[OUTER]:
右外连接,返回连接查询两个表中所有的相应记录,在左表中对应于右表中无记录的部分用NULL表示。
④FULL[OUTER]:
完全外联结,返回连接查询两个表中所有的相应记录,对应于无记录的部分用NULL表示。
⑤JOIN:
指示制定的连接操作应在制定的表源或视图之间执行。
1.交叉连接
(1)用谓词表示交叉连接
SELECT表名.列名,表名.列名FROM表名,表名
(2)用JOIN关键字表示交叉连接
SELECT表名.列名,表名.列名FROM表名CROSSJOIN表名
2.内连接
①用谓词表示等值连接
SELECT表名.列名,表名.列名FROM表名,表名
WHERE表名.列名=表名.列名
②用JOIN关键字表示等值连接
SELECT表名.列名,表名.列名
FROM表名INNERJOIN表名ON表名.列名=表名.列名
3.外连接
①左外连接
SELECT表名.列名,表名.列名
FROM表名LEFTOUTERJOIN表名ON表名.列名=表名.列名
WHERE条件
②右外连接
SELECT表名.列名,表名.列名
FROM表名RIGHTOUTERJOIN表名ON表名.列名=表名.列名
WHERE条件
8、嵌套查询(page145)
1.单值嵌套查询
子查询的返回结果是一个值的嵌套查询称为单值嵌套查询。
当能确切知道子查询返回的是单值时,可以用>,<,=,>=,<=,!
=,<>等比较运算符将一个表达式的值与子查询返回的值进行比较运算。
SELECT列名,列名FROM表名
WHERE列名='查询名称'AND列名[比较运算符](SELECT函数(列名)FROM表名WHERE列名='查询名称')
2.多值嵌套查询
子查询的返回结果是一列值的嵌套查询。
(1)使用[NOT]IN运算符
SELECT列名,列名,列名
FROM表名
WHERE列名NOTIN(SELECT列名FROM表名WHERE条件)
(2)利用谓词ANY或ALL
SELECT列名,列名,列名
FROM表名
WHERE列名[比较运算符]ALL/ANY(SELECT列名FROM表名WHERE条件)
3.使用谓词EXISTS的子查询
SELECT列名FROM表名
WHEREEXISTS(SELECT列名FROM表名WHERE条件)
9、组合查询(page148)
两个查询语句之间可以进行集合运算。
其中UNION运算符表示并集运算,EXCEPT运算符表示差运算,INTERSECT表示交运算。
1.并运算(UNION[ALL]用来将多个查询结果集合并起来,如果不加ALL,系统自动去掉重复的记录,加上ALL系统会自动保留全部记录。
)
SELECT列名,列名FROM表名WHERE条件
UNION
SELECT列名,列名FROM表名WHERE条件
2.差运算(从左查询中返回右查询中没有找到的非重复值)
SELECT列名,列名FROM表名WHERE条件
EXCEPT
SELECT列名,列名FROM表名WHERE条件
3.交运算(返回左右两个查询语句都包含的所有非重复值)
SELECT列名,列名FROM表名WHERE条件
INTERSECT
SELECT列名,列名FROM表名WHERE条件
视图及其应用
1、视图的概述(page150)
1.视图的含义
视图一经定义之后,就可以像基本表一样被查询、添加、修改和删除。
当对通过视图看到的数据进行添加、修改和删除时,相应的基本表中的数据也会发生变化;同时,当基本表的数据变化时,也会自动反映到视图之中。
2.使用视图的优点
①数据保密
②简化用户权限的管理
③集中用户使用的数据
④简化查询操作
⑤保证数据的逻辑独立性
2、创建视图(page151)【重点程序page154】
USE数据库名
GO
CREATEVIEWVW_视图名称(列标题,列标题,列标题)
AS
SELECT列名,列名,列名
FROM表名
WHERE条件
GO
3、维护视图(page154)【重点程序page155】
1.查看视图信息
USE数据库名
GO
EXECsp_helptextVW_视图名称
GO
2.修改视图的定义
ALTERVIEWVW_视图名称
AS
SELECT列名AS列标题,列名AS列标题,列名AS列标题
FROM表名
WHERE条件
3.视图的重命名
USE数据库名
GO
EXECsp_renameVW_视图名称,VW_修改后的视图名称
4.视图的删除
USE数据库名
GO
DROPVIEWVW_视图名称
4、视图数据操作(page157)
1.查询视图数据
SELECT列名
FROMVW_视图名称
WHERE条件
2.更新视图数据
①插入数据
USE数据库名
GO
INSERTINTOVW_视图名称
VALUES('数据值','数据值','数据值','数据值')
②修改数据
UES数据库名
GO
UPDATEVW_视图名称
SET修改的语句
WHERE条件
③删除数据
USE数据库名
GO
DELETEFROMVW_视图名称
WHERE条件
存储过程
1、创建存储过程(page163)【重点程序page165】
1.不适用参数,创建存储过程
USE数据库名
GO
CREATERROC存储过程名称
AS
SELECT表名.列名,表名.列名,表名.列名
FROM表名,表名,表名
WHERE条件
GO
2.执行存储过程
USE数据库名
GO
EXEC存储过程名称
GO
3.使用参数,创建存储过程
USE数据库名
GO
CREATEPROC存储过程名称(@变量数据类型,@变量数据类型)
AS
SELECT表名.列名,表名.列名,表名.列名
FROM表名,表名,表名
WHERE含有变量的条件
GO
4.执行含有参数的存储过程
USE数据库名
GO
EXEC存储过程名称'变量值','变量值'
5.使用默认参数,建立存储过程
USE数据库名
GO
CREATERROC存储过程名称(@变量数据类型='变量值',@变量数据类型='变量值')
AS
SELECT表名.列名,表名.列名,表名.列名
FROM表名,表名,表名
WHERE含有变量的条件
GO
6.执行使用默认参数的存储过程
USE数据库名
GO
EXEC存储过程名称
GO
7.使用返回参数
【重点程序page167】
2、存储过程管理(page168)
1.查看存储过程的源代码
USE数据库名
GO
EXECsp_helptext存储过程名称
GO
2.修改存储过程
USE数据库名
GO
ALTERPROC存储过程名称
AS
SELECT表名.列名,表名.列名,表名.列名
FROM表名,表名,表名
WHERE条件
GO
3.重命名存储过程
USE数据库名
GO
EXECsp_rename存储过程名称,修改后的存储过程名称
4.删除存储过程
USE数据库名
GO
DROPPROC存储过程名称
GO
触发器
1、触发器概述(page170-page172)
2、创建触发器(page172)【重点程序page174】
USE数据库名
GO
CREATETRIGGER触发器名称ON表名
FOR[INSERT],[UPDATE],[DELETE]
AS
程序语句
GO
3、触发器的管理
1.查看触发器的定义信息
USE数据库名
GO
EXECsp_helptext'触发器名称'
GO
2.修改触发器
USE数据库名
GO
ALTERTRIGGER触发器名称ON表名
FOR[INSERT],[UPDATE],[DELETE]
AS
程序语句
GO
3.删除触发器
USE数据库名
GO
DROPTRIGGER触发器名称
GO
4.禁止和启用触发器
USE数据库名
GO
ALTERTABLE表名
[ENABLE]|[DISABLE]TRIGGER触发器名称
GO
自定义函数
1、自定义函数概述(page177)
自定义函数的优点:
1.允许模块化设计
2.执行速度更快
3.减少网络流量
2、自定义函数创建与管理(page17
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序设计