關於oracle sql語句查詢時表名和欄位名要加雙引號的問題
阿新 • • 發佈:2020-07-16
關於oracle sql語句查詢時表名和欄位名要加雙引號的問題
用navicat視覺化建立了表,可是就是不能查到! 後來發現②語句可以查詢到①select * from user;
但是,我們如果給user加上雙引號就可以查到了!
②select * from "user";
難道oracle跟mysql等不同,查詢時候一定要加雙引號?那這樣不是很麻煩!於是經過查詢資料得出如下結論:
1、oracle表和欄位是有大小寫的區別。oracle預設是大寫,如果我們用雙引號括起來的就區分大小寫,如果沒有,系統會自動轉成大寫。
2、我們在使用navicat使用視覺化建立資料庫
1 2 3 4 5 |
DROP TABLE "ROOT" . "user" ;
CREATE TABLE "ROOT" . "user" (
"userid" NUMBER(2) NOT NULL
)
-------到這裡,我想那些總是用視覺化來建立表和欄位的人該吐槽navicat了。
|
3、我用sql語句進行建立表和欄位呢?
①不加雙引號建立變:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
CREATE TABLE "ROOT" .personal_user_table (
personal_id NUMBER(10) NOT NULL ,
login_name VARCHAR2(20 BYTE) NOT NULL ,
login_password VARCHAR2(20 BYTE) NOT NULL ,
register_time DATE NOT NULL ,
fullname VARCHAR2(20 BYTE) NOT NULL ,
sex CHAR (1 BYTE) NULL ,
id_card CHAR (18 BYTE) NULL ,
email VARCHAR2(30 BYTE) NULL ,
tel CHAR (11 BYTE) NULL ,
address VARCHAR2(64 BYTE) NULL ,
work_units VARCHAR2(64 BYTE) NULL ,
monthly_income NUMBER(8,2) NULL ,
bank_account CHAR (20 BYTE) NULL ,
credit_rating NUMBER(1) NULL
)
|
結果是查詢正常:
②加雙引號,跟我們使用navicat視覺化操作的結果一樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
CREATE TABLE "ROOT" . "personal_user_table" (
"personal_id" NUMBER(10) NOT NULL ,
"login_name" VARCHAR2(20 BYTE) NOT NULL ,
"login_password" VARCHAR2(20 BYTE) NOT NULL ,
"register_time" DATE NOT NULL ,
"fullname" VARCHAR2(20 BYTE) NOT NULL ,
"sex" CHAR (1 BYTE) NULL ,
"id_card" CHAR (18 BYTE) NULL ,
"email" VARCHAR2(30 BYTE) NULL ,
"tel" CHAR (11 BYTE) NULL ,
"address" VARCHAR2(64 BYTE) NULL ,
"work_units" VARCHAR2(64 BYTE) NULL ,
"monthly_income" NUMBER(8,2) NULL ,
"bank_account" CHAR (20 BYTE) NULL ,
"credit_rating" NUMBER(1) NULL
)
|
結果如下:
因此建議:
1.建議我們的視覺化操作者還是養成手寫sql語句的習慣,我們在建立的時候就不要使用了雙引號!這樣我們就可以到達像mysql等一樣不區分大小寫了。
3、比較笨的方法是資料表名字大寫,這樣也可以避免此問題