Oracle建立表語句語法詳解及示例

2022-03-16 05:43:50 字數 3752 閱讀 6537

建立表(create table)語法詳解

1. oracle常用的字段型別

oracle常用的字段型別有

varchar2 (size) 可變長度的字串, 必須規定長度

char(size) 固定長度的字串, 不規定長度預設值為1

number(p,s) 數字型p是位數總長度, s是小數的長度, 可存負數

最長38位. 不夠位時會四捨五入.

date 日期和時間型別

lob 超長字元, 最大可達4g

clob 超長文字字串

blob 超長二進位制字串

bfile 超長二進位制字串, 儲存在資料庫外的檔案裡是唯讀的.

數字字段型別位數及其四捨五入的結果

原始數值1234567.89

數字字段型別位數 儲存的值

number 1234567.89

number(8) 12345678

number(6) 錯

number(9,1) 1234567.9

number(9,3) 錯

number(7,2) 錯

number(5,-2) 1234600

number(5,-4) 1230000

number(*,1) 1234567.9

2. 建立表時給字段加預設值 和約束條件

建立表時可以給字段加上預設值

例如 : 日期字段 default sysdate

這樣每次插入和修改時, 不用程式操作這個欄位都能得到動作的時間

建立表時可以給字段加上約束條件

例如: 非空 not null

不允許重複 unique

關鍵字 primary key

按條件檢查 check (條件)

外來鍵 references 表名(欄位名)

3. 建立表的例子

create table dept(

eptno number(2) constraint pk_dept primary key,

dname varchar2(14),

loc varchar2(13)) ;

create table region(

id number(2) not null primary key,

postcode number(6) default '0' not null,

areaname varchar2(30) default ' ' not null);

4. 建立表時的命名規則和注意事項

1)表名和欄位名的命名規則:必須以字母開頭,可以含符號a-z,a-z,0-9,_,$,#

2)大小寫不區分

3)不用sql裡的保留字, 一定要用時可用雙引號把字串括起來.

4)用和實體或屬性相關的英文符號長度有一定的限制

注意事項:

1)建表時可以用中文的欄位名, 但最好還是用英文的欄位名

2)建立表時要把較小的不為空的字段放在前面, 可能為空的字段放在後面

3)建表時如果有唯一關鍵字或者唯一的約束條件,建表時自動建了索引

4)乙個表的最多字段個數也是有限制的,254個.

5. 約束名的命名規則和語法

約束名的命名規則約束名如果在建表的時候沒有指明,系統命名規則是sys_cn(n是數字)

約束名字串的命名規則同於表和欄位名的命名規則

6. 使用約束時的注意事項

約束裡不能用系統函式,如sysdate和別的表的字段比較

可以用本表內字段的比較

想在事務處理後, 做約束的

檢查sql> alter session set constraints deferred.

7. 由實體關係圖到建立表的例子 s_dept

前提條件:已有region表且含唯一關鍵字的字段id

sql> create table s_dept

(id number(7)

constraint s_dept_id_pk primary key,

name varchar2(25)

constraint s_dept_name_nn not null,

region_id number(7)

constraint s_dept_region_id_fk references region (id),

constraint s_dept_name_region_id_uk unique(name, region_id));

8. 較複雜的建立表例子

sql> create table s_emp

(id number(7)

constraint s_emp_id_pk primary key,

last_name varchar2(25)

constraint s_emp_last_name_nn not null,

first_name varchar2(25),

userid varchar2(8)

constraint s_emp_userid_nn not null

constraint s_emp_userid_uk unique,

start_date date default sysdate,

comments varchar2(25),

manager_id number(7),

title varchar2(25),

dept_id number(7)

constraint s_emp_dept_id_fk references s_dept(id),

salary number(11,2),

commission_pct number(4,2)

constraint s_emp_commission_pct_ck check

(commission_pct in(10,12.5,15,17.5,20)));

8. 通過子查詢建表

通過子查詢建表的例子

sql>create table emp_41 as select id, last_name, userid, start_date

from s_emp where dept_id = 41;

sql> create table a as select * from b where 1=2;

只要表的結構.

10. 用子查詢建表的注意事項

1)可以關連多個表及用集合函式生成新錶,注意選擇出來的字段必須有合法的欄位名稱,且不能重複。

2)用子查詢方式建立的表,只有非空not null的約束條件能繼承過來, 其它的約束條件和預設值都沒有繼承過來.

3)根據需要,可以用alter table add constraint ……再建立其它的約束條件,如primary key等.

11. foreign key的可選引數on delete cascade

在建立foreign key時可以加可選引數:

on delete cascade它的含義是如果刪除外來鍵主表裡的內容,子表裡相關的內容將一起被刪除.

如果沒有on delete cascade引數,子表裡有內容,父表裡的主關鍵字記錄不能被刪除掉.

12. 如果資料庫表裡有不滿足的記錄存在,建立約束條件將不會成功.

13. 給表建立和刪除同義詞的例子

sql> create synonym d_sum

2 for dept_sum_vu;

sql> create public synonym s_dept

2 for alice.s_dept;

sql> drop synonym s_dept;

Oracle建立表語句語法詳解

建立表 create table 語法詳解 1.oracle常用的字段型別 oracle常用的字段型別有 varchar2 size 可變長度的字串,必須規定長度 char size 固定長度的字串,不規定長度預設值為 number p,s 數字型p是位數總長度,s是小數的長度,可存負數 最長38位...

Oracle建立表語法 create

建立oracle表 使用create關鍵字 1 建立新錶 use 資料庫 在那個資料庫中建表 create table 表名 欄位名1 列名 資料型別 列的特徵,欄位名2 列名 資料型別 列的特徵 not null 2 建立帶有主鍵約束的表語法 create table 表名 欄位名1 列名 資料型...

Oracle建表語法

1 建立表的語句 1 建立模擬的資料表 1.1.建立學生表student create table student stuid number not null 學生id stuname varchar2 10 notnull 名稱 gender varchar2 10 notnull 性別 age ...