sql大小寫敏感
⑴ sql SERVER 2008 大小寫 敏感么
取決姿碼於字元集,
字元集是Chinese_PRC_CS_AI,大小寫賀冊虛敏禪燃感; 其他之外的字元集都不敏感的
⑵ 如何設置:SQL語句中對欄位名的大小寫敏感
在SQL Server中默認悔友對大小寫是不敏感的,例如fname='peter'和fname='御前畢PETER'結果是一樣的。但有時候用戶會要求區分大鎮芹小寫,如驗證密碼等。這種情況下的處理辦法就是在欄位後加上 collate Chinese_PRC_CS_AS_WS如:
⑶ sql語句查詢字母欄位時不區分大小寫
select*fromgzjdczb_db_linkswhereusernamelikebinary'%g%'orusernamelikebinary'%G%';
upper()應該是把username轉化為大寫的吧,lower()才是轉化為小寫
⑷ sql server中對大小寫不是不敏感嗎為什麼錯了
N'string'固定的標示,另外sqlserver並不是不能區分大小寫,而是默認不區分,可以設置的。
加上 N 代表存入資料庫時以 Unicode 格式存儲。
N'string' 表示string是和昌羨個Unicode字元串
Unicode 字元串的格式與普通字元串相似,但它前面有一個 N 標識符(N 代表 SQL-92 標准中的國際語言 (National Language))。N 前綴必須是大寫字母。例如,'Michél' 是字元串常量而 N'Michél' 則是 Unicode 常量。Unicode 常量被解釋為 Unicode 數據,並且不使用代碼頁進行計算。Unicode 常量確實有排迅改序規則,主要用於控制比較和區分大小寫。為 Unicode 常量指派當前資料庫的默認排序規則,除非使用 COLLATE 子句為其指定了排序規則。Unicode 數據中的每個字元都喚拍使用兩個位元組進行存儲,而字元數據中的每個字元則都使用一個位元組進行存儲。有關更多信息,請參見使用 Unicode 數據。
Unicode 字元串常量支持增強的排序規則。
⑸ 如何讓sql server 2000里的查詢對大小寫敏感
要想大小寫敏感,在創建表的過程中要指定某個列的排序規則中要纖卜區分大小寫。
比如
create table test
(
c varchar(10) collate Chinese_PRC_CS_AS
)
Chinese_PRC_CS_AS中CS就表示是區分大小寫。
這時
select * from test where c like 'Abc' 和
select * from test where c like 'abc'的結果就不一樣了。
如果原表不想改動,弊豎侍可以創建一個臨時表,設置大小寫敏感,之後將數據導入,再租吵臨時表中查詢。
⑹ sql語句如何忽略大小寫
我們需要准備的材料分別是:電腦、sql查詢器。
1、首先,打開sql查詢器,連接上相應的資料庫表,例如test表。
⑺ linux中如何讓mysql的表不區分sql語句的大小寫
Windows 環境下大小寫不敏感
CREATE TABLE tab (
id INT AUTO_INCREMENT,
val VARCHAR(10),
PRIMARY KEY (id)
);
mysql> select * from tab;
Empty set (0.00 sec)
mysql> select * from Tab;
Empty set (0.00 sec)
mysql> select * from `Tab`;
Empty set (0.00 sec)
在MySQL中如何在硬碟上保存和使用表名和資料庫名由lower_case_tables_name系統變數確定,可以在啟動mysqld時設置。lower_case_tables_name可以採用下面的任一值:
值 含義
0 使用CREATE TABLE或CREATE DATABASE語句指定的大寫和小寫在硬碟上保存表名和資料庫名。名稱比較對大小寫敏感。在Unix系統中的默認設置即如此。請注意如果在大小寫不敏感的文件系統上用--lower-case-table-names=0強制設為0,並且使用不同的大小寫訪問MyISAM表名,會導致索引破壞。
1 表名在硬碟上以小寫保存,名稱比較對大小寫敏感。MySQL將所有表名轉換為小寫以便存儲和查找。該行為也適合數沖肆據庫名和表的別名。該值為Windows和Mac OS X系統中的默認值。
2 表名和資料庫名在硬碟上使用CREATE TABLE或CREATE DATABASE語句指定的大小寫進行保存,但MySQL將它們轉換為小寫以便查找。名稱比較對大小寫敏感。注釋:只在對大小寫不敏感的文件系統上適用! InnoDB表名以小寫保存,例如lower_case_tables_name=1。
在Windows和Mac OS X中,lower_case_tables_name的 默認值是1。
如果只在一個平台上使用MySQL,通常不需要更改lower_case_tables_name變數。然而,如果你想要在對大小寫敏感不同的文件系統的平台之間轉移表,會遇到困難。例如,在Unix中,my_tables和MY_tables是兩個不首頃同的表,但在Windows中,這兩個表名相同。要想避免由於資料庫或表名的大小寫造成的數據轉移問題,可使用兩個選項:
• 在任何系統者判陸中可以使用lower_case_tables_name=1。使用該選項的不利之處是當使用SHOW TABLES或SHOW DATABASES時,看不出名字原來是用大寫還是小寫。
• 在Unix中使用lower_case_tables_name=0,在Windows中使用lower_case_tables_name=2。這樣了可以保留資料庫名和表名的大小寫。不利之處是必須確保在Windows中查詢總是用正確大小寫引用資料庫名和表名。如果將查詢轉移到Unix中,由於在Unix中大小寫很重要,如果大小寫不正確,它們不工作。
例外:如果你正使用InnoDB表,在任何平台上均應將lower_case_tables_name設置為1,以強制將名轉換為小寫。
請注意在Unix中將lower_case_tables_name設置為1之前,重啟mysqld之前,必須先將舊的資料庫名和表名轉換為小寫。
⑻ 如何優化SQL語句
一、問題的提出
在應用系統開發初期,由於開發資料庫數據比較少,對於查詢SQL語句,復雜視圖的的編寫等體會不出SQL語句各種寫法的性能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中數據的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中一個很重要的方面就是SQL語句的優化。對於海量數據,劣質SQL語句和優質SQL語句之間的速度差別可以達到上百倍,可見對於一個系統不是簡單地能實現其功能就可,而是要寫出高質量的SQL語句,提高系統的可用性。
在多數情況下,Oracle使用索引來更快地遍歷表,優化器主要根據定義的索引來提高性能。但是,如果在SQL語句的where子句中寫的SQL代碼不合理,就會造成優化器刪去索引而使用全表掃描,一般就這種SQL語句就是所謂的劣質SQL語句。在編寫SQL語句時我們應清楚優化器根據何種原則來刪除索引,這有助於寫出高性能的SQL語句。
二、SQL語句編寫注意問題
下面就某些SQL語句的where子句編寫中需要注意的問題作詳細介紹。在這些where子句中,即使某些列存在索引,但是由於編寫了劣質的SQL,系統在運行該SQL語句時也不能使用該索引,而同樣使用全表掃描,這就造成了響應速度的極大降低。
1.
IS
NULL
與
IS
NOT
NULL
不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會從索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高性能。
任何在where子句中使用is
null或is
not
null的語句優化器是不允許使用索引的。
2.
聯接列
對於有聯接的列,即使最後的聯接值為一個靜態值,優化器是不會使用索引的。我們一起來看一個例子,假定有一個職工表(employee),對於一個職工的姓和名分成兩列存放(FIRST_NAME和LAST_NAME),現在要查詢一個叫比爾.柯林頓(Bill
Cliton)的職工。
下面是一個採用聯接查詢的SQL語句,
select
*
from
employss
where
first_name||''||last_name
='Beill
Cliton';
上面這條語句完全可以查詢出是否有Bill
Cliton這個員工,但是這里需要注意,系統優化器對基於last_name創建的索引沒有使用。
當採用下面這種SQL語句的編寫,Oracle系統就可以採用基於last_name創建的索引。
***
where
first_name
='Beill'
and
last_name
='Cliton';
.
帶通配符(%)的like語句
同樣以上面的例子來看這種情況。目前的需求是這樣的,要求在職工表中查詢名字中包含cliton的人。可以採用如下的查詢SQL語句:
select
*
from
employee
where
last_name
like
'%cliton%';
這里由於通配符(%)在搜尋詞首出現,所以Oracle系統不使用last_name的索引。在很多情況下可能無法避免這種情況,但是一定要心中有底,通配符如此使用會降低查詢速度。然而當通配符出現在字元串其他位置時,優化器就能利用索引。在下面的查詢中索引得到了使用:
select
*
from
employee
where
last_name
like
'c%';
4.
Order
by語句
ORDER
BY語句決定了Oracle如何將返回的查詢結果排序。Order
by語句對要排序的列沒有什麼特別的限制,也可以將函數加入列中(象聯接或者附加等)。任何在Order
by語句的非索引項或者有計算表達式都將降低查詢速度。
仔細檢查order
by語句以找出非索引項或者表達式,它們會降低性能。解決這個問題的辦法就是重寫order
by語句以使用索引,也可以為所使用的列建立另外一個索引,同時應絕對避免在order
by子句中使用表達式。
5.
NOT
我們在查詢時經常在where子句使用一些邏輯表達式,如大於、小於、等於以及不等於等等,也可以使用and(與)、or(或)以及not(非)。NOT可用來對任何邏輯運算符號取反。下面是一個NOT子句的例子:
...
where
not
(status
='VALID')
如果要使用NOT,則應在取反的短語前面加上括弧,並在短語前面加上NOT運算符。NOT運算符包含在另外一個邏輯運算符中,這就是不等於(<>)運算符。換句話說,即使不在查詢where子句中顯式地加入NOT詞,NOT仍在運算符中,見下例:
...
where
status
<>'INVALID';
對這個查詢,可以改寫為不使用NOT:
select
*
from
employee
where
salary<3000
or
salary>3000;
雖然這兩種查詢的結果一樣,但是第二種查詢方案會比第一種查詢方案更快些。第二種查詢允許Oracle對salary列使用索引,而第一種查詢則不能使用索引。
雖然這兩種查詢的結果一樣,但是第二種查詢方案會比第一種查詢方案更快些。第二種查詢允許Oracle對salary列使用索引,而第一種查詢則不能使用索引。
⑼ oracle 區別大小寫嗎
不區分大小寫,關鍵字、用戶、密碼 、欄位名 、表名、序列名 、觸發器名等是不區分的,我們平時進入都是大小寫隨便輸入的表名,欄位名,關鍵字大小寫忽略表名,欄位名不能使用關鍵字,表名,欄位名不可以使用數字開頭,中間不能出現特殊符號表名,欄位名長度不能超過30個字元表名,欄位名定義需要有含義。具體欄位值區分大小寫。而scott是給初學者學習的用戶,學習者可以用Scott登錄系統,注意scott用戶登錄後,就可以使用Oracle提供的資料庫和數據表,這些都是oracle提供。顫纖辯
(9)sql大小寫敏感擴展閱讀
Oracle資料庫中使用的都是sql語句,語法差異並不大。而sql語句對於大小寫並不敏感,也就是說sql語句的語法可以任意使用。除了sql語句以外,我們還有自己的元素,比如表名、欄位名,還有我們需要存入的數據,它們的大小寫是需要DBM來管理的。
system、sys、scott,當中system和sys的差別在與是否能創建資料庫,sys用戶登錄才幹夠豎襲創建資料庫,而scott是給剛開始學習的人茄缺學習的用戶。學習者能夠用Scott登錄系統,注意scott用戶登錄後,就能夠使用Oracle提供的資料庫和數據表,這些都是oracle提供的。
⑽ SQL語句為什麼是大寫
在oracle里,如果同樣的一條語句,但大小寫不同的話,oracle會認為這是2個不同的SQL。所以oracle會對這2個SQL語句解析兩次。這樣就導致了buffer hit的命中率和soft parse的百分比。如果有很多這樣的情況發生,會導致oracle整體性能的下降。
所以強烈建議制定SQL的書寫規范