Oracle创建表语句(Create table)语法详解及示例  

创建表(Create table)语法详解
1. ORACLE常用的字段类型ORACLE常用的字段类型有
VARCHAR2 (size) 可变长度的字符串, 必须规定长度
CHAR(size) 固定长度的字符串, 不规定长度默认值为1
NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数,最长38位. 不够位时会四舍五入.
DATE 日期和时间类型
LOB 超长字符, 最大可达4G
CLOB 超长文本字符串
BLOB 超长二进制字符串
BFILE 超长二进制字符串, 保存在数据库外的文件里是只读的.数字字段类型位数及其四舍五入的结果原始数值1234567.89
数字字段类型位数 存储的值
Number 1234567.89
Number(8) 12345678
Number(6) 错
Number(9,1) 1234567.9
Number(9,3) 错
Number(7,2) 错
Number(5,-2) 1234600
Number(5,-4) 1230000
Number(*,1) 1234567.92. 创建表时给字段加默认值 和约束条件创建表时可以给字段加上默认值
例如 : 日期字段 DEFAULT SYSDATE
这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件
例如: 非空 NOT NULL
不允许重复 UNIQUE
关键字 PRIMARY KEY
按条件检查 CHECK (条件)
外键 REFERENCES 表名(字段名)
3. 创建表的例子
CREATE TABLE DEPT(EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,DNAME VARCHAR2(14),LOC VARCHAR2(13)) ;CREATE TABLE region(ID number(2) NOT NULL PRIMARY KEY,postcode number(6) default '0' NOT NULL,areaname varchar2(30) default ' ' NOT NULL);4. 创建表时的命名规则和注意事项
1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#2)大小写不区分
3)不用SQL里的保留字, 一定要用时可用双引号把字符串括起来.
4)用和实体或属性相关的英文符号长度有一定的限制注意事项:
1)建表时可以用中文的字段名, 但最好还是用英文的字段名
2)创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面
3)建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引
4)一个表的最多字段个数也是有限制的,254个.
5. 约束名的命名规则和语法约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字)
约束名字符串的命名规则同于表和字段名的命名规则
6. 使用约束时的注意事项约束里不能用系统函数,如SYSDATE和别的表的字段比较可以用本表内字段的比较想在事务处理后, 做约束的检查
SQL> alter session set constraints deferred.7. 由实体关系图到创建表的例子 s_dept
前提条件:已有region表且含唯一关键字的字段idSQL> CREATE TABLE s_dept(id NUMBER(7)CONSTRAINT s_dept_id_pk PRIMARY KEY,name VARCHAR2(25)CONSTRAINT s_dept_name_nn NOT NULL,region_id NUMBER(7)CONSTRAINT s_dept_region_id_fk REFERENCES region (id),CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));8. 较复杂的创建表例子
SQL> CREATE TABLE s_emp(id NUMBER(7)CONSTRAINT s_emp_id_pk PRIMARY KEY,last_name VARCHAR2(25)CONSTRAINT s_emp_last_name_nn NOT NULL,first_name VARCHAR2(25),userid VARCHAR2(8)CONSTRAINT s_emp_userid_nn NOT NULLCONSTRAINT s_emp_userid_uk UNIQUE,start_date DATE DEFAULT SYSDATE,comments VARCHAR2(25),manager_id NUMBER(7),title VARCHAR2(25),dept_id NUMBER(7)CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),salary NUMBER(11,2),commission_pct NUMBER(4,2)CONSTRAINT s_emp_commission_pct_ck CHECK(commission_pct IN(10,12.5,15,17.5,20)));8. 通过子查询建表通过子查询建表的例子
SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_dateFROM s_emp WHERE dept_id = 41;SQL> CREATE TABLE A as select * from B where 1=2;
只要表的结构.
10. 用子查询建表的注意事项
1)可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。
2)用子查询方式建立的表,只有非空NOT NULL的约束条件能继承过来, 其它的约束条件和默认值都没有继承过来.
3)根据需要,可以用alter table add constraint ……再建立其它的约束条件,如primary key等.
11. Foreign Key的可选参数ON DELETE CASCADE
在创建Foreign Key时可以加可选参数:
ON DELETE CASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除.
如果没有ON DELETE CASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.
12. 如果数据库表里有不满足的记录存在,建立约束条件将不会成功.
13. 给表创建和删除同义词的例子
SQL> CREATE SYNONYM d_sum2 FOR dept_sum_vu;SQL> CREATE PUBLIC SYNONYM s_dept2 FOR alice.s_dept;SQL> DROP SYNONYM s_dept;

