sql数据库授权
SQL包括了所有对数据库的操作,主要是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
下面我们将分别介绍: SQL数据定义功能包括定义数据库、基本表、索引和视图。
首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
CREATE DATABASE <数据库名> 〔其它参数〕
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:
CREATE DATABASE xmmanage
(2)数据库的删除:将数据库及其全部内容从系统中删除。
其语句格式为:DROP DATABASE <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为: DROP DATABASE xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。 SQL是一种查询功能很强的语言,只要是数据库存在的数据,总能通过适当的方法将它从数据库中查找出来。SQL中的查询语句只有一个:SELECT,它可与其它语句配合完成所有的查询功能。SELECT语句的完整语法,可以有6个子句。完整的语法如下:SELECT 目标表的列名或列表达式集合FROM 基本表或(和)视图集合〔WHERE条件表达式〕〔GROUP BY列名集合〔HAVING组条件表达式〕〕〔ORDER BY列名〔集合〕…〕
简单查询,使用TOP子句
查询结果排序order by
带条件的查询where,使用算术表达式,使用逻辑表达式,使用between关键字,使用in关键字,
模糊查询like
整个语句的语义如下:从FROM子句中列出的表中,选择满足WHERE子句中给出的条件表达式的元组,然后按GROUPBY子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行重新排序,并可附加说明ASC(升序)或DESC(降序)排列。在WHERE子句中的条件表达式F中可出现下列操作符和运算函数:算术比较运算符:<,<=,>,>=,=,<>。逻辑运算符:AND,OR,NOT。集合运算符:UNION(并),INTERSECT(交),EXCEPT(差)。集合成员资格运算符:IN,NOT IN谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。上面只是列出了WHERE子句中可出现的几种主要操作,由于WHERE子句中的条件表达式可以很复杂,因此SELECT句型能表达的语义远比其数学原形要复杂得多。下面,我们以上面所建立的三个基本表为例,演示一下SELECT的应用:1.无条件查询例:找出所有学生的的选课情况SELECT st_no,su_noFROM score例:找出所有学生的情况SELECT*FROM student“*”为通配符,表示查找FROM中所指出关系的所有属性的值。2.条件查询条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。例:找出任何一门课成绩在70以上的学生情况、课号及分数SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.scoreFROM student,scoreWHERE score.score>=70 AND score.stno=student,st_no这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。例:找出课程号为c02的,考试成绩不及格的学生SELECT st_noFROM scoreWHERE su_no=‘c02’AND score<603.排序查询排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。例:查找不及格的课程,并将结果按课程号从大到小排列SELECT UNIQUE su_noFROM scoreWHERE score<60ORDER BY su_no DESC4.嵌套查询嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名SELECT st_no,st_nameFROM studentWHERE stno IN (SELECT st_noFROM scoreWHERE su_no=‘c03’ AND score>80 )这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。5.计算查询计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有:COUNT(*) 计算元组的个数COUNT(列名) 对某一列中的值计算个数SUM(列名) 求某一列值的总和(此列值是数值型)AVG(列名) 求某一列值的平均值(此列值是数值型)MAX(列名) 求某一列值中的最大值MIN(列名) 求某一列值中的最小值例:求男学生的总人数和平均年龄SELECT COUNT(*),AVG(st_age)FROM studentWHERE st_sex=‘男’例:统计选修了课程的学生的人数SELECT COUNT(DISTINCT st_no)FROM score注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。 由于数据库管理系统是一个多用户系统,为了控制用户对数据的存取权利,保持数据的共享及完全性,SQL语言提供了一系列的数据控制功能。其中,主要包括安全性控制、完整性控制、事务控制和并发控制。1.安全性控制数据的安全性是指保护数据库,以防非法使用造成数据泄露和破坏。保证数据安全性的主要方法是通过对数据库存取权力的控制来防止非法使用数据库中的数据。即限定不同用户操作不同的数据对象的权限。存取权控制包括权力的授予、检查和撤消。权力授予和撤消命令由数据库管理员或特定应用人员使用。系统在对数据库操作前,先核实相应用户是否有权在相应数据上进行所要求的操作。(1)权力授予:权力授有数据库管理员专用的授权和用户可用的授权两种形式。数据库管理员专用授权命令格式如下:|CONNECT |GRANT|RESOURCE|TO 用户名〔IDENTIFED BY 口令〕|DBA |其中,CONNECT表示数据库管理员允许指定的用户具有连接到数据库的权力,这种授权是针对新用户;RESOURCE表示允许用户建立自己的新关系模式,用户获得CONNECT权力后,必须获得RESOURCE权力才能创建自己的新表;DBA表示数据库管理员将自己的特权授予指定的用户。若要同时授予某用户上述三种授权中的多种权力,则必须通过三个相应的GRANT命令指定。另外,具有CONNECT和RESOURCE授权的用户可以建立自己的表,并在自己建立的表和视图上具有查询、插入、修改和删除的权力。但通常不能使用其他用户的关系,除非能获得其他用户转授给他的相应权力。例:若允许用户SSE连接到数据库并可以建立他自己的关系,则可通过如下命令授予权力:GRANT CONNECT TO SSE INENTIFIED BY BD1928GRANT RESOURCE TO SSE用户可用的授权是指用户将自己拥有的部分或全部权力转授给其他用户的命令形式,其命令格式如下:|SELECT ||INSERT ||DELETE |GRANT|UPDATE(列名1[,列名2]…)|ON|表名 |TO|用户名|〔WITH GRANT OPTION〕|ALTER | |视图名| |PUBLIC||NDEX ||ALL |若对某一用户同时授予多种操作权力,则操作命令符号可用“,”相隔。PUBLIC 表示将权力授予数据库的所有用户,使用时要注意:任选项WITH GRANT OPTION表示接到授权的用户,具有将其所得到的同时权力再转授给其他用户权力。例:如果将表student的查询权授予所有用户,可使用以下命令:GRANT SELECT ON student TO PUBLIC例:若将表subject的插入及修改权力授予用户SSE并使得他具有将这种权力转授他人的权力,则可使用以下命令:GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT OPTION这里,UPDATE后面跟su_subject是指出其所能修改的列。(2)权力回收:权力回收是指回收指定用户原已授予的某些权力。与权力授予命令相匹配,权力回收也有数据库管理员专用和用户可用的两种形式。DBA专用的权力回收命令格式为:|CONNECT |REVOKE|RESOURCE|FROM用户名|DBA |用户可用的权力回收命令格式为:|SELECT ||INSERT ||DELETE |REVOKE|UPDATE(列名1〔,列名2〕…) |ON|表名 |FROM |用户名||ALTER | |视图名| |PUBLIC||INDEX ||ALL |例:回收用户SSE的DBA权力:REVOKE DBA FROM SSE2.完整性控制数据库的完整性是指数据的正确性和相容性,这是数据库理论中的重要概念。完整性控制的主要目的是防止语义上不正确的数据进入数据库。关系系统中的完整性约束条件包括实体完整性、参照完整性和用户定义完整性。而完整性约束条件的定义主要是通过CREATE TABLE语句中的〔CHECK〕子句来完成。另外,还有一些辅助命令可以进行数据完整性保护。如UNIQUE和NOT NULL,前者用于防止重复值进入数据库,后者用于防止空值。3.事务控制事务是并发控制的基本单位,也是恢复的基本单位。在SQL中支持事务的概念。所谓事务,是用户定义的一个操作序列(集合),这些操作要么都做,要么一个都不做,是一个不可分割的整体。一个事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。SQL提供了事务提交和事务撤消两种命令:(1)事务提交:事务提交的命令为:COMMIT 〔WORK〕事务提交标志着对数据库的某种应用操作成功地完成,所有对数据库的操作都必须作为事务提交给系统时才有效。事务一经提交就不能撤消。(2)事务撤消:事务撤消的命令是:ROLLBACK 〔WORK〕事务撤消标志着相应事务对数据库操作失败,因而要撤消对数据库的改变,即要“回滚”到相应事务开始时的状态。当系统非正常结束时(如掉电、系统死机),将自动执行ROLLBACK命令
❷ sql数据库授权 2core 是什么意思
这是企袭圆业版的授权方式。标准版可以按用户客户端数量收费。因为根据不同的硬件,负载可能有棚大很大的区别,而cpu作为硬件资源里很重要的一个,可以用来限制数据库的使用规模,规模大了拍和塌,就多给钱,但实际上大客户买产品,微软是有很大折扣的。
❸ 怎么设置SQL数据库用户权限
-- sqlserver:一、操作步骤
1.
首先进入数据库级别的【安全性】-【登录名】-【新建登录名】
(图1:新建登录名)
2.
在【常规】选项卡中,如下图所示,创建登陆名,并设置默认的数据库。
(图2:设置选项)
3.
在【用户映射】选项卡中,如下图所示,勾选需要设置的数据库,并设置【架构】,点击【确认】按钮,完成创建用户的操作
(图3:选择对应数据库)
4.
现在我们就可以对testlog数据库中的user表进行权限的设置了,【表】-【
属性】
(图4:选择对应表)
5.
在【权限】选项卡中,如下图所示,依此点击【添加】-【浏览】-【选择对象】
(图5:设置访问表的用户)
6.
在上面点击【确认】后,我们就可以下面的列表中找到对应的权限,如果你还想细化到列的权限的话,右下角还有一个【列权限】的按钮可以进行设置,点击【确认】按钮就完成了这些权限的设置了
(图6:权限列表)
7.
现在就使用testuser用户登陆数据库了,登陆后如下图所示,现在只能看到一个表了
(图7:效果)
二、注意事项
1.
在上面的第3步骤中需要注意:如果这里没有选择对应的数据库的话,之后去testlog数据库中是找不到testuser。
(图8:找不到testuser用户)
2.
在上面的第3步骤,设置完testlog数据后,需要点击【确认】按钮,完成创建用户操作,如果这个时候去设置【安全对象】,是无法在【添加】-【特定对象】-【对象类型】-【登陆名】-【浏览】中找到刚刚新建的testuser用户的。
3.
其实在数据库级别的【安全性】创建的用户是属于全局的,当设置了某个数据库,比如testlog之后,这个用户就会出现在这个数据库的【安全性】列表中。
如果删除testlog这个用户,会出现下面的提示。删除了后,这个用户就无法登陆了。需要去对应的数据库中删除用户,如果没有删除又创建,是会报错的。
(图9:删除testuser用户)
4.
在第6步的【显式权限】列表中,如果选择了【control】这个选项,那么在【select】中设置查询【列权限】就没有意义了,查询就不会受限制了。如果设置【列权限】,在正常情况下会显示下图的报错信息:
(图10:效果)
5.
在testlog数据库的【安全性】-【testuser】-【属性】-【安全对象】-【添加】-【对象类型】这里有更多关于数据库级别的一些对象类型可以设置。
(图11:其它对象类型)
❹ sql语言的授权操作是通过
sql语言的授权操作是通过GRANT和REVOKE命令实现的。根据查询相关公开信息显示:GRANT和REVOKE命令可以限制用户对数据的操作类型,通过授权操作,管理员可以给予用户或敏羡仅有必要的权衫拍限,可以远程使用拿衡GRANT和REVOKE命令来管理用户访问权限,而不需要直接访问到数据库服务器。
❺ sql数据库如何收费/授权
SQL Server、Oracle、MySQL,商业使用都是收费的。小公司不规范,可能一直在免费用,这个不在讨论之列,但是,谈到商业使用的费用,我们来做个大致的比较:
就比较 1CPU + 50 Client Access License ,而且都用企业版的情况吧:
SQL Server:我看到的数据是最新的SQL Server 2012 Enterprise的价格,是:人民币 12万出头
Oracle:我是间接地得到数据的,价格为:人民币 56.3万
MySQL:不详。价格可能为5000到10000美元,合 3万五到7万人民币,但是,请注意,这是每年的费用。
如果谁有更准确的数据来源,请回帖指出,最好是官方的权威数据。多谢,定将送分感谢。
❻ sql server怎么给一个用户授权数据库
1.在运行 SQL Server 的计算机上,启动 SQL Server Management Studio。 在“已注册的服务器”窗格中,双击“SQL Server”。
2.在对象资源管理器窗格中,展开“SQL Server”,展开“安全性”文件夹,右键单击“登录”,然后单击“新建登录”。
3.在“登录名 - 新建”对话框中,指定 Windows 身份验证或 SQL Server 身份验证模式。
如果使用 Windows 身份验证,请输入登录名,并选择“允许访问”或“拒绝访问”选项。
如果使用 SQL Server 身份验证,请键入登录名和密码,并确认密码。
4.在左侧窗格中,单击“数据库访问”。
5. 在右侧窗格中,对要授予访问权的数据库选中“允许”复选框,然后单击“确定”。
https://technet.microsoft.com/zh-cn/zh-ch/library/ms172405(v=sql.105).aspx
http://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html
❼ SQL数据库
在SQL中能设置一列为只读?这我怎么都不知道?
我知道的是在DCL(数据控制)中对于不同的用户可以设置不同的权限,比如说授权某一个用户只读某一个数据库时,那么该用户对些数据库只能是读无法进行插入或是更新操作,也就是说只读数据库的select权限授予该用户,即可达到只读的情况!
当然,我们可以授予某用户在某一列上有select权限,就可能就是你说的那种情况!但如果是这样的情况下,无法更改其数据,包括插入与更新,在SQL数据库中权限授予也是存在一定的安全机制的,用户本身没有权限时,不能给其他用户授予自己不具备的权限,否则会造成该用户拥有这样的权限.比如某用户建立一个用户,而该用户若能授予自己所创建的用户以删除权限,然后再以创建的用户登陆,再授予上侍竖级用户以删除权限,这样该用户就可能具备删除权限.所以如果该用户在某一表,列或者库中伍段具备的是只读时,除非使用权限更高的用户去授予该用户权限,否则使用自己打开的链接中是无法实现的,任何语句都不行的!
不知道你所谓的只读是什么意思,但在SQL中,权限的机制不是表,而是用户,在老橘大系统表中,用户对某一库表的有什么样的权限都有一个系统表的,除非你能拿到更高级的用户权限,否则不可能有任何办法!
❽ SQL如何使用授于权限让用户查询数据库中的所有表
--创建登录运辩敏账号
CREATE LOGIN USER1 WITH PASSWORD='123';
GO
--打开授权的数据库(假设给数据库TEST授权)
USE TEST
GO
--将登录账号映射为当前数据库用户
CREATE USER USER1 FOR LOGIN USER1
GO
--授予用户灶银对当前数旁枝据库所有表具有查询权
EXEC sp_addrolemember 'db_datareader', 'USER1'
❾ SQL语言的GRANT和REVOKE语句主要是用来维护数据库的
选C,SQL语言的GRANT和REVOKE语句主要是用来维护数据库的安全性。
GRANT 和 REVOKE 两个语句分别是授予权限和回收权限语句,具有对 SQL语言的安全控制功能。
1、授权命令 grant,语法格式(SQL语句不区分大小写):Grant <权限> on 表名[(列名)] to 用户 With grant option
或 GRANT <权限> ON <数据对象> FROM <数据库用户>
//数据对象可以是表名或列名
//权限表示对表的操作,如select,update,insert,delete
2、注:授权命令是由数据库管理员使用的,若给用户分配权限时带With grant option子句,
则普通用户获权后,可把自己的权限授予其他用户。
(9)sql数据库授权扩展阅读:
回收revoke
revoke语句:收回授予的权限
revoke一般格式:
revoke <权限> [,<权限>]…
on <对象类型 > <对象名> [,<对象类型 > <对象名>]..
from <用户> [,<用户>]…
[cascade | restrict];
例子:收回所有用户对表SC的查询权限
revoke select
on table sc
from public;
❿ 如何给SQL Server数据库设置修改表结构的权限
创建好用户后,几个需要赋权限的启洞地方,写出来以备后用。
1.在安全性用户属性中,登录用户的服务器角色为public
2.
用户映射到数据的数据库角色成员身份为:db_owner和public,默认架构为dbo
3.
状态为允许连接到数据引擎和登录
在允许访问的数据库碧旁首属性权限中,创建用户权限
1.加上读取、更新、删除,
2.加上控制和连接复制这两个,用户可以在sql
server管理界面中直接连接,
3.加上更改任意架构,用户可以修改表结构
把其他的权限设为拒绝,这悔数样他就只有读取、更新、删除,及修改表结构的权限