首發微信公眾號:SQL資料庫運維
原文鏈接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd40da7a94e165ce4b4c6e70fb1360d51bed4b3566eee438b587fa231315d0a5a5b3&token=1491694448&lang=zh_CN#rd
Oracle表是Oracle資料庫的核心,是存盤資料的邏輯基礎,Oracle表是一個二維的資料結構,由列欄位和對應列的資料構成一個資料存盤的結構,可以簡單看成行和列的二維表,列代表著Oracle欄位(column),行代表著一行資料(即一條資料記錄),
但是在建立Oracle資料表之前,我們需要先了解下Oracle欄位資料型別,根據列欄位不同的屬性,使用不同的資料型別進行Oracle表的建立,常用的Oracle列欄位的資料型別如下:

方法一:CREATE TABLE 語法
CREATE TABLE schema_name.table_name ( column_1 data_type column_constraint, column_2 data_type column_constraint, ... table_constraint );
首先,在CREATE TABLE子句中,指定新表所屬的表名和模式名稱,
其次,在圓括號內列出所有列,如果一個表有多個列,則需要用逗號分隔每個列的定義,列定義包括列名,后跟它的資料型別,例如NUMBER,VARCHAR2和列約束,如NOT NULL,主鍵,約束檢查等,
注意:請注意用戶權限問題,必須具有CREATE TABLE系統特權才能在模式中創建新表,并使用CREATE ANY TABLE系統特權在其他用戶的模式中創建新表,除此之外,新表的所有者必須具有包含新表或UNLIMITED TABLESPACE系統特權的表空間的配額,權限授權可參考:Oracle用戶創建、賦權、查詢及洗掉操作(點擊可跳轉至文章查看)
在我們之前創建的JT_CS用戶下創建表,一定要有CREATE TABLE權限,不然無法創建資料表,
創建stuinfo(學生資訊表)
1 --實體建表stuinfo 2 create table JT_CS.stuinfo 3 ( 4 stuid varchar2(11) not null,--學號:'S'+班號(7位數)+學生序號(3位數)(不能為空)SC200101001 5 stuname varchar2(50) not null,--學生姓名(不能為空) 6 sex char(1) not null,--性別(不能為空)1(男)、2(女) 7 age number(2) not null,--年齡(不能為空) 8 classno varchar2(7) not null,--班號:'C'+年級(4位數)+班級序號(2位數)(不能為空)C200101 9 stuaddress varchar2(100) default '地址未錄入',--地址 (不填或為空時默認填入‘地址未錄入‘) 10 grade char(4) not null,--年級(不能為空) 11 enroldate date,--入學時間 12 idnumber varchar2(18) default '身份證未采集' not null--身份證(不能為空) 13 ) 14 15 --stuinfo存盤的表空間是users,storage表示存盤引數:區段(extent)一次擴展64k,最小區段數為1,最大的區段數不限制, 16 tablespace USERS 17 storage 18 ( 19 initial 64K 20 minextents 1 21 maxextents unlimited 22 ); 23 24 -- Add comments to the table 25 --comment on table 是給表名進行注釋 26 comment on table JT_CS.stuinfo 27 is '學生資訊表'; 28 -- Add comments to the columns 29 --comment on column 是給表欄位進行注釋, 30 comment on column JT_CS.stuinfo.stuid 31 is '學號'; 32 comment on column JT_CS.stuinfo.stuname 33 is '學生姓名'; 34 comment on column JT_CS.stuinfo.sex 35 is '學生性別'; 36 comment on column JT_CS.stuinfo.age 37 is '學生年齡'; 38 comment on column JT_CS.stuinfo.classno 39 is '學生班級號'; 40 comment on column JT_CS.stuinfo.stuaddress 41 is '學生住址'; 42 comment on column JT_CS.stuinfo.grade 43 is '年級'; 44 comment on column JT_CS.stuinfo.enroldate 45 is '入學時間'; 46 comment on column JT_CS.stuinfo.idnumber 47 is '身份證號';

通過上面Crate Table命令創建了stuinfo學生資訊表后,還可以繼續給表添加相應的約束來保證表資料的準確性,比如:學生的年齡不能存在大齡的歲數,可能是錯誤資料、性別不能填入不是1(男)、2(女)之外的資料等,
添加stuinfo(學生資訊表)約束
--添加約束 --把stuid當做主鍵,主鍵欄位的資料必須是唯一性的(學號是唯一的) alter table JT_CS.STUINFO add constraint pk_stuinfo_stuid primary key (STUID); -- --給欄位年齡age添加約束,學生的年齡只能0-60歲之內的 alter table JT_CS.STUINFO add constraint ch_stuinfo_age check (age>0 and age<=60); --性別不能填入不是1(男)、2(女)之外的資料 alter table JT_CS.STUINFO add constraint ch_stuinfo_sex check (sex='1' or sex='2'); --年級 alter table JT_CS.STUINFO add constraint ch_stuinfo_GRADE check (grade>='2000' and grade<='9999');
方法二:CREATE TABLE AS 語法
除了上邊Create Table 陳述句可以創建資料表以外,使用Create Table AS陳述句一樣可以通過復制現有表的列從現有表來創建新表,同時,Create Table 表名 as select 陳述句也可以實作對select查詢的結果進行快速備份,
--語法:SELECT陳述句可指定列或添加where條件 CREATE TABLE new_table AS (SELECT * FROM old_table);
CREATE TABLE JT_CS.STUINFO_01 AS (SELECT * FROM JT_CS.STUINFO);

關注“SQL資料庫運維”,后臺或瀏覽至公眾號文章底部點擊“發訊息”回復關鍵字:進群,帶你進入高手如云的技術交流群,后臺回復關鍵字:SQL,獲取學習資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533571.html
標籤:其他
