首发微信公众号: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,获取学习资料。

Oracle中新建数据表的两种方法的更多相关文章

  1. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...

  2. WPF中在XAML中实现数据类型转换的两种方法

    熟悉数据绑定的朋友都知道,当我们在Model中获取一个对象的数据,常常需要对其进行数据转换后显示在UI界面上,比如你用bool类型存储了一个人的性别,但是在界面上却需要经过转化后显示为男或女: 今天又 ...

  3. Oracle中备份用户对象的两种方法

    方法1: 执行步骤: exp userid=用户名/密码@数据库名 file=c:\emp.dmp 使用当前用户导出 exp userid=sys/sys@数据库名 file=c:\emp.dmp o ...

  4. Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...

  5. oracle rename数据文件的两种方法

    oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报  分类: oracle(98)  版权声明:本文为博主原创文章,未经博主允许不 ...

  6. 在Oracle中执行动态SQL的几种方法

    转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...

  7. 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)

    Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...

  8. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  9. Oracle中获取执行计划的几种方法分析

    以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下     1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条S ...

随机推荐

  1. JAVA反序列化漏洞修复解决方法

    MyObject类建立了Serializable模块,而且重新写过了readObject()变量,仅有建立了Serializable模块的类的目标才能够被实例化,沒有建立此模块的类将无法使他们的任意状 ...

  2. uniapp小程序新版授权登录

    1.授权按钮: <view> <button class='login-btn' type='primary' @click="bindGetUserInfo"& ...

  3. Oracle_FDW 使用介绍

    本文以例子的形式介绍 KingbaseES(Postgresql)数据库如何通过 oracle_fdw 扩展访问Oracle数据库.以下例子在PG12.3 与 KingbaseES V8R6进行过实际 ...

  4. KingbaseES 转义字符

    在SQL标准中字符串是用单引号括起来的,在KingbaseES中遵守了该标准,如果在字符串中需要使用到单引号,就需要对其进行转义. 方式一:使用E和反斜杠进行转义 方式二:直接用一个单引号来转义 在K ...

  5. cmake 入门笔记

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16667896.html 1. cmake 是什么? 这些 ...

  6. Lua 支持虚函数的解决方案

    概述 lua本身没有提供类似C++虚函数机制,调用的父类方法调用虚函数可能会出现问题. 问题分析 分析这段代码和输出 local Gun = {} -- 示例,实际应用还要考虑构造,虚表等情况 fun ...

  7. Deepin20 LNMP环境搭建(又一个瞎折腾的经历)

    背景 最近头脑发热,想安装个Linux系统来办工,所以安装了Deepin20的系统,折腾了一天的LNMP的环境,记录一下瞎折腾的过程. lnmp 是一个常见的web开发的环境 nginx 如果安装过可 ...

  8. VLAN的配置

    1 vlan的概念和作用 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门等因素将它们组织起来.相互之间的通信就好像它们在同一个网段中一样. 虚拟 ...

  9. Python实验报告——第3章 流程控制语句

    实验报告 [实验目的] 1.掌握python中流程控制语句的使用,并能够应用到实际开发中. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第三章流程控制语句实例01-09,实战一到实 ...

  10. Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容

    使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...