information_schemasql information_sechatable和sysobjects查询指定表两种有何不同

information_schema  时间:2021-01-23  阅读:()

数据库中Schema和Database有什么区别

在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==>database。

数据库中User和Schema的关系 假如我们想了解数据库中的User和Schema究竟是什么关系,首先必须了解一下数据库中User和Schema到底是什么概念。

  在SQL Server2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和Schema是两种完全不同的概念,不过在SQL Server2005中这种架构被打破了,User和Schema也被分开了。

 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把 Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个 Schema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了J。

,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),其实User是对应与数据库的(即User是每个对应 数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个Schema(房间)的权利,就是说每个数据库映射的User有每个 Schema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的操作权,可以 扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,呵呵,和现实也太相似了吧。

我还可以给User分配具体的权限,也就是他到某一个房间 能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权 限的问题,我留在以后单独的blog中详述。

比喻到这里,相信大家都清楚了吧。

  在SQL Server2000中,假如我们在某一个数据库中创建了用户Bosco,按么此时后台也为我们默认地创建了默认Schema 【Bosco】。

Schema的名字和User的名字相同,这也是我们分不清楚用户和Schema的原因。

 在SQL Server2005中,为了向后兼容,当你用sp_adduser 存储过程创建一个用户的时候,SQL Server2005同时也创建了一个和用户名相同的Schema,然而这个存储过程是为了向后兼容才保留的,我们应该逐渐熟悉用新的DDL语言 Create User和Create Schema来操作数据库。

在SQL Server2005中,当我们用Create User创建数据库用户时,我们可以为该用户指定一个已经存在的Schema作为默认Schema,如果我们不指定,则该用户所默认的Schema即为 dbo Schema,dbo 房间(Schema)好比一个大的公共房间,在当前登录用户没有默认Schema的前提下,如果你在大仓库中进行一些操作,比如Create Tabe,如果没有指定特定的房间(Schema),那么你的物品就只好放进公共的dbo房间(Schema)了。

但是如果当前登录用户有默认的 Schema,那么所做的一切操作都是在默认Schema上进行(比如当前登录用户为login1,该用户的默认Schema为login1,那么所做的 所有操作都是在这个login1默认Schema上进行的。

实验已经证明的确如此)。

估计此时你会有一点晕,为什么呢?我刚才说dbo是一个 Schema,但是你可以在数据库中查看到,dbo同时也是一个user,晕了吧,呵呵。

  在SQL Server2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Schema有:dbo,INFORMATION_SCHEMA, guest,sys等等(还有一些角色Schema,不提了,有晕了)。

 我在上文中已经提到了,在SQL Server2005中当用存储过程sp_adduser创建一个user时,同时SQL Server2005也为我们创建了一个默认的和用户名相同的Schema,这个时候问题出来了,当我们create table A时,如果没有特定的Schema做前缀,这个A表创建在了哪个Schema上,即进入了哪个房间?答案是:   1.如果当前操作数据库的用户(可以用Select current_user查出来)有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。

 2.如果当前操作数据库的用户没有默认的Schema(即在创建User的时候默认为空),但是有一个和用户名同名的Schema,那么表A照样被创建 在了dbo Schema上,即使有一个和用户名同名的Schema存在,由于它不是该用户默认的Schema,所以创建表的时候是不会考虑的,当作一般的 Schema来处理,别看名字相同,可是没有任何关系哦。

  3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的 Schema上(有权限吗?)  现在问题又出来了,在当前操作数据库的用户(用select current_user可以查看到,再次强调)没有默认Schema的前提下,当我们用Create table A语句时,A表会去寻找dbo Schema,并试图创建在dbo Schema上,但是如果创建A表的用户只有对dbo Schema的只读权限,而没有写的权限呢?这个时候A表既不是建立不成功,这个就是我以后会提及到的Login,User, Role和Schema四者之间的关系。

在这里,为了避免混淆和提高操作数据库的速度(在少量数据范围内,对我们肉眼来说几乎看不到差异),我们最好每次 在操作数据库对象的时候都显式地指定特定的Schema最为前缀。

  现在如果登录的用户为Sue,该用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select * from mytable, 那么搜寻每个房间(Schema)的顺序是怎样的呢?顺序如下:   1. 首先搜寻sys.mytable (Sys Schema)   2. 然后搜寻Sue.mytable (Default Schema)   3. 最后搜寻 dbo.mytable (Dbo Schema)   执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描Sys Schema了,当然可以提高查询的速度了。

  另外需要提示一下的是,每个数据库在创建后,有4个Schema是必须的(删都删不掉),这4个Schema为:dbo,guest,sys和INFORMATION_SCHEMA,其余的Schema都可以删除。

这个数据库information_schema (17) 我能用吗?

这个是系统自己带的数据库 能不能用不好说 但最好别用 自己新建个也很方便 hm可以开100个数据库的

在phpmyadmin中为什么不能隐藏information_schema?

可以在config.default.php中设置以下参数来实现 :-D? $cfg[’servers’][$i][’hide_db’] = ‘information_schema’; 这个我这里就root能看见啊

select * from information_schema.TABLES limit 0,1 执行的时候,基本上没有反应

你先输入 1 * from information_schema.TABLES,如果没有结果,那就是你数据表的问题。

MySQL里面如何修改information_schema里面的信息?

访问数据库information_schema中所含表的唯一方式是使用SELECT语句。

不能在其中插入内容,不能更新它们,也不能删除其中的内容。

它反映的是关于mysql数据库的数据的相关信息。

你要修改关于表和字段的描述信息,是不能直接在information_schema中修改的,而是需要对数据库中相应的表进行修改,修改了相应表之后,information_schema的数据也会自动更新。

sql information_sechatable和sysobjects查询指定表两种有何不同

sysobjects包含的内容更多,包括表,存储过程,日志,规则等。

而information_schema.tables 就是包含表和视图。

inlicloud48元/月,云主机,2核1G/200Mbps,可选安徽/上海联通/广州移动/江门移动NAT

inlicloud怎么样?inlicloud(引力主机)主要产品为国内NAT系列VPS,目前主要有:上海联通NAT(200Mbps带宽)、宿州联通NAT(200Mbps带宽)、广州移动NAT(200Mbps带宽)。根据官方的说法国内的NAT系列VPS不要求备案、不要求实名、对中转要求也不严格,但是,禁止任何形式的回国!安徽nat/上海联通/广州移动/江门移动nat云主机,2核1G/200Mbps仅...

易探云服务器怎么过户/转让?云服务器PUSH实操步骤

易探云服务器怎么过户/转让?易探云支持云服务器PUSH功能,该功能可将云服务器过户给指定用户。可带价PUSH,收到PUSH请求的用户在接收云服务器的同时,系统会扣除接收方的款项,同时扣除相关手续费,然后将款项打到发送方的账户下。易探云“PUSH服务器”的这一功能,可以让用户将闲置云服务器转让给更多需要购买的用户!易探云服务器怎么过户/PUSH?1.PUSH双方必须为认证用户:2.买家未接收前,卖家...

阿里云年中活动最后一周 - ECS共享型N4 2G1M年付59元

以前我们在参与到云服务商促销活动的时候周期基本是一周时间,而如今我们会看到无论是云服务商还是电商活动基本上周期都要有超过一个月,所以我们有一些网友习惯在活动结束之前看看商家是不是有最后的促销活动吸引力的,比如有看到阿里云年中活动最后一周,如果我们有需要云服务器的可以看看。在前面的文章中(阿里云新人福利选择共享性N4云服务器年79.86元且送2月数据库),(LAOZUO.ORG)有提到阿里云今年的云...

information_schema为你推荐
google地球打不开google地球无法打开怎么办手机游戏排行榜20152017年的手游排行榜?回收站在哪回收站 在c盘的路径站长故事爱迪生发明东西的故事无线路由器限速设置无线路由器能设置限速吗?或者说那个牌子的能。安卓应用平台安卓系统支持的软件并不是那么多,为什么这么多人推崇?唱吧电脑版官方下载唱吧有电脑版的么? 在哪里下载啊?硬盘人移动硬盘的优缺点xp系统停止服务Windowsxp系统为什么停止服务云挂机快手极速版后台云挂机辅?助各位用了吗?在哪找的?
鲁诺vps mach 香港机房托管 万网优惠券 网页背景图片 韩国网名大全 七夕快乐英文 最好的免费空间 国外代理服务器地址 流量计费 美国免费空间 web服务器安全 最漂亮的qq空间 smtp虚拟服务器 空间登入 免费asp空间 云服务器比较 工信部网站备案查询 万网服务器 nnt 更多