数据存放在视图所引用的原始数据表中
一个或多个原始数据表,根据不同用户的不同需求,可以创建不同的视图
① 筛选表中的行
② 防止未经许可的用户访问敏感数据
③ 降低数据库的复杂程度
④ 将多个物理数据库抽象为一个逻辑数据库
选择对应的数据库,视图右键‘新建视图’,选择要结合的表,保存生成视图
语法格式:
CREAT VIEW 视图名称
AS
SELECT 语句
案例:
CREATE VIEW StudentScore
AS
SELECT Student.SId,Student.Sname,class1,class2,class3 FROM Student JOIN(SELECT t1.SId,class1,class2,class3 FROM
(SELECT SId , score as class1 FROM Sc WHERE CId=3001)t1,
(SELECT SId, score as class2 FROM Sc WHERE CId=3002)t2,
(SELECT SId, score AS class3 FROM Sc WHERE CId=3003)t3 WHERE t1.SId=t2.SId AND t2.SId=t3.SId)r
ON Student.SId=r.SId
查看:
SELECT*FROM StudentScore
语法格式:
IF EXISTE (SELECT * FROM sysobjects WHERE name='视图名')
DROP VIEW 视图名
1.预先存储号的SQL程序
2.保存在SQL Server中(与视图一样)
3.通过名称和参数进行执行
①在数据库服务器端直接调用(DBA)
②供应程序调用(软件开发工程师)
4.可包含数据操纵语句,变量,逻辑控制语句
系统存储过程,自定义存储过程,扩展存储过程
(1)系统存储过程的名称一般以“sp_”开头
(2)用SQL Server创建,管理和使用
(3)存放在master数据库中
存储过程名称 | 说明 |
---|---|
sp_database | 列出服务器上的所有数据库 |
sp_helpdb | 报告有关指定数据库或所有数据库的信息 |
Sp_ renamedb | 更改数据库的名称 |
sp_tables | 返回当前环境下可查询的对象的列表 |
sp_columns | 返回某个表的所有列的信息 |
sp _help | 查看某个表的所有信息 |
sp_helpconstraint | 查看某个表的约束 |
sp_helpindex | 查看某个表的索引 |
sp_stored procedures | 列出当前环境中华到的所有的存储过程 |
sp_password | 添加或修改登录账户的密码 |
sp_helptext | 显示默认值,未加密的存储过程,用户定义的存储过程、触发器或视图的实际文本 |
https://www.cnblogs.com/accumulater/p/6223792.html
由开发人员(DBA)为了实现数据库中的某种操作自定义的一些SQL编程
由用户自定在所操作的数据库中创建的存储过程
1.有无返回值
2.有无参数
(1)扩展存储过程的名称通常以‘xp_’开头
(2)类型与编程语言(C#)创建的外部存储过程
(3)以DLL形式单独存在
①可以执行Windows中的DOS命名的一些操作
②以文本方式任何输出
xp_cmdshell存储过程
EXEC xp_ cmdshell ’mkdir D: \Product’
执行以上代码需开启权限
登录用户右键选择’方面’(此SQL Server版本为2012) 选择‘外围应用配置器’,选择‘XPCmdShellEnabled’项改为True
语法格式:
EXECUTE 存储过程名 [参数1],[参数2]..
--或者
EXEC 存储过程名 [参数]...
语法格式:
CRECT PROCEDURE[PROC] 存储过程名称
@参数1 数据类型=默认值 OUTPUT,
@参数2 数据类型=默认值 OUTPUT,
...
@参数n 数据类型=默认值 OUTPUT
AS
SQL语句
存储过程的参数:
(1)参数可选
(2)参数分为输入参数,输出参数(若存储过程有返回值,即OUTPUT标记输出参数)
(3)输入参数允许有默认值,一般带有默认值的输入参数在最后
(1)执行速度更快
(2)允许模块化程序设计
(3)提高系统的安全性
(4)减少网络流通量
(5)视图和存储过程的重要有点:安全且执行速度快
通过把SQL命令插入到表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web 表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。
加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。
将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。
攻击者可以使用这些错误消息来获取有关数据库的信息。
对访问数据库的Web应用程序使用Web应用程序防火墙(WAF)
这为面向Web的应用程序提供了保护,它可以帮助识别SQL注入尝试;根据设置,它还可以帮助防止SQL注入尝试到达应用程 序(以及数据库)。
这可以防止攻击者利用旧版本中存在的已知弱点/错误。