首页 > 代码库 > 数据库学习笔记
数据库学习笔记
数据完整性
实体完整性:每个实体都必须拥有主键或其他的唯一标识列
域完整性:考虑如何限制向表中输入的值的范围,限制类型,限制格式,限制可能值的范围
引用完整性:参照完整性,在输入或删除记录时,引用完整性用于维持参照表和被参照表之间的数据一致性。Sql中引用完整性通过主键和外键约束来实现
用户自定义完整性:是用户针对某个特定关系数据库的约束条件
数据备份的类型
完全备份:完全备份是将数据库中的全部信息进行备份,它是恢复的基线。在进行完全备份时,不但备份数据库的数据文件,日志文件,而且还备份文件的存储位置信息以及数据库中的全部对象以及相关的信息
事务日志备份:是备份从上次备份之后的日志记录,而且在默认情况下,事物日志备份完成后要截断日志
差异备份:是备份从最近的完全备份之后对数据所做的修改,它以完全备份为基准点,备份完全备份之后变化了的数据文件,日志文件以及数据库中其他被修改的内容
文件及文件组备份
规范化设计
低一级范式的关系模式,通过分解方法可转化为多个高一级范式的关系模式的集合,这个过程称为规范化
第一范式:实际上对关系增加了一个约束,即关系中元组的每个属性都只能取一个值。
第二范式:实际上对关系增加了一个约束,就是关系中的每一个属性必须完全依赖于主码。
第三范式:是在第二范式的基础上对关系又增加了一个约束,就是关系中的每一个非主属性必须只依赖于主码。换句话说,就是在第二范式的基础上,消除非主属性对主码的传递函数依赖。
--查询前3行
SELECT TOP 3 ITEM_NO,item_describe FROM dbo.ITEM
--查询前3行并插入
SELECT TOP 3 ITEM_NO,item_describe INTO dbo.ITEM1 FROM dbo.ITEM
--联表查询
1,SELECT * FROM dbo.EMPLOYEES a JOIN dbo.Department b ON a.DEPT_NO=b.DepartmentID
2,SELECT a.EMP_NO,a.NAME,b.DepartmentName FROM dbo.EMPLOYEES a,dbo.Department b
WHERE a.DEPT_NO=b.DepartmentID
--IN查询
SELECT * FROM dbo.Department WHERE DepartmentID IN (‘b1300‘,‘b1200‘)
--分组查询(HAVING通常在group by子句中使用,相当于where)
SELECT SEX,COUNT(*) AS num FROM dbo.HES_EMPLOYEE GROUP BY SEX WITH cube/rollup
SELECT SEX,COUNT(*) AS num FROM dbo.HES_EMPLOYEE GROUP BY SEX HAVING SEX =‘M‘
--计算查询
SELECT number,cnumber,score FROM score COMPUTE AVG(score)
--嵌套查询
UNION合并两个查询结果集的基本规则:所有查询中的列数和列的顺序必须相同;数据类型必须兼容。嵌套查询中上层的查询块称为外层查询或父查询,下层查询块称为内层查询或子查询,sql语言中允许多层嵌套,但是在子查询中不允许出现。ORDER BY 子句,ORDER BY 子句,只能用在最外层的查询块中
SELECT DepartmentID,DepartmentName FROM dbo.Department WHERE DepartmentID IN(SELECT DEPT_NO FROM dbo.EMPLOYEES)
--插入数据
INSERT INTO dbo.Department( DepartmentID,DepartmentName,Dep_DepartmentID,WorkCalendarId,FLAG_NO)
VALUES ( ‘11‘,‘22‘,‘33‘,‘44‘,‘55‘)
--更新数据
UPDATE dbo.Department SET DepartmentName=‘11‘ WHERE DepartmentID=‘b1300‘
DELETE FROM dbo.Department WHERE DepartmentID=‘b1300‘
--创建表
CREATE TABLE [dbo].[inproject]
(
[inprojectid] [varchar](50) NOT NULL PRIMARY KEY,
[inprojectname] [varchar](50) NULL,
[inprojectnote] [varchar](100) NULL,
)
GO
--删除表
DROP TABLE dbo.inproject
--建立索引
经常被查询搜索的列(如经常在where子句中出现的列),在order by子句中使用的列,外键或主键列,值唯一的列
不适合建立索引:在查询中很少被引用的列,包含太多重复值的列,数据类型为bit,text,image等的列不能建立索引
--创建视图
CREATE VIEW [dbo].[Department]
AS
SELECT DEPT_NO AS DepartmentID, DEPT_NOTE AS DepartmentName, DEPT_ID AS Dep_DepartmentID, WorkCalendarId, FLAG_NO FROM JL_HR.dbo.HES_DEPT
GO
--删除视图
DROP VIEW dbo.Department
--存储过程
CREATE PROCEDURE [dbo].[PP_InProject_SEL]
AS
BEGIN
select * from dbo.inproject WHERE inprojectid!=‘‘order by (inprojectid+1)
END
GO
--删除存储过程
DROP PROCEDURE dbo.PP_Account_SEL
--触发器
CREATE TRIGGER [dbo].[PP_OrderStatusUPD]
ON [dbo].[PP_Order] FOR UPDATE
AS
BEGIN
DECLARE @POrderID VARCHAR(20)
DECLARE @POrderStatus VARCHAR(5)
SELECT @POrderStatus = POrderStatus,@POrderID =POrderID FROM INSERTED
UPDATE dbo.PP_ComponentProjectsDetail
SET POrderStatus = @POrderStatus
WHERE POrderID = @POrderID
END
数据库学习笔记