转自:http://blog.csdn.net/haiross/article/details/11772847/

转载于:https://www.cnblogs.com/pypua/articles/6925229.html

Oracle创建表语句(Create table)语法详解及示例相关推荐

  1. mysql create table 语法详解

    create table 可以分成三类 一.一般create table 语句: 1 语法 create [temporary] table [if not exists] tbl_name(crea ...

  2. MySQL建表(create table)命令详解

    MySQL建表(create table)命令详解 create table命令 强调:使用建表命令之前必须使用use命令选择表所在的数据库.create table命令的格式如下: create t ...

  3. oracle创建表语句_利用FME去拼接SQL语句并创建表

    在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表.然后对旧数据的进行处理后,存储新的数据. 不只是结构需要保持一致,还有用户.表空间.约束.备注等也需 ...

  4. oracle 创建表 as,Oracle创建表(create table as)

    CREATE TABLE AS语句用于通过复制现有表的列从现有表来创建新表. 注意:如果以这种方式创建表,则新表将包含现有表中的记录. 语法: CREATE TABLE new_table AS (S ...

  5. Oracle 建表语句的关键字详解

    目录 一.建表语句 二.关键字详解 1. ENABLE 和 DISABLE 2. 创建主键约束 3. USING INDEX 4. PCTFREE 5. PCTUSED 6. INITRANS 和 M ...

  6. oracle建表唯一约束语句,Oracle建表语句是什么

    Oracle建表语句是什么 oracle数据库的建表语句,具体语法如下:CREATE TABLE tablename( column_name datatype [null,not null], co ...

  7. SQL Server创建表语句介绍

    SQL Server创建表是最常见也是最常用的操作之一,下面就为您介绍SQL Server创建表的语句写法,供您参考,希望可以让您对SQL Server创建表方面有更深的认识. USE suntest ...

  8. SQL全方位攻略:5. SQL “方言”大比拼:Oracle、MySQL、PostgreSQL限制检索行数语法详解(分页查询)

    系列文章目录 SQL全方位攻略:1.数据库介绍 SQL全方位攻略:2.SQL介绍 SQL全方位攻略:3.SQL标准 SQL全方位攻略:4. 标准SQL和SQL"方言" 文章目录 系 ...

  9. 使用java代码编写脚本,把oracle建表语句变成hive建表语句

    使用java代码编写脚本,把oracle建表语句变成hive建表语句 java代码 测试oracle.sql 生成hive创表语句 java代码 import java.io.File; import ...

最新文章

  1. office技巧:Word如何快速的创建表格
  2. 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解...
  3. Remoting Practice Sample
  4. ECShop 模板库项目功能详解
  5. 深入理解l内核v4l2框架之video for linux 2(一)
  6. 9.Java中的运算符
  7. C++ 获取类型信息
  8. C语言中总是从main函数开始执行函数吗?
  9. java day of month_Java Calendar实例增加DAY_OF_MONTH作为递减(仅)HOUR或MINUTE的副作用
  10. python日志模块logging
  11. vue v-if未生效问题
  12. 信庭嵌入式工作室-嵌入式Linux漫谈之Linux系统
  13. 实训十七:交换机单端口环路检测配置
  14. 分享怎么才能防止域名被劫持
  15. 数据结构 浙江大学 2019春期末考试
  16. 维智科技荣获CSDN 2021年度核心技术企业
  17. 10个明亮的圣诞照片滤镜LR预设模板 10 Bright Christmas Desktop Mobile presets
  18. 小米WIFI CentOS7 网卡模式 亲测
  19. 两块串口硬盘从盘不识别
  20. 微信小程序第三方平台提交时,出现errcode: 85085,errmsg: submit audit reach limit, please try later hint的解决办法

热门文章

  1. 数据结构(六)霍夫曼树与编码
  2. 如何使用OSQP-Eigen
  3. 地理数据分布的集中化与均衡度指数
  4. ivx中字体显示_html-中文字体在CSS中的显示(Unicode编码)(转载)
  5. java通过url下载缓存_java url 下载
  6. golang for循环_10. Go语言流程控制:for 循环
  7. 默认文献工具_如何在浩瀚的Pubmed中快速找到自己需要的文献?分享一个小工具!...
  8. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库
  9. CSPNet论文笔记
  10. 基于人人网的Android开发流程介绍