Oracle中新建數據表的兩種方法

来源:https://www.cnblogs.com/since-1995/archive/2022/11/14/16890094.html
-Advertisement-
Play Games

首發微信公眾號:SQL資料庫運維 原文鏈接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd40da7 ...


首發微信公眾號: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,獲取學習資料。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 買賣股票的最好時機(一) 描述 假設你有一個數組prices,長度為n,其中prices[i]是股票在第i天的價格,請根據這個價格數組,返回買賣股票能獲得的最大收益 1.你可以買入一次股票和賣出一次股票,並非每天都可以買入或賣出一次,總共只能買入和賣出一次,且買入必須在賣出的前面的某一天 2.如果不 ...
  • 摘要 C/S端軟體,左側導航菜單+右側頁面切換的佈局很常見。 這篇文章介紹下使用ContentControl控制項和TabControl控制項如何實現基礎的頁面切換。 一、使用ContentControl實現頁面切換 頁面使用UserControl來實現。 基於MVVM框架的思想,利用數據綁定機制,將控 ...
  • 一、基本概念 線程安全(thread safe):指的是被任意多的線程同時執行,都可以保證正確性。 除基本類型外,很少有類型是線程安全的,線程安全的責任基本落在開發者身上,System.Collections.Concurrent命名空間下的類型的除外。 線程安全最常見的手段一般是使用【排它鎖】,將 ...
  • 一、概念 《Threading in C# 》(Joseph Albahari):https://www.albahari.com/threading/ 《Threading in C# 》中文翻譯(GKarch ):https://blog.gkarch.com/topic/threading.h ...
  • 核心思路是使用Region的求交集和並集的結果與原始Region對比 Winform項目自帶這個類庫,如果使用控制台,需要先在nuget安裝System.Drawing.Common /// <summary> /// 計算兩個形狀的關係 /// </summary> /// <param name ...
  • 前言 字元設備是Linux驅動中三大設備之一,字元(char)設備是個能夠像位元組流(類似文件)一樣被訪問的設備,由字元設備驅動程式來實現這種特性。字元設備驅動程式通常至少要實現open、close、read和write的系統調用。字元終端(/dev/console)和串口(/dev/ttyS0以及類 ...
  • 一、Installing RabbitMQ-3.10.2 on CentOS 7.9 1 地址 https://www.rabbitmq.com https://github.com/rabbitmq/rabbitmq-server https://github.com/rabbitmq/rabbi ...
  • ElasticSearch 常見問題 丈夫有淚不輕彈,只因未到傷心處。 1、說說 es 的一些調優手段。 僅索引層面調優手段: 1.1、設計階段調優 (1)根據業務增量需求,採取基於日期模板創建索引,通過 roll over API 滾動索引; (2)使用別名進行索引管理; (3)每天凌晨定時對索引 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...