Oracle建表
1.oracle数据库中的多种数据结构:
1.表结构 存储数据
2.视图 一张表或多张表中数据的字节
3.sequence 主要用来生成主键值
4.index 提高检索性能
我们需要学会创建数据结构
2.表结构:
1.表结构可以随意创建
2.表结构不需要预先申请空间
3.可以在线修改。
3.创建语法:
创建表的释放有两种:基本操作 子查询
3.1基本操作
3.1.1 语法:
create table [schema.]tb_name(
col_name datatype [default value] [colum_constraints],
...,
[table_constraint],
...
);
note :
1.create table 关键字,固定写法,
schema,在oracle数据库中代表用户名
2.tb_name代表表名,可以自定义:但是需要遵循命名规则(详见3.1.2命名规则):
3.列名一般也要求遵循明明规则(详见3.1.2命名规则)
4.dataType,列所属的数据类型,详见(3.1.3 oracle支持的数据类型)
3.1.2 命名规则
1.字母开头
2.长度为1-30
3.只能有大小写英文,数字和_ $ #
4.同一个用户下的对象名不能重复
5.不能使用关键词作为表名(如:select group等等)
3.1.3 oracle支持的数据类型:
类型名 描述
VARCHAR2(size) 可变长字符串,
CHAR(size) 定长字符串
NUMBER 数字类型
NUMBER(p,s) 数字类型
DATE 日期类型
CLOB 字符大数据对象
BLOB 二进制大数据对象
note:
1.char,varchar2,varchar
用法:
char(size),varchar2(size) varchar(size)
size用来指明所能保存字符值的上限。
区别:
char:定长字符
即一旦确定了()中的字符个数,在保存数据的时候,不论你保存的字符个数为多少个,所占空间大小为固定的()中的字符个数。
如char(2) : 保存 a ab都占用2个字符空间
varchar , varchar2:不定长字符
即在保存数据的时候,会先判断字符个数,然后再分配对应的空间进行保存。
如varchar(2)
保存a 占用1字符空间
保存ab 占用两2字符空间
在oracle数据库中,指定变长字符串首选varchar2.
2.number(p,s):
p确定数字的有效位数
s确定数字的小数点位数
number(4,2)最大值和最小值为多少?
number(1,3)
-99.99~99.99
3.date: 日期类型
系统默认日期类型:'DD-MON-YY'
操作字符类型和日期类型数据的时候,一定要放到''中间
3.1.4 default:设置默认值
1.作用:设置在往表中插入数据时,如果没有指定该列的值,默认插入的值。
2.默认值可以是合法的字面值(根据定义的列的数据类型来赋值),表达式,或者是sysdate和user等合法的sql函数。
create table test(
start_date date default sysdate);
3.默认值不能使用其他表的列或者不存在的列/伪列
3.1.5 约束
定义:所谓约束就是强制表中的数据列必须遵循的一些规则。
而且如果表中存在依赖约束,可以阻止一些不合理的删除操作。
分类:
表级约束:定义在表级别的约束(即在列的完整定义完成后,才定义的约束)
column dataType ,
unique(column)
列级约束:直接跟在列完整性定义后边的约束
column dataType unique,
种类:
约束名 描述 分类
NOT NULL :非空 列级
UNIQUE :唯一 列级/表级
PRIMARY KEY :主键 列级/表级
FOREIGN KEY :外键 列级/表级
CHECK :自定义 列级/表级
创建时间:
1.创建表的同时定义约束
2.表创建完成之后,通过修改表结构(后期章节描述)
创建语法:
列级:
column [CONSTRAINT constraint_name] constraint_type,
表级:
column,...(列完整定义结束)
[CONSTRAINT constraint_name] constraint_type (column, ...),....
详细介绍:
1.not Null:值不允许为null,阻止null值输入
note:只能是列级约束
例如:
create table test( id number constraint test_nn_id not null);
create table test( id number not null);
2.unique:唯一值约束,要求值必须唯一,不能重复。
note:
1.可以设置单列唯一,或者组合列唯一
2.如果unique约束单列,此列可以为null
3.可以是列级,也可以是表级约束
4.对于unique列,oracle会自动创建唯一值索引。
例如:
create table test(id number constraint test_un_id unique);
create table test(
id number,
constraint test_un_id unique(id)
);
create table test(id number unique);
create table test(
id number,
name varchar2(10),
constraint test_un_id_name unique(id,name)
);
create table test(
id number,
name varchar2(10),
unique(id,name)
);
3.Primary key:主键
note:
1.主键用来给表中的每一行数据设置唯一标识符。主键只能有一个。
2.主键可以是单列,也可以是组合列。
3.强制非空且唯一,如果由多列组成,组合唯一且列的每一部分都不能为null。
4.可以表级,可以列级。
5.自动创建唯一值索引。
例如:
create table test(id number constraint test_pk_id primary key);
create table test(
id number,
constraint test_pk_id primary key(id)
);
create table test(id number primary key);
create table test(
id number,
name varchar2(10),
constraint test_pk_id_name primary key(id,name)
);
create table test(
id number,
name varchar2(10),
primary key(id,name)
);
4.foreign key:外键
一般在设计表与表之间的关系时,为了减少数据冗余,一般做的操作是在其中一张表中设置一列(组合列),这一列(组合列)的值可以唯一的确定另外一张表中和当前表相关联的一行数据。那么这个列称为外键。
note:
1.可以是单列,也可以是组合列
2.引用当前表或者其他表中(只要想和当前表建立关系的表) 的主键列或者unique列
3.可以是表级别/列级别
4.值必须是引用的列的值或者为null
5.有外键约束时,如果想要删除的父表(被引用的表)中的某一条数据时,必须保证在子表(引用表)中没有和这条数据相关联的数据存在。
6.ON DELETE CASCADE ,指明在删除父表中数据时可以级联删除子表中数据
例如:
create table emp(id number primary key);---->父表
1:m/m:1
create table test(
id number constraint test_fk_emp_id references emp(id));
1:1
create table test(
id number references emp(id) unique);
create table test(
id number,
constraint test_fk_emp_id foreign key(id) references emp(id)
);
create table test(id number references emp(id));
create table emp1(
id number,
name varchar2(10),
primary key(id,name)
);
create table test4(
id number,
name varchar2(10),
constraint test_fk_emp_id_name foreign key(id,name)
references emp1(id,name)
);
create table test(
id number,
name varchar2(10),
foreign key(id,name) references emp(id,name) on delete cascade
);
5.check : 定义每一行必须遵循的规则
note:
1.可以是表级/列级约束
例如:
create table test(
gender varchar2(2) constraint test_check_gender check(gender in ('F','M')),
age number check (age>=15 and age<=20)
);
create table test(
gender varchar2(2),
constraint test_check_gender check(gender in ('F','M'))
);
create table test(
gender varchar2(2),
check(gender in ('F','M'))
);
3.2. 子查询
一般使用子查询建表,要将另外一张表中的某些数据存放到一张新的表格中。(相当于将原来打印在控制台上的信息,现在直接定义成一张新的表格。)
语法:
create table tb_name[(column,...)]
as
select ...
note:1.在用子查询建表时,只有not Null约束会被复制。
2.创建表时可以指定列名,也可以不指定,但是一定不指定列的数据类型
3.创建表的列跟子查询表的列数要保持一致。
Oracle建表的更多相关文章
- PowerDesigner生成的ORACLE 建表脚本中去掉对象的双引号,设置大、小写
原文:PowerDesigner生成的ORACLE 建表脚本中去掉对象的双引号,设置大.小写 若要将 CDM 中将 Entity的标识符都设为指定的大小写,则可以这么设定: 打开cdm的情况下,进入T ...
- 5.oracle建表的时候同时创建主键,外键,注释,约束,索引
5.oracle建表的时候同时创建主键,外键,注释,约束,索引 1 --主键 )); ) ,constraint aba_pr primary key(id,name1)); --外键 )); --复 ...
- oracle 建表时显示ORA-00984: 列在此处不允许
oracle 建表时显示ORA-00984: 列在此处不允许 CreationTime--2018年7月19日16点10分 Author:Marydon 1.情景展示 使用plsql建表时,报错 ...
- oracle 建表时显示ORA-00904无效的标识符
oracle 建表时显示ORA-00904无效的标识符 CreationTime--2018年7月19日16点03分 Author:Marydon 1.情景展示 使用plsql建表时,报错 字段展 ...
- oracle 建表 主键自增序列/////
oracle 建表 主键自增序列 (2011-10-12 11:59:22) 转载▼ 标签: 杂谈 分类: oracle SQL> create table sms_activity( 2 ...
- Oracle建表提示SQL 错误: ORA-00904: : 标识符无效
Oracle建表提示: 错误报告:SQL 错误: ORA-00904: : 标识符无效00904. 00000 - "%s: invalid identifier"*Cause: ...
- oracle建表并设置ID为自动增长
CREATE TABLESPACE shopping DATAFILE 'D:\oracle\mypc\oradata\orcl\shopping.dbf' SIZE 20M AUTOEXTEND O ...
- SQL SERVER 生成ORACLE建表脚本
/****** Object: StoredProcedure [dbo].[GET_TableScript_ORACLE] Script Date: 06/15/2012 13:07:16 **** ...
- Oracle 建表常用数据类型的详解
创建表时,必须为表的各个列指定数据类型.如果实际的数据与该列的数据类型不相匹配,则数据库会拒绝保存.如为学生指定出生日期为“1980-13-31”. 在Oracle中,常见的数据类型有: 字符串:字符 ...
随机推荐
- 真TM操蛋——观《鬼子来了》有感
杀日本人有罪?日本人杀中国人为何无罪?战俘?双手沾满鲜血,仇人,为何杀仇人还要被自己人判刑,被仇人斩首? 看了最后结局,我心里只有这两句话,同学说结局不好,我觉得结局恰恰很好,姜文是个很好的导演,他布 ...
- Linux 命令快捷键
Linux 命令快捷键 tab 自动补齐(有不知道的吗)Ctrl+u 删除(剪切)此处至开始所有内容 Ctrl+k 删除从光标所在位置到行末 快速命令行 – 快捷方式• history 搜索历史执行过 ...
- PhpStorm 4.0 & 5.0 部署本地Web应用 (转)
1.创建新的项目(project),创建完成之后单击工具栏的应用运行/调试(Select Run/Debug Configuration)的下拉菜单弹出 Edit Cofigurations选项,单击 ...
- 编辑word文档过程中输入法无法正常使用
编辑word文档过程中输入法无法正常使用怎么办??有的朋友在使用Word 2010过程中,遇到了这样的问题.每次打开word文档,程序就自动变成英文输入法,中文输入法就退出了,特别是搜狗输入法.即使在 ...
- 使用requireJS,backboneJS,和underscoreJS完成自定义模板封装
使用requireJS,backboneJS,和underscoreJS完成自定义模板封装 原来的代码 当我们进行一个列表的数据填充的时候,是这样做的: //获取美食列表 function getFo ...
- 项目中如何GB2312转UTF-8
$str = mb_convert_encoding($str, "gb2312", "UTF-8"); // 这是一个PHP 自带函数 参数1 是要转的字符, ...
- ceph_deploy部署ceph分布式文件系统
1.前期准备:centos6.5 minimal版本3台 选择其中一台作为一个安装节点,能无密码登录其他机器.ssh-keygen ssh-keygen -i ~/.ssh/id_rsa.pub no ...
- Qt 工程 pro文件
工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下: ...
- Android从assets目录下读取文件相关
有一个需求是app的帮助文档是word格式,ios可以直接用webview加载word显示,Android不行.而美工不配合转换成图片,前端没时间把word写成html 没办法,自己搞. 步骤: 1. ...
- GreenDao介绍
GreenDao介绍 greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案 何为ORM? ORM(Object/Relation Mapping): 对象/关系 ...