为什么平台数据库名及表名要统一用大写?

今天遇到的客户,数据库命名采用变量命名方式,用第一个字母大写,后面跟小写的方式来区分单词,实际上,这种做法可能会存在一些问题,给程序编写造成麻烦。今天来讲一讲我们为什么快速开发平台设计数据库时必须要大写。
在oracle 和sql server中,对于数据库表名和字段名的大小写,都有不同的处理方式。

先从oracle说起,Oracle建的表名和字段名时,如果没有加引号(ORACLE 中 " "的作用是强制区分大小写,以及关键字做字段时用""),都会自动给我们转换为大写的。
那么,这种做法在我们实际应用中有没有什么问题呢?
实际上,在我们写sql 语句查询的时候,如我们写一条查询语句:

select id,name,sex from userInfo 

那么,这种情况下,ORACLE通常用自动转换为大写,即查出来的数据表字段是大写的:ID、NAME、SEX。这样程序员便可以统一的将程序绑定为大小,而不需要根据sql语句中的大小写来确定绑定的名字。实际上,在编程中是有好处的。
而在sql server中,如果 sql 语句是 小写,那么读取出来的Datatable数据字段名也会是小写(即使我们的数据库字段是大写)。这样就存在一个问题,我们在写sql 语句的时间肯定会比较多,如果通过SQL语句即可改变dataTable的列名大小写,对于要区分大小写的数据绑定来说,是一件非常令人苦恼的事情,它可能会给你的程序带来“无穷的麻烦”,可能导致很多地方无法绑定数据。
而在sql server中,在查询分析器中写小写字段名,sql server也会自动给你转换为大写,所以sql server也是推荐我们在sql 语句中养成大写表名和字段名的习惯吧。
以过sql server和oracle多年的使用,我觉得oracle在这方面做得更加严谨,因此在平台设计之初,我们就强制数据库表名和字段名必须大写,统一规则更有利于平台的稳定性,因此,建表的时候,才会强制转换为大写。
在平台的业务表层,我们对此进行了处理,所以业务表大小写均可。但是用vs开发时,就必须使用大写了。

有人认为oracle是不区分大小写的,实际上,正是因为oracle严格区分大小写,所以才会统一把没有加引号的转换为大写,以方便处理。
而sql server根据sql 语句的大小写形成不同的大小写表头,严格上说也没有问题,但是实际使用中会造成很多麻烦,因为它默认了所有编程人员了解了它的规则,如果一旦不懂规则,随便写SQL语句,则就会有很多麻烦出来。

原文地址:http://plat.delit.cn/thread-150-1-1.html

转载请注明出处:

撰写人:度量科技www.delit.cn

时间: 2024-08-29 12:19:02

为什么平台数据库名及表名要统一用大写?的相关文章

MySQL数据库名、表名大小写问题

在MySQL中,数据库对应操作系统数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎).因此,所使用操作系统的大小写敏感性决定了数据库名以及表名的大小写敏感性.这说明在大多数Unix中数据库名和表名对大小写敏感,而在windows中对大小写不敏感. 列.索引.存储子程序和触发器名在任何平台对大小写不敏感,列的别名也不敏感. 对于类Unix系统: 数据库名和表名是严格区分大小写的 表的别名是严格区分大小写的 列名与列别名在所有情况下均是忽略大小写的 变量

[转载] SQL获取所有数据库名、表名、储存过程以及参数列表

查询一个数据库中所有表字段属性的sql语句 1.获取所有用户名: SELECT name FROM Sysusers where status='2' and islogin='1' islogin='1'表示帐户 islogin='0'表示角色 status='2'表示用户帐户 status='0'表示糸统帐户 2.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 3.获取所有表名 SELECT Name FROM Da

数据库查数据库名,表名,列表

数据库查数据库名,表名,列表 select * from [master].[dbo].sysdatabases order by name --查默认的sysdatabases表,列出所有数据库名. select * from [mdm1130].[dbo].[sysobjects] where xtype='u' order by name --查sysobjects表,列出所有表名. select * from [mdm1130].[dbo].[ADMIN_ACTIONS] --查某表,列

MySql 查询数据库中所有表名

查询数据库中所有表名select table_name from information_schema.tables where table_schema='csdb' and table_type='base table'; 查询指定数据库中指定表的所有字段名column_nameselect column_name from information_schema.columns where table_schema='csdb' and table_name='users'

sql server 查询数据库所有的表名+字段

原文:sql server 查询数据库所有的表名+字段 SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='Account' SELECT    (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空       a.colorder as 字段序号,       a.name as 字段名,       (case when COLUMNPROPER

更改MYSQL数据库不区分大小写表名

今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区分表名大小写的,哎,弄了那么旧,害死我了. 让MYSQL不区分表名大小写的方法其实很简单: 1.用ROOT登录,修改/etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 3.重新启动数据库即可 更改MYSQL数据库不区分大小写表名

SQL获取所有数据库名、表名、储存过程以及参数列表

SQL获取所有数据库名.表名.储存过程以及参数列表 1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.获取所有数据库名:SELECT Name FROM Master..SysDatabases ORDER BY Name3.获取所有表名SELECT Name FROM Databas

获得目标服务器中所有数据库名、表名、列名

1 /// <summary> 2 /// 获得目标服务器所有数据库名 3 /// </summary> 4 /// <param name="serverName"></param> 5 /// <param name="userName"></param> 6 /// <param name="password"></param> 7 public

SQLserver查询数据库所有字段-表名

SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='Account' SELECT (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空 a.colorder as 字段序号, a.name as 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' e

SQL获取数据库名,表名,列名,说明等信息

由于最近工作涉及SQL语句较多,对一些不常见的SQL函数.及存储过程下面进行整理和描述,供大家分享: /************************************************************************************************************** 1.获取所有用户名: islogin='1' :表示帐户 islogin='0' :表示角色 status='2' :表示用户帐户 status='0' :表示系统帐户 **