前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle基础|oracle表的创建|oracle的数据结构

oracle基础|oracle表的创建|oracle的数据结构

作者头像
小小鱼儿小小林
发布2021-12-28 10:29:27
1.4K0
发布2021-12-28 10:29:27
举报
文章被收录于专栏:灵儿的笔记灵儿的笔记

目录

​一、oracle数据库中的多种数据结构

二、表结构

三、创建语法

3.1基本操作

3.1.1 语法:

3.1.2 命名规则

3.1.3 oracle支持的数据类型:

3.1.4 default:设置默认值

3.1.5 约束

3.2. 子查询


一、oracle数据库中的多种数据结构

1.表结构 存储数据

2.视图 一张表或多张表中数据的字节

3.sequence 主要用来生成主键值

4.index 提高检索性能

我们需要学会创建数据结构

二、表结构

1.表结构可以随意创建

2.表结构不需要预先申请空间

3.可以在线修改。

三、创建语法

创建表的释放有两种:基本操作 子查询

3.1基本操作

3.1.1 语法:

代码语言:javascript
复制
create table [schema.]tb_name(
            col_name datatype [default value] [colum_constraints],
            ...,
            [table_constraint],
            ...
        );

说明:

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

二进制大数据对象

说明:

1.char,varchar2,varchar

用法:char(size),varchar2(size) varchar(size)

size用来指明所能保存字符值的上限。

区别:

1.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)最大值和最小值为多少?

-99.99~99.99

3.date: 日期类型

系统默认日期类型:'DD-MON-YY'

操作字符类型和日期类型数据的时候,一定要放到''中间

3.1.4 default:设置默认值

1.作用:设置在往表中插入数据时,如果没有指定该列的值,默认插入的值。

2.默认值可以是合法的字面值(根据定义的列的数据类型来赋值),表达式,或者是sysdate和user等合法的sql函数。

例如

代码语言:javascript
复制
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, 列名 constraint 取一个约束名字 约束类型

表级:

column,...(列完整定义结束)

[CONSTRAINT constraint_name] constraint_type (column, ...),....

​详细介绍:

1.not Null:

值不允许为null,阻止null值输入

note:只能是列级约束

例如:

代码语言:javascript
复制
create table test( id number constraint test_nn_id not null);
create table test( id number not null);

2.unique:

唯一值约束,要求值必须唯一,不能重复。可以为空

说明:

1.可以设置单列唯一,或者组合列唯一

2.如果unique约束单列,此列可以为null

3.可以是列级,也可以是表级约束

4.对于unique列,oracle会自动创建唯一值索引。

例如:

代码语言:javascript
复制
create table test(id number constraint test_un_id unique);
代码语言:javascript
复制
create table test(
id number,
constraint test_un_id unique(id)
);
代码语言:javascript
复制
create table test(id number unique);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
constraint test_un_id_name unique(id,name)
);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
unique(id,name)
);

3.Primary key:主键

说明:

1.主键用来给表中的每一行数据设置唯一标识符。主键只能有一个。

2.主键可以是单列,也可以是组合列。

3.强制非空且唯一,如果由多列组成,组合唯一且列的每一部分都不能为null。

4.可以表级,可以列级。

5.自动创建唯一值索引。

例如:

代码语言:javascript
复制
 create table test(id number constraint test_pk_id primary key);
代码语言:javascript
复制
create table test(
id number,
constraint test_pk_id primary key(id)
);
代码语言:javascript
复制
create table test(id number primary key);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
constraint test_pk_id_name primary key(id,name)
);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
primary key(id,name)
); 

4.foreign key:外键

一般在设计表与表之间的关系时,为了减少数据冗余,一般做的操作是在其中一张表中设置一列(组合列),这一列(组合列)的值可以唯一的确定另外一张表中和当前表相关联的一行数据。那么这个列称为外键。

说明:

1.可以是单列,也可以是组合列

2.引用当前表或者其他表中(只要想和当前表建立关系的表) 的主键列或者unique列

3.可以是表级别/列级别

4.值必须是引用的列的值或者为null

5.有外键约束时,如果想要删除的父表(被引用的表)中的某一条数据时,必须保证在子表(引用表)中没有和这条数据相关联的数据存在。

6.ON DELETE CASCADE ,指明在删除父表中数据时可以级联删除子表中数据

例如:

代码语言:javascript
复制
 create table emp(id number primary key);---->父表

1:m/m:1(一对多、多对一)

代码语言:javascript
复制
create table test(
id number constraint test_fk_emp_id references emp(id)
);

1:1(一对一)

代码语言:javascript
复制
create table test(
id number references emp(id) unique
);
代码语言:javascript
复制
create table test(
id number,
constraint test_fk_emp_id foreign key(id) references emp(id)
);
代码语言:javascript
复制
create table test(id number references emp(id));
代码语言:javascript
复制
create table emp(
id number,
name varchar2(10),
primary key(id,name)
);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
constraint test_fk_emp_id_name foreign key(id,name) 
references emp(id,name)
);
代码语言:javascript
复制
create table test(
id number,
name varchar2(10),
foreign key(id,name) references emp(id,name) on delete cascade 
);

5.check :

定义每一行必须遵循的规则

说明:

1.可以是表级/列级约束

例如:

代码语言:javascript
复制
create table test(
gender varchar2(2) constraint test_check_gender check(gender in ('F','M')),
age number check (age>=15 and age<=20)
);
代码语言:javascript
复制
create table test(
gender varchar2(2),
constraint test_check_gender check(gender in ('F','M'))
);
代码语言:javascript
复制
create table test(
gender varchar2(2),
check(gender in ('F','M'))
);

3.2. 子查询

一般使用子查询建表,要将另外一张表中的某些数据存放到一张新的表格中。(相当于将原来打印在控制台上的信息,现在直接定义成一张新的表格。)

语法:

代码语言:javascript
复制
create table tb_name[(column,...)]
    as
 select ...

说明:

1.在用子查询建表时,只有not Null约束会被复制。

2.创建表时可以指定列名,也可以不指定,但是一定不指定列的数据类型

3.创建表的列跟子查询表的列数要保持一致。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 一、oracle数据库中的多种数据结构
  • 二、表结构
  • 三、创建语法
    • 3.1基本操作
      • 3.1.1 语法:
      • 3.1.2 命名规则
      • 3.1.3 oracle支持的数据类型:
      • 3.1.4 default:设置默认值
      • 3.1.5 约束
    • 3.2. 子查询
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档