建表數據庫
1.建表語句語法
create table [schema.]table_name(
字段名 字段類型 [默認值] [列級約束],
字段名 字段類型 [默認值] [列級約束],
字段名 字段類型 [默認值] [列級約束],
....
[表級約束], [表級約束], [表級約束]
);oracle
2.schema
用來指定表建立到哪一個用戶下
建立s_test表到lucy用戶下?
create table lucy.s_test(...);
此操做須要權限。
create table 表名(..);
不加Schema默認建立到當前用戶下大數據
3.命名規則
1)必須以字母開頭
2)長度必須在1-30個字符之間
3)必須以字母、數字、下劃線、$、#組成
4)表名不可重複
5)不能使用oracle中的保留字spa
4.oracle中的數據類型
1)字符串類型
varchar 可變長字符串
任何一個數據庫中均可以使用的可變長字符串
varchar2 可變長字符串
是oracle特有的可變長字符串
比較節省內存
檢索效率較低
適用於字段值長度不定或差距較大的字段
好比:備註
char(長度) 不可變長字符串
浪費內存
檢索效率很高
適用於長度固定的字段 例如:電話 身份證號
cell_phone char(11)
clob 大數據字符串 2GB
在不一樣的字段類型存儲'Hello'字符串,
所佔用內存空間以下:
varchar2(10) 佔用5個內存
char(10) 佔用10個內存 視頻
2)數值類型
number 定義一個整數類型字段
number(p,s) 定義一個小數字段
p:總長度 s:小數點後的位數
整數位數 = p - s
number(p) 定義一個定長的整數類型
例如:number(10)最大可存儲的數字爲9999999999。
有一個字段要求整數部分9位,小數部分3位,
A. number(9,3)
b. number(12,3)
c. number(6,3)
3)日期類型
date
4)二進制類型
blob
保存二進制數據。例如,向數據庫中保存圖片、音樂、視頻等。圖片
5.默認值
1)默認值的做用:
當某個字段配置了默認值以後,
若是插入數據時未向該字段插入數值,
則會自動取默認值做爲該條數據的該字段值。內存
2)語法:
字段名 字段類型 default 默認值
例若有表和字段以下
s_student(id,name,age,dob);
聲明age字段默認值爲20?
age number default 20字符串
給dob字段聲明默認值爲2000年1月1號?
dob date default '01-1月-00'
dob date default to_date('2000-01-01','YYYY-MM-DD')table
6.列級約束
1)not null 非空約束
字段名 字段類型 not null
2)unique 惟一性約束
插入到該字段的值是表中該字段惟一的值。
字段名 字段類型 unique,
聲明電話號碼爲惟一性約束
cell_phone char(11) unique,
3)primary key 主鍵約束 實體性完整性約束
表中某一條數據的惟一標識
特色:非空惟一
字段名 字段類型 primary key,
4)foreign key 外鍵約束 參照性完整性約束
字段名 字段類型 references 表名(主鍵字段名),
外鍵所依賴的字段必須是那張表的主鍵
5)check 選擇性約束/檢查性約束
字段名 字段類型 check( 判斷條件 )
= > < >= <= between in
聲明年齡字段必須小於100?
age number check( age between 0 and 100 )
聲明性別字段必須在‘男’和‘女’之間選擇?
gender char(10) check( gender in('男','女') )
判斷條件中出現的字段必須是本字段test
7.給列級約束起名字
如何查看錶中添加了哪些列級約束?
當前用戶下添加的全部的列級約束信息都會
存放到一張user_constraints表當中。
查詢當前用戶下有哪些列級約束?
select constraint_name
from user_constraints;
若是不給約束起名字的話,系統會默認給他起一個名字
SYS_Cn
n表明某個數字
本身給約束起名字會代替系統默認的約束名
查詢某一張表的約束?
select constraint_name
from user_constraints
where table_name = 'TEST';//表名要大寫
建立一張表:
create table test(
id number primary key,
name varchar2(10) not null,
phone char(11) unique);
給列級約束起名的語法:
在字段聲明以後、約束類型聲明以前
加上constraint 約束名;
例如:給主鍵字段加約束名
id number constraint 約束名 primary key,
約束名的規範(建議):
表名_字段名_約束類型的簡寫
主鍵:PK
外鍵:FK
非空:NN
選擇性/檢查性:CK
惟一性:UK unique
一個字段能夠加多個列級約束
name varcar2(10) not null unique,
給s_stu表中的id添加主鍵約束而且給約束起名?
create table s_stu(
id number constraint s_stu_id_pk primary key,
.....
);
8.表級約束
列級約束和表級約束的關係:
列級約束中除了not null以外的約束均可以使用表級約束去實現。
除了列級約束能夠定義的內容以外,表級約束還可定義:
聯合主鍵
聯合外鍵
聯合惟一鍵
顧客表(顧客id,顧客姓名,顧客收貨地址.....)
商品表(商品id,商品名,商品單價,商品描述.....)
橋表:
訂單表(顧客id,商品id,商品數量)
1 1 10
1 5 20
2 3 10
1 1 20
create table s_shopcar(
cus_id number,
product_id number,
num number
);
表級約束:
constratin s_shopcar_cus_id_product_id_pk primary key(cus_id,product_id)
create table [schema.]table(
字段名 字段類型 [默認值] [列級約束],
字段名 字段類型 [默認值] [列級約束],
字段名 字段類型 [默認值] [列級約束],
....
[表級約束], [表級約束], [表級約束]
);
表級約束語法 constraint 約束名 約束類型(字段)
給id字段加上一個主鍵約束?
列級約束:
id number constraint test_id_pk primary key,
表級約束:
create table test(
id number,
name varchar2(10),
age number,
eid number //依賴於s_emp的id主鍵
constraint test_id_pk primary key(id),
constraint test_name_uk unique(name),
constraint test_eid_fk foreign key(emp_id) references 表名(主鍵)
);
刪除表:
drop table 表名;