大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说oracle中新建数据表的两种方法是什么_怎么新建数据库表,希望您对编程的造诣更进一步.
首发微信公众号: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.cnblogs.com/since-1995/archive/2022/11/14/16890094.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4541.html