數據庫服務器字符集select * from nls_database_parameters,其來源于props$,是表示數據庫的字符集。
成都創新互聯公司是專業的新鄭網站建設公司,新鄭接單;提供成都網站制作、網站設計,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行新鄭網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
客戶端字符集環境select * from nls_instance_parameters,其來源于v$parameter,
表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表
會話字符集環境select * from nls_session_parameters,其來源于v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。如果多個設置存在的時候,alter session環境變量注冊表參數文件
字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
涉及三方面的字符集,
1. oracel server端的字符集;
2. oracle client端的字符集;
3. dmp文件的字符集。
在做數據導入的時候,需要這三個字符集都一致才能正確導入。
2.1 查詢oracle server端的字符集
有很多種方法可以查出oracle server端的字符集,比較直觀的查詢方法是以下這種:
SQL select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQLselect userenv(‘language’) from dual;
AMERICAN _ AMERICA. ZHS16GBK
2.2 如何查詢dmp文件的字符集
用oracle的exp工具導出的dmp文件也包含了字符集信息,dmp文件的第2和第3個字節記錄了dmp文件的字符集。如果dmp文件不大,比如只有幾M或幾十M,可以用UltraEdit打開(16進制方式),看第2第3個字節的內容,如0354,然后用以下SQL查出它對應的字符集:
SQL select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
如果dmp文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然后用上述SQL也可以得到它對應的字符集。
2.3 查詢oracle client端的字符集
在windows平臺下,就是注冊表里面相應OracleHome的NLS_LANG。還可以在dos窗口里面自己設置,
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK
這樣就只影響這個窗口里面的環境變量。
在unix平臺下,就是環境變量NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果檢查的結果發現server端與client端字符集不一致,請統一修改為同server端相同的字符集。
補充:
(1).數據庫服務器字符集
select * from nls_database_parameters
來源于props$,是表示數據庫的字符集。
(2).客戶端字符集環境
select * from nls_instance_parameters
其來源于v$parameter,表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表
(3).會話字符集環境
select * from nls_session_parameters
來源于v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
(4).客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。
如果多個設置存在的時候,NLS作用優先級別:Sql function alter session 環境變量或注冊表 參數文件 數據庫默認參數
字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
表名改成大寫的試試。
select dbms_metadata.get_ddl('TABLE','ADMINIUSER') from dual
Oracle:數據定義語言(DDL)
1、命名規則和約定:
表名和列名的長度最多為30個字符
表名和列名必須以字母打頭
表名或者列名中不允許有空格和*
Oracle服務器的保留字也不能作為表名或列名
2、數據類型:
創建數據表時,要為表中的每一列分配一個數據類型。數據類型指定了將要存儲在此列中的數據的類型。通過為一列提供一種數據類型,可以避免在此列中存儲錯誤類型的數據
Varchar2:VARCHAR2是一種字符型數據類型,用來在一列中存儲可變長度的字母數字混合的數據。VARCHAR2必須指定最大長度,最小長度和默認長度都是一個字符。指定的長度要置于圓括號當中,例如VARCHAR(20)。如果數據比指定的長度短,那么只存儲數據值,并不在值的尾部添加空格。但是,如果輸入的值比指定的長度長,則會產生錯誤,并不會將較長的值截短。如果某一列的值沒有固定的長度,那么最適合使用VARCHAR2數據類型
Char:CHAR類型是一種字符型數據類型,用來在一列中存儲固定長度的字母數字混合的數據。默認長度和最小長度都是一個字符。如果輸入的值比指定的長度短,則在其尾部添加空格,以使其長度等于指定的長度;如果輸入的值比指定的長度長,則會發生錯誤。CHAR類型適用于固定長度的值
Number:NUMBER數據類型用來存儲負數、正數、整數、定點數和浮點數。NUMBER數據類型可以用于任何要進行數學計算的列。當某一列使用Number類型時,可以指定其精度和標度。精度是一個數字的有意義數字的總數,包括小數點左右兩邊的數字,但指定精度時小數點不計算在內。標度是小數點右邊數字的總數
整數類型全部是數字,沒有小數部分。如果一列定義為整數類型,則只需要提供精度的大小即可
定點小數類型的小數點右邊的數字為數是指定的
浮點小數類型的小數位為數是可變的。小數點前可以有任意位數字,或者也可以根本不出現小數點。將一列定義為這種類型時不用隨同NUMBER類型一起來指定標度和精度
Date:DATE類型用于存儲日期和時間值。DATE類型的列中存儲著日、月、世紀、小時、分鐘和秒。對DATE類型不需要指定大小。
LONG:LONG類型用于可變長度的字符數據,最大為2G Byte。一張數據表中只能有一列定義為LONG類型,定義LONG類型時,不需要指定其大小
NCHAR:NCHAR類型與CHAR類型相似,但它對每一個字符都使用兩個字節的二進制編碼,而CHAR類型則對每一個字符使用一個字節的ACSII編碼,它只能表示256個不同的字符
CLOB:這一字符大對象數據類型用于存儲單字節字符數據,最大為4G個字節
NCLOB:這一字符大對象數據類型使用2 Byte的字符代碼
BLOB:二進制大對象數據類型用于存儲二進制數據,最大為4G Byte
3、約束
約束是對數據表施加規則。約束有助于我們使自己的數據庫具有完整性。
完整性規則:
(1)實體完整性:主鍵中的列不能是空(null),主鍵提供了可以惟一地識別一行或一個實體的方法。
(2)引用完整性:外鍵值或者是空值,或者必須作為引用表的主鍵值而存在
Oracle使用約束來實現關系數據庫的完整性規則,并在單個列級別實現數據完整性。無論何時,當對數據表中的一行或一條記錄進行插入、更新或刪除操作時,都必須滿足約束條件,這樣其操作才能成功
3.1、約束類型
(1)完整性約束:定義數據表中的主鍵和外鍵,以及此外鍵所引用的主鍵
(2)值約束:如果不允許值為空,如果要求值是惟一的,以及如果一個列的值只允許是一組確定的值,那么就需要定義值約束
3.2、命名約束
Oracle通過內部名稱或用戶自定義的名稱來識別約束,對于每一個用戶帳號,每一個約束名都必須是惟一的。一個用戶不能在兩張不同的數據表上創建具有相同名稱的約束。一般情況下,命名約束時采用如下的約定形式:
table name_column name_constraint type
這里table name是要定義約束的表名,column name是要應用約束的列名,constraint type是用縮寫形式來表示的約束類型
約束與縮寫的對應形式
PRIMARY KEY:pk
FOREIGN KEY:fk
UNIQUE:uk
CHECK:ck
NOT NULL:nn
如果用戶沒有命名一個約束,則Oracle服務器會自動生成一個約束名,所用的格式是SYS_Cn,這里n是任意一個惟一的數字
3.3、定義約束
可以在創建表時創建約束,也可以在表創建完成之后再添加約束。約束的定義有兩個級別:
列級別:一個列級別的約束只涉及單獨一列,它的定義與列的定義同時進行。除外鍵約束和復合主鍵約束外,其他類型的約束均可以在列級別進行定義通用的語法格式是:
Column datatype [CONSTRAINT constraint_name] constraint_type
表級別:一個表級別的約束涉及一列或多列,它的定義與列的定義是分開進行的。一般來說,所有列的定義都完成之后才定義表級別約束。除非空約束,所有約束均可以在表級別進行定義。通用的語法格式是:
[CONSTRAINT constraint_name] constraint_type(Column name)
3.3.1、主鍵約束
主鍵約束也稱為實體完整性約束。它為表創建一個主鍵。一張表只能有一個主鍵約束。無論是一列用作主鍵還是多列復合起來用作主鍵,主鍵只能是非空值,而且也只能有惟一的值。例如,N2公司數據庫的DEPT表將DeptId列用作主鍵,則在列級別定義約束如下所示:
DeptId NUMBER(2) CONSTRAINT dept_deptid_pk PRIMARY KEY
在表級別定義約束如下所示:
CONSTRAINT dept_deptid_pk PRIMARY KEY(DeptId)
3.3.2、外鍵約束
外鍵約束也稱為主鍵完整性約束。它使用一列或多列作為外鍵,建立了此外鍵與同一張表或者另一張表的主鍵之間的關系
要確定一張數據表的外鍵,其他被引用的表及其主鍵必須已經存在。雖然外鍵與被引用的主鍵列不需要具有相同的名稱,但是外鍵值必須與父表的主鍵值相匹配,或者外鍵值是空值
CONSTRAINT student_facultyid_fk FOREIGN KEY(FacultyId)REFERENCES faculty(FacultyId)
STUDENT標的FaultyId引用了FACULTY表的主鍵FacultyId
在結束FOREIGN KEY之前,還可以添加ON DELETE CASCADE子句,它不僅允許刪除父表中的記錄,而且還會同時刪除子表中依賴的記錄。在不使用ON DELETE CASCADE子句的情況下,如果子表引用父表中的記錄,那么就不能刪除父表中的這一行記錄
3.3.3、非空約束
非空約束確保一列具有一個值而且不是空值
3.3.4、惟一性約束
惟一性約束要求一列或一組列中的每一個值都是惟一的。如果惟一性約束應用于單一列,則此列只有惟一的值;如果惟一性約束應用于一組列,那么這組列合起來具有惟一的值。惟一性約束允許空值,除非此列也應用了NOT NULL非空約束
3.3.5、檢查約束
檢查約束定義了每一行都必須滿足的條件。一列可以有多個檢查約束,檢查約束既可以在列級別定義,也可以在表級別定義
CONSTRAINT dept_deptid_cc CHECK ((DeptId=10)and(DeptId=99))
3.3.6、非空檢查約束
非空約束也能夠作為檢查約束來聲明,它可以在列級別定義,也可以在表級別定義:
Name VARCHAR2(15) CONSTRAINT faculty_name_ck CHECK(Name IS NOT NULL)
3.3.7、DEFAULT默認值
默認值確保當向表中插入新的一行時,某一特定的列總是具有一個值。如果用戶輸入另一個值,則默認值就會被覆蓋,如果插入空值,那么就會使用默認值
State CHAR(2) DEFAULT ‘NJ’
4、創建Oracle數據表
CREATE TABLE語句的通用語法格式是:
CREATE TABLE [schema.] tablename
(column1 datatype [CONSTRAINT constraint_name] constraint_type,
column2 datatype [CONSTRAINT constraint_name] constraint_type,…
[CONSTRAINT constraint_name] constraint_type(Column name,…),…)
schema是可選的,它與用戶的注冊名相同
tablename是用戶指定的表名
column是單個列的名字
datatype是該列的數據類型和大小
constraint_name是用戶提供的約束名
constraint_type是指完整性約束或值約束
每個列都可以有零個、一個或多個在列級別定義的約束,一般情況下,表級別約束是在所有列定義完成之后才聲明
4.1、CREATE TABLE語句中的STORAGE子句
CREATE TABLE語句中可以包括STORAGE子句,但它是可選的。在創建數據庫時,使用該子句,由參數INITIAL定義為數據表分配的初始磁盤空間,另外還可以使用另一個參數NEXT,它在數據表對分配的初始磁盤空間已經用完的情況下,定義再追加分配多少磁盤空間。
CREATE TABLE sample(Id NUMBER(3),Name VARCHAR(25))
TABLESPACE CIS_DATA
STORAGE(INITIAL 1M NEXT 100K)
PCTFREE 20;//空閑百分比
5、顯示數據表信息
當用戶創建了數據庫中的一張表或多張表時,Oracle用自己的數據字典來跟蹤所有這些表。Oracle提供了SQL語句和SQL *Plus命令可以查看Oracle的數據字典表中的信息
5.1、查看用戶的表名
SELECT TABLE_NAME FROM USER_TABLES;
Oracle創建系統表來存儲用戶和用戶對象的有關信息,USER_TABLES是一個Oracle系統表,TABLE_NAME是此表中的一個列
5.2、查看表結構
DESCRIBE 表名
5.3、查看約束信息
Oracle的數據字典表USER_CONSTRAINTS存儲著我們為每一列輸入的約束信息
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
WHERE TABLE_NAME=’STUDENT’;
表明必須采用大寫字母,因為Oracle是以大寫字母保存表名的
5.4、查看表空間信息
一個表空間包括一個或多個物理數據文件。我們可以獲得使用數據字典視圖USER_TABLESPACES所能得到的所有表空間的有關信息。
數據字典視圖USER_USERS為用戶提供了其賬號的有關信息,以及永久的臨時的表空間
5.5、注釋表和列
創建數據表時可以為該表及其列添加注釋,添加注釋的目的是為編寫文檔的方便,添加注釋所使用的語句是COMMENT語句。例如:
COMMENT ON TABLE student IS ‘Table holds students for INDO-S College’
COMMENT ON COLUMN employee.Lname IS ‘last name’
可以分別使用數據字典視圖ALL_TAB_COMMENTS 和ALL_COL_COMMENTS,查看表和列的所有注釋信息
6、修改已存在的數據表
要修改已經存在的表,某些修改是允許的,有些是不允許的
6.1、向已存在的表添加新列
ALTER TABLE tablename
ADD colname datatype;
6.2、修改已存在的列
ALTER TABLE tablename
MODIFY colname newdatatype;
6.3、添加一個約束
ALTER TABLE tablename
ADD [CONSTRAINT constraint_name] constraint_type(Column name);
6.4、刪除一列
ALTER TABLE tablename
DROP COLUMN columnname;
6.5、刪除一個約束
ALTER TABLE tablename
DROP CONSTRAINT constraintname;
6.6、啟動/禁用約束
啟用或禁用約束的格式是:
ALTER TABLE tablename
ENABLE | DISABLE CONSTRAINT constraintname;
6.7、重新命名一列
ALTER TABLE tablename RENAME COLUMN oldname TO newname;
6.8、重新命名一個約束
ALTER TABLE tablename RENAME CONSTRAINT oldname TO newname;
6.9、修改表的存儲屬性
ALTER TABLE tablename STORAGE(NEXT nK)
7、刪除數據表
當刪除一張數據表時,表中所有的數據以及表結構將被永久性地刪除
DROP TABLE tablename;
8、重新命名數據表
RENAME oldtablename TO newtablename;
Oracle的查詢語言當然是所有數據庫公認的SQL語句了;
Oracle的編程語言是PL/SQL語言,這是Oracle獨有的~~
1、SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' ;
--查詢oracle 相關參數
2、SELECT * FROM NLS_DATABASE_PARAMETERS ;
擴展資料:
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。
可以說Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用于各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。
ORACLE數據庫系統是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是目前最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。
比如SilverStream就是基于數據庫的一種中間件。ORACLE數據庫是目前世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。
但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
Oracle數據庫最新版本為Oracle Database 12c。Oracle數據庫12c?引入了一個新的多承租方架構,使用該架構可輕松部署和管理數據庫云。
此外,一些創新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個數據庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數據和對數據分層。
這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle數據庫12c?成為私有云和公有云部署的理想平臺。
參考資料:Oracle數據庫--百度百科
網頁名稱:oracle如何查看語言,oracle查詢語言
瀏覽路徑:http://m.kartarina.com/article32/hsccsc.html
成都網站建設公司_創新互聯,為您提供網站導航、搜索引擎優化、用戶體驗、建站公司、企業網站制作、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