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

锦通  论坛元老 | 2022-11-14 20:32:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1584|帖子 1584|积分 4752

首发微信公众号: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 语法
  1. CREATE TABLE schema_name.table_name (
  2.     column_1 data_type column_constraint,
  3.     column_2 data_type column_constraint,
  4.     ...
  5.     table_constraint
  6. );
复制代码
首先,在CREATE TABLE子句中,指定新表所属的表名和模式名称。
其次,在圆括号内列出所有列。如果一个表有多个列,则需要用逗号分隔每个列的定义。列定义包括列名,后跟它的数据类型,例如NUMBER,VARCHAR2和列约束,如NOT NULL,主键,约束检查等。
注意:请注意用户权限问题,必须具有CREATE TABLE系统特权才能在模式中创建新表,并使用CREATE ANY TABLE系统特权在其他用户的模式中创建新表。除此之外,新表的所有者必须具有包含新表或UNLIMITED TABLESPACE系统特权的表空间的配额。权限授权可参考:Oracle用户创建、赋权、查询及删除操作(点击可跳转至文章查看)
在我们之前创建的JT_CS用户下创建表,一定要有CREATE TABLE权限,不然无法创建数据表。
创建stuinfo(学生信息表)
  1. 1 --实例建表stuinfo
  2. 2 create table JT_CS.stuinfo
  3. 3 (
  4. 4   stuid      varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(不能为空)SC200101001
  5. 5   stuname    varchar2(50) not null,--学生姓名(不能为空)
  6. 6   sex        char(1) not null,--性别(不能为空)1(男)、2(女)
  7. 7   age        number(2) not null,--年龄(不能为空)
  8. 8   classno    varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)(不能为空)C200101
  9. 9   stuaddress varchar2(100) default '地址未录入',--地址 (不填或为空时默认填入‘地址未录入‘)
  10. 10   grade      char(4) not null,--年级(不能为空)
  11. 11   enroldate  date,--入学时间
  12. 12   idnumber   varchar2(18) default '身份证未采集' not null--身份证(不能为空)
  13. 13 )
  14. 14
  15. 15 --stuinfo存储的表空间是users,storage表示存储参数:区段(extent)一次扩展64k,最小区段数为1,最大的区段数不限制。
  16. 16 tablespace USERS
  17. 17   storage
  18. 18   (
  19. 19     initial 64K
  20. 20     minextents 1
  21. 21     maxextents unlimited
  22. 22   );
  23. 23   
  24. 24 -- Add comments to the table
  25. 25 --comment on table 是给表名进行注释
  26. 26 comment on table JT_CS.stuinfo
  27. 27   is '学生信息表';
  28. 28 -- Add comments to the columns
  29. 29 --comment on column 是给表字段进行注释。
  30. 30 comment on column JT_CS.stuinfo.stuid
  31. 31   is '学号';
  32. 32 comment on column JT_CS.stuinfo.stuname
  33. 33   is '学生姓名';
  34. 34 comment on column JT_CS.stuinfo.sex
  35. 35   is '学生性别';
  36. 36 comment on column JT_CS.stuinfo.age
  37. 37   is '学生年龄';
  38. 38 comment on column JT_CS.stuinfo.classno
  39. 39   is '学生班级号';
  40. 40 comment on column JT_CS.stuinfo.stuaddress
  41. 41   is '学生住址';
  42. 42 comment on column JT_CS.stuinfo.grade
  43. 43   is '年级';
  44. 44 comment on column JT_CS.stuinfo.enroldate
  45. 45   is '入学时间';
  46. 46 comment on column JT_CS.stuinfo.idnumber
  47. 47   is '身份证号';
复制代码

 通过上面Crate Table命令创建了stuinfo学生信息表后,还可以继续给表添加相应的约束来保证表数据的准确性。比如:学生的年龄不能存在大龄的岁数,可能是错误数据、性别不能填入不是1(男)、2(女)之外的数据等。
添加stuinfo(学生信息表)约束
[code]--添加约束--把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='2000' and grade

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表