如果你踩過 MySQL 的大坑的話就知道:MySQL 在 Windows 下不區(qū)分大小寫,但在 Linux 下默認(rèn)是區(qū)分大小寫。
如果你稍加不注意就會出現(xiàn)在本機(jī)開發(fā)的程序運(yùn)行一切正常,發(fā)布到服務(wù)器行就出現(xiàn)表名找不到的問題。
這是我們前一個(gè)項(xiàng)目遇到的巨大問題,開發(fā)是在 Windows 下進(jìn)行,但是部署是在 Linux 下進(jìn)行。
例如一個(gè)表:tableName 和 tablename,這 2 個(gè)表在 Windows 下是一樣的,但在 Linux 下就不一樣了。
所以我們的程序在 Windows 下查詢表 tableName 沒有問題,但是如果 Linux 下數(shù)據(jù)庫的表名為 tableName 的話,那么查詢就找不到表了。
有過上面經(jīng)歷的話,我們來看看 PostgreSQL
PostgreSQL 是大小寫敏感的
在默認(rèn)情況,PostgreSQL 在存儲和比較數(shù)據(jù)值的時(shí)候字符串的值如果是大小寫的處理方式是不一樣的。
例如: “isharkfly” 和 “iSharkFly” 是不同的值,這個(gè)在 PostgreSQL 會影響存儲的。
創(chuàng)建表的 SQL
如果我們有一個(gè)創(chuàng)建表的 SQL:
create table test.Table_name
(
id integer,
user_name varchar
);
和
create table test.table_name
(
id integer,
user_name varchar
);
注意到,上面的 T 是大寫的,如果運(yùn)行上面的 SQL,在數(shù)據(jù)庫上,我們會看到表的名字被轉(zhuǎn)換成小寫了。
如果我們想在數(shù)據(jù)庫中創(chuàng)建一個(gè) Table_name 可以嗎?
答案是可以的。
需要把 Table_name 放在雙引號里面。
運(yùn)行的 SQL 就成這樣了。
create table test."Table_name"
(
id integer,
user_name varchar
);
結(jié)論
為了避免我們在 MySQL 上遇到的大小寫問題和平臺問題。
在設(shè)計(jì)數(shù)據(jù)庫表的時(shí)候,不要使用大小寫混合模式,要么就全部約定為小寫,要不就全部約定為大寫。
因?yàn)?PostgreSQL 會默認(rèn)全部使用小寫,所以在 PostgreSQL 的表面和字段名要全部為小寫為好。
Oracle 數(shù)據(jù)庫在這里是另類,在 Oracle 中全部按照大寫存儲的。文章來源:http://www.zghlxwxcb.cn/news/detail-822472.html
PostgreSQL 是不是大小寫敏感 - 數(shù)據(jù)庫 - iSharkFly如果你踩過 MySQL 的大坑的話就知道:MySQL 在 Windows 下不區(qū)分大小寫,但在 Linux 下默認(rèn)是區(qū)分大小寫。 如果你稍加不注意就會出現(xiàn)在本機(jī)開發(fā)的程序運(yùn)行一切正常,發(fā)布到服務(wù)器行就出現(xiàn)表名找不到的問題。 這是我們前一個(gè)項(xiàng)目遇到的巨大問題,開發(fā)是在 Windows 下進(jìn)行,但是部署是在 Linux 下進(jìn)行。 例如一個(gè)表:tableName 和 tablename,這 2 個(gè)表在 Windows 下是一樣的,但在 …https://www.isharkfly.com/t/postgresql/15350文章來源地址http://www.zghlxwxcb.cn/news/detail-822472.html
到了這里,關(guān)于PostgreSQL 是不是大小寫敏感的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!