首页 > 数据库 >Oracle中新建数据表的两种方法

Oracle中新建数据表的两种方法

时间:2022-11-14 19:22:05浏览次数:71  
标签:CS comment -- column 数据表 新建 JT Oracle stuinfo

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

 

标签:CS,comment,--,column,数据表,新建,JT,Oracle,stuinfo
From: https://www.cnblogs.com/since-1995/p/16890094.html

相关文章

  • Oracle group by over(partition by order by)相关
    快速理解:groupby使用一个(多个)含重复数据的字段进行表数据合算(聚合),结果集展示聚合结果。partitionby同样适用于含重复数据的一个(多个)字段,但是不进行聚合,只是在结果集......
  • Oracle 数据库 19c Home 克隆
             众所周知,oracle数据库软件堆栈以部署起来复杂而著称,早期oracle8i/9i/10g/11g时代,数据库软件环境部署占据dba相当大的工作量,稍不慎很容易部署失败,造......
  • Oracle 用户创建、删除操作
    1、创建:createtablespacePANDORA_ADMINdatafile'PANDORA_ADMIN_TABLESPACE.dbf'size500Mautoextendonnext5Mmaxsizeunlimited;createuserPANDORA_ADMINI......
  • Oracle19c下载、安装及卸载
    1、官网下载地址:DatabaseSoftwareDownloads|Oracle  *安装zip文件,see all文件是对应客户端的下载位置(用于自学无需下载) 2、登陆Oracle账号,若无Oracle......
  • 关于IDEA新建Maven项目时,会卡死,无法实现新建问题的具体解决
    对于问题的描述在进行新建项目时,突然就出现了选择好一切之后,点击CREATE后,直接卡死停滞(对于一个菜菜来说,只能通过电脑重启来改变一下它无法动弹的状态了)对于该问题的解决......
  • Oracle常用优化16个技巧
    1.选择最有效率的表名顺序ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表drivingtable)将被最先处理。当ORACLE处理多个表时,会......
  • Oracle数据库,笔录!
    Oracle数据库,PL/SQL编程笔录PL/SQL:是Oracle对SQL语言过程的程序化拓展基本语法结构:[declare...声明变量]begin...程序块[Exception......
  • 关于vscode开发ue4新建工程后报错”无法使用 compilerPath“xxx”解析配置。 请改用“
    原因:compilerPath中的cl.exe路径含有空格例如我这里因此只能解析出空格之前的路径,进而报错解决方法:将compileCommands.json文件中cl.exe路径用"(转义的引号)包起来即......
  • oracle 19.3升级至19.16
    oracle19.3升级至19.16系统:CentOS7.9环境:单实例课题:oracle19.3升级至19.16说明:要升级19.16,OPatch版本需大于12.2.0.1.301、当前DB版本SQL>selectcomp_id,status,versio......
  • Oracle 19C学习 - 22. WITH AS 语句
    什么是WITHAS语句WITHAS相当于虚拟视图。WITHAS也叫做分解子查询或者片段子查询。定义一个SQL片段,该片段会被后面的SQL语句用到,可以近似看作一个可用的临时视图。......