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建表的更多相关文章

  1. PowerDesigner生成的ORACLE 建表脚本中去掉对象的双引号,设置大、小写

    原文:PowerDesigner生成的ORACLE 建表脚本中去掉对象的双引号,设置大.小写 若要将 CDM 中将 Entity的标识符都设为指定的大小写,则可以这么设定: 打开cdm的情况下,进入T ...

  2. 5.oracle建表的时候同时创建主键,外键,注释,约束,索引

    5.oracle建表的时候同时创建主键,外键,注释,约束,索引 1 --主键 )); ) ,constraint aba_pr primary key(id,name1)); --外键 )); --复 ...

  3. oracle 建表时显示ORA-00984: 列在此处不允许

      oracle 建表时显示ORA-00984: 列在此处不允许 CreationTime--2018年7月19日16点10分 Author:Marydon 1.情景展示 使用plsql建表时,报错 ...

  4. oracle 建表时显示ORA-00904无效的标识符

      oracle 建表时显示ORA-00904无效的标识符 CreationTime--2018年7月19日16点03分 Author:Marydon 1.情景展示 使用plsql建表时,报错 字段展 ...

  5. oracle 建表 主键自增序列/////

    oracle 建表 主键自增序列 (2011-10-12 11:59:22) 转载▼ 标签: 杂谈 分类: oracle SQL> create table sms_activity(  2   ...

  6. Oracle建表提示SQL 错误: ORA-00904: : 标识符无效

    Oracle建表提示: 错误报告:SQL 错误: ORA-00904: : 标识符无效00904. 00000 -  "%s: invalid identifier"*Cause: ...

  7. oracle建表并设置ID为自动增长

    CREATE TABLESPACE shopping DATAFILE 'D:\oracle\mypc\oradata\orcl\shopping.dbf' SIZE 20M AUTOEXTEND O ...

  8. SQL SERVER 生成ORACLE建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_ORACLE] Script Date: 06/15/2012 13:07:16 **** ...

  9. Oracle 建表常用数据类型的详解

    创建表时,必须为表的各个列指定数据类型.如果实际的数据与该列的数据类型不相匹配,则数据库会拒绝保存.如为学生指定出生日期为“1980-13-31”. 在Oracle中,常见的数据类型有: 字符串:字符 ...

随机推荐

  1. ActiveMQ2

    package com.winner.topic; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.Con ...

  2. LeetCode Find All Duplicates in an Array

    原题链接在这里:https://leetcode.com/problems/find-all-duplicates-in-an-array/ 题目: Given an array of integer ...

  3. 常用 Git 命令清单 转

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  4. Python基础、异常处理

    一.概述 错误与异常概念 异常也是对象, 基于Exception类.内置异常 异常处理.流程 try/except/else  处理python或你触发的异常 try/fianlly   不管有没有异 ...

  5. Eclipse开发快捷键技巧

    1.alt+?或alt+/:自动补全代码或者提示代码 这个是我最得意的快捷键组合了,尤其是当输入syso几个字符之后,2个手指轻松按下这2个键的时候,自动就补全System.out.println() ...

  6. ThroughRain第一次冲刺(每天更新)

    第一次冲刺时间: 11月14-11月23 第一次冲刺目标及分配: 1.注册登录界面            认领:王大华 2.界面跳转                  认领:梁仕标 3.点餐界面   ...

  7. android 多媒体数据库(非原创)

    推荐文章:http://fzlihui.iteye.com/blog/1097952,http://www.cnblogs.com/pen-ink/archive/2011/06/02/2068410 ...

  8. 00Linux学习及角色定义

    一.嵌入式Linux学习顺序 二.Linux架构 三.Linux工程师角色划分 四. 嵌入式应用工程师工作内容与所需知识点 从图 1可以知道, 嵌入式应用工程师主要从事与产品相关的嵌入式 Linux ...

  9. Mysql复合索引

    当Mysql使用索引字段作为条件时,如果该索引是复合索引,必须使用该索引中的第一个字段作为条件才能保证系统使用该索引,否则该索引不会被使用,并且应尽可能地让索引顺序和字段顺序一致

  10. Objective-C基础4

    1.强指针:默认的情况下所有的指针都是强指针,关键字__strong 弱指针:__week关键字修饰的指针 2.ARC:编译器将自动在代码合适的地方插入retain.release.autorelea ...