现在谈谈取名的一些技巧
一、表名大小写的控制一般情况下Oracle数据库中的表名或者列名是不区分大小写的
在创建表或者列的时候,即使管理员采用了小写的名字,数据库在将其保存到数据字典之前,会先将其转换为大写,再将他们保存到数据字典中
这也就是为什么我们取名使用小写的子母取名,但是下次查看表的名字的时候,却变成了大写
虽然说Oracle数据库中表与列等数据库对象对于大小写是不敏感的,但是如果数据库管理员确实有需要要让数据库系统对表的名字区分大小写,这也是可以做到的
通常情况下,如果把名字使用双引号括起来,则在Oracle数据字典中就会成为区分大小写的名字
不过笔者这里要提醒各位数据库管理员,虽然说从技术上可以让数据库系统强制取分大小写,但是在实际工作中,包括在内的绝大部分数据库管理员可能都不建议这么做
因为如果有混合的大小写存在,那么在引用这些表或者列名称的时候就需要特别的小心
因为即使用户或者数据库管理员有着过目不忘的本领,也很难准确的记住这些名称的大小写歌时
如果数据库管理员硬要这么做的话,那么很可能是自寻烦恼
在查询时或者其他作业时,要严格区分大小写那是一件很头疼的事情
为此,对于这个大小写的控制,笔者建议数据库管理员要谨慎使用
除非有充分的理由,否则的话,不要轻易使用这个双引号来控制大小写
这个双引号不仅可以用来控制大小写,还有一个比较特殊的作用,就是用引用一些特殊的字符
如在建立表格的时候,需要设置一个名牌号的字段
有些数据库管理员习惯使用num#类似的名称
这不会违反数据库的取名规则
不过在处理的时候会比较麻烦
如利用create语句建立表格的时候,需要给这个字段名称加上双引号
否则的话,执行这条语句的时候,数据库会拒绝执行并向用户提示错误信息
类似的特殊符号还包括一个$美元符号
他们在建立表格的时候,在语句中都需要使用双引号
不过字段建立好之后,在引用这些对象的时候,不需要使用双引号了
同理,虽然Oracle数据库支持这些特殊符号,但是笔者不鼓励数据库管理员在表或者列的取名中采取这些特殊的符号
这有可能给后续的引用带来不必要的麻烦
二、牢记取名空间在Oracle数据库中,跟其他的数据库不同,有一个叫做取名空间的概念
在同一个取名空间中,其名字不可以重复
如表与视图就共享同一个取名空间,为此就要求不仅表的名字不能够相同,而且表的名字与视图的名字也不能够相同
因为他们处于同一个取名空间
类似的,表与函数也是同处于一个表空间,为此他们也不能够同名
不过表与索引、表与约束等等却属于不同的取名空间
也就是说,表的名字可以与约束的名字相同
所以说,数据库管理员在给表等对象取名的时候,一定要了解哪些对象共享同一个名称空间
如果在同一个名称空间内的,即使对象不同(如视图与表),但是他们仍然不能够取相同的名字
为了避免同一个取名空间内重名的现象,笔者建立在取名的时候最好能够根据对象的不同加上对象的固有前缀
如大部分的数据库管理员,在给表取名的时候,一般不会表名前面加上表对象的前缀
但是在定义函数或者视图对象的时候,则会加上前缀
如在函数前面可能会加上FN的前缀,而在视图前面可能会加上vi的前缀
如此的话,在同一个取名空间内也不用担心对象重名的问题
不过无论怎么说,这个取名空间的概念数据库管理员必须牢记
即使在实际的工作中,可以通过前缀等手段轻易的避免这个陷阱,但是在Oracle数据库管理员的认证考试中,这个取名空间也是一个必要的知识点
所以无论从实际的工作还是认证考试的需要,对于这个取名空间管理员都必须要有一个清晰的认识
三、在表、索引、约束、列之间设置密切的联系在创建表的同时,可以给表中的某些列添加索引、约束等等
如在员工信息表中,会设置员工编号唯一性约束
在创建约束的时候,也需要对约束进行取名
虽然说也约束与表、列不属于同一个取名空间,所以在取名的时候基本上没有限制
但是为了后续使用的方便,笔者对约束的取名还有一个小小的建议
简单的说,就是给一个与表直接有关的其他对象具有该表的名字是一种好的做法
如现在有一张用户表名字叫做ad_user(在表名前面一般不加对象名,但是可以根据应用软件的模块设计加上模块的前缀),这种表中有一个字段叫做叫做vlaue,用来存储员工的编号
在表设计的时候,需要给这个字段加一个索引
那么这个索引的名字就可以取名为IDX_USER_VALUE(也就是索引前缀表名字段名的形式)
这么做有什么好处呢一是可以确保相关对象的名字不会重复
因为表的名字不会重复,所以将表的名字与列的名字一起组成某个对象的名字,那么其重复的几率可以说基本上没有
二是方便管理员阅读、理解、维护等等
一看到索引或者约束对象的名字时,就可以看到这个是索引或者约束是用在哪个表的那个字段上的
而且也可以知道这个约束是唯一性约束还是检查约束;索引时主键索引还是外键索引
给数据库管理员一目了然的感觉
这对于后续的维护、升级、调整、引用等等都提供了方便
虽然说Oracle数据库中表与列等数据库对象对于大小写是不敏感的,但是如果数据库管理员确实有需要要让数据库系统对表的名字区分大小写,这也是可以做到的
通常情况下,如果把名字使用双引号括起来,则在Oracle数据字典中就会成为区分大小写的名字
不过笔者这里要提醒各位数据库管理员,虽然说从技术上可以让数据库系统强制取分大小写,但是在实际工作中,包括在内的绝大部分数据库管理员可能都不建议这么做
因为如果有混合的大小写存在,那么在引用这些表或者列名称的时候就需要特别的小心
因为即使用户或者数据库管理员有着过目不忘的本领,也很难准确的记住这些名称的大小写歌时
如果数据库管理员硬要这么做的话,那么很可能是自寻烦恼
在查询时或者其他作业时,要严格区分大小写那是一件很头疼的事情
为此,对于这个大小写的控制,笔者建议数据库管理员要谨慎使用
除非有充分的理由,否则的话,不要轻易使用这个双引号来控制大小写
系统内置角色为创建数据库角色方法/步骤如下
1/6分步阅读
第一步,连接对象资源管理器,点击打开数据库book,依此找到“安全性---角色”,点击这个菜单项,如下图所示:
2/6
第二步,选中“数据库角色”鼠标右键,新建数据库角色,打开新建窗口,如下图所示:
德国Statista数据平台 - 为您提供行业专业知识及数据
StatistaGmbH广告
3/6
第三步,输入角色名称和所有者,分别为“Control”和“dbo”,注意所有者,如下图所示:
4/6
第四步,点击添加按钮,选择数据库用户或角色;单击浏览按钮,查询用户并确定,添加正确的角色用户,如下图所示:
5/6
第五步,确定完毕后,框框里选择此角色的成员就为选择的成员角色,如下图所示:
6/6
第六步,选择此角色拥有的框架,这里选择“dbo”,然后点击确定,完成 *** 作,如下图所示:
注意事项
了解创建数据库角色的过程
注意角色的方法和用法
SQL 数据库 客户端
编辑于2018-01-16,内容仅供参考并受版权保护
赞踩分享阅读全文
德国Statista数据平台 - 为您提供行业专业知识及数据
我们为您提供值得信赖的商业统计数据,报告和市场预测,让您的研究更加高效专业。立即免费注册账户,体验来自Statista以及全球25,000+知名数据点及合作伙伴的独家内容
StatistaGmbH广告
服务器京东-精品惠聚,天天特价,嗨GO不停!
Dell 定制方案 项目16
¥767 元
戴尔(DELL)服务器方案 项目8
¥19249 元
Dell 定制方案 联想X1 X270 X280 T470S充电器
¥200 元
企业级de产ll品 H3C LS-5024PV5-EI 24个千兆电口4个千兆光口 全千兆管理型
¥1550 元
京东广告
数据服务-RestCloud全新的ETL社区版,免费下载,永久使用
根据数据库相关内容为您推荐数据服务
数据集成ETL,在数据处理层面,ETL不仅提供近100+数据处理组件,更多组件不断迭代推出中,提供多租户的数据集成开发作业,使企业大规模数据集成更加轻松,更安全。
谷云科技(广州)广告
相关经验
sql server数据库文件存储位置怎么找
22万人看过
PyQt5-QLabel 如何为标签文本设置超链接
3618人看过
sql2016-买东西逛淘宝,榜单好物随心入!
淘宝
通过系统数据库 master 的 表 sysprocesses 来查看。
SELECT DB_NAME(dbid) as 'dbname' FROM masterdbosysprocesses WHERE status='runnable'被取消的命令MySQL 之前提供了一个 rename database db_old to db_new 的命令来直接对数据库改名,可能由于实现的功能不完备(比如,这条命令可能是一个超大的事务,或者是由于之前的表很多还是 MyISAM 等),后来的版本直接取消了这条命令。更改数据库名大致上有以下几种方案:
一、mysqldump 导入导出要说最简单的方法,就是直接用 mysqldump 工具,在旧库导出再往新库导入(最原始、最慢、最容易想到)的方法:旧库 yttdb_old 导出(包含的对象:表、视图、触发器、事件、存储过程、存储函数)
二、改整库的表名利用 MySQL 更改表名的方法来批量把旧库的所有表依次遍历,改名为新库的表。这种方法比第一种要快很多倍,但是没有第一步 *** 作起来那么顺滑,不能一步到位。比如,要把数据库 yttdb_old 改名为 yttdb_new,如果数据库 yttdb_old 里只有磁盘表,那很简单,直接改名即可。或者写个脚本来批量改,非常简单。但是一般旧库里不只有磁盘表,还包含其他各种对象。这时候可以先考虑把旧库的各种对象导出来,完了在逐一改完表名后导进去。
三、历史方案其实在 MySQL 早期还有一种方法。假设 MySQL 部署好了后,所有的 binlog 都有备份,并且二进制日志格式还是 statement 的话,那就可以简单搭建一台从机,让它慢慢追主机到新的库名,等确切要更改旧库的时候,再直接晋升从机为主机即可。这里只需要从机配置一个参数来把旧库指向为新库:replicate-rewrite-db=yttdb_old->yttdb_new不过这种局限性很大,不具备标准化,不推荐。
总结其实针对 MySQL 本身改库名,大致就这么几种方法:
如果数据量小,推荐第一种;
数据量大,则推荐第二种;
数据量巨大,那就非 MySQL 本身能解决的了。
可通过部署第三方 ETL 工具,通过解析 MySQL 二进制日志或其他的方式来把旧库数据直接读取到新库达到改名的目的等等。
以上就是关于如何为数据库取名全部的内容,包括:如何为数据库取名、系统内置角色为创建数据库角色、如何得到当前所在的sql的数据库名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)