02oracle之基本数据类型、命名规范、约束、序列、序列的裂缝

oracle基本数据类型:

  • 整型 number(n)

    N表示数字的长度,默认值number-相当于number(11)

  • 小数 number(n,m)

    N表示总长度,m小数位,number(5,2)

  • 字符串(固定长度)

    char(n) N表示长度

  • 字符串(可变长度)varchar2(n)
    N表示长度 最高存储2000字符(1000汉字左右)

  • 日期 date

    ORACLE日期格式是固定。日期在存储时有一个本地化操作

  • 大文本类型 Clob

    存储海量文本数据。最大值可达4G

  • 大量二进制类型 blob

    存储二进制数据,最大4g

Oracle数据类型了解:
char类型:

Char类型:定义长度时,如果存储的数据小于长度,空位补空格。固定长度的类型
缺点:

  1. 浪费存储空间

  2. Char类型中存在空格,那么在程序取值比较时容易出错

  3. 在ORACLE中使用trim()函数,会造成char类型字段上的索引失效

优点:

  1. char类型在效率上比着其它字符类型的会快一点

varchar2类型:

Varchar2类型:可变长度。存储时如果数据小于长度,varchar的长度按实际存储长度计算
优点:

  • 节省存储空间

缺点:

  • 效率比char类型低

注意:varchar2只有Oracle才有的。带2的是Oracle自己增强的数据类型,不是sql99规范中的。

clod类型:

Clob是longtext类型的代替品,存储超大量的字符串。如果varchar存储不了,可以用这个。但效率很低下,而且不能使用上索引。这玩意的存储大小不是按长度存储,按字节数存储的。
Blob 存储海量二进制类型。例:电影、音乐、高清图片。
缺点:每次存储时都需要转换为二进制进行存储
获取时把二进制转为数据
通常存储电影、音乐时存储的是文件的路径

表的命名规则和命名规范

表名和列名的基本规范如下:

  • 必须以首字母大写
  • 必须在1-30个字符之间
  • 必须只能包含A-Z,a-z,0-9,_,$,和#
  • 必须不能和用户定义的其他对象重名
  • 必须不能是oracle的保留字
  • oracle默认储存是都存为大写
  • 数据库名只能是1-8位,datalink可以是128位,和其他一些特殊字符

扩展:

另外,每个公司都有自己特有的命名规范,比如,要求所有的数据库对象都要加上一个前缀,用于快速识别对象的类别。

比如表的命名:
t_person :存放个人信息的表。
t_crm_person:存放客服子系统模块的人员信息表。
视图的命名:
v_person:用来查询人员信息的视图。

命名规范的作用:

  • 良好的命名规范便于识别和管理,对于系统开发和维护都有很大的帮助。
  • 使用工具的提示功能也更容易快速定位到所需要的对象。

表的操作:

创建表:

create table 表名 (列名,属性;);

创建表的要求条件:
必须具备CREATE TABLE权限、存储空间。
必须指定表名、列名、数据类型、数据类型的大小

查看表结构:

desc 表名;

表重命名:

rename 原表名 to 新表名; 

删除表:
drop 表名;

表的字段操作:

增:

alter table 表名 add 列名  列的属性; --单列操作
alter table 表名 add (列名1 列1的属性,列名2 列2的属性,...) --多列操作

删:

alter table 表名 drop column 列名;  --单列操作
alter table 表名 drop (列1,列2);  --多列操作(多列不需要加column)

改:

alter table 表名 modify 列名 新属性; --单列操作
alter table 表名 modify (列名1 列1的新属性,列名2 列2的新属性);--多列操作

数据的操作::

增:

–单行操作

insert into 表名 values(所有列的信息);  --数据类型必须与表结构里字段的属性一致
insert into 表名 values(部分信息); --会按表的字段顺序加入信息,后面没设置的为null(输入数据必须小于或等于列数)

–多行操作

insert into 表1
select 数据1 from dual
union
select 数据2 from dual;  --dual 是一张伪表只是为了方便操作而存在,

删:

delete from 表名  --删除所有数据
delete 列名 from 表名 where 条件 --删除符合条件的某些数据    
删除某一列数据(该列必须可以为null):
1.update 表名 set 列名=null;
2.delete from 表名 where 列名 is not null ;

改:

update 表名 set 列名=数据 where 条件; --修改满足条件的数据
update 表名 set 列名=数据; --将该列全部修改

查看:

select * from 表名; --查看表的全部信息
select 列1,列2 from 表名; --查看表的列1,列2信息

约束:

  • 约束的概念作用:
  • 约束是可以更好的保证数据库数据的完整性和一致性的一套机制。
  • 约束可以限制加入表的数据的类型。
  • 如果存在依赖关系,约束可以防止错误的删除数据,也可以级联删除数据。
  • 约束创建的时机:
  • 创建表的时候,同时创建约束。
  • 表结构创建完成后,可以再添加约束。
  • 常见的约束类型:
  • NOT NULL 不为空
  • UNIQUE 唯一约束
  • PRIMARY KEY 主键
  • FOREIGN KEY 外键
  • DEFAULT 默认值
  • CHECK—用来检查一个字段的值是否符合某表达式,表达式的结果必须是布尔值。

具体使用:

create table customer( 
   id NUMBER(8) primary key, --主键
   name varchar2(50) not null, --不为空
   age number(3) check (age between 0 and 100),
   email varchar2(50) unique, --唯一
   sex char(2) default '男' check(sex in ('男','女')), -- 一个char能存半个汉字,两位char能存一个汉字
);
create table cart( 
   id NUMBER(8) primary key, --主键
   cid NUMBER(8) references customer(id),--外键
   c_num NUMBER(8) NOT NULL
);

序列:

序列:可以供多个用户用来产生唯一数值的数据库对象

需求:

Mysql中主键有自增长的特性.
Oracle中,主键没有自增长这个特性.那么如何解决这个问题.使用序列可以解决.

作用:

  • 自动提供唯一的数值
  • 共享对象
  • 主要用于提供主键值
  • 将序列装入内存可以提高访问效率

创建序列:
在这里插入图片描述
序列的使用:

  • 在ORACLE中为序列提供了两个伪列:

  • 1,NEXTVAL 获取序列对象的下一个值(指针向前移动一个,并且获取到当前的值。)

  • 2,CURRVAL 获取序列对象当前的值

     SELECT seq_test.currval FROM dual;--获取当前指针
    
     在插入数据的时候插入序列主键.
     INSERT INTO TEST VALUES(seq_test.nextval,'Jack',null);
    

序列的时间裂缝:

  1. 列是一个共有对象,多个表都可以调用。但实际开发中,可以避免多个表用一个序列(创建多个序列)。序列是独立的对象。任意表都可以使用,但是编号就不能保证有序。
  2. 当插入记录时报错,序列对象值也被使用,下一次再使用时,序列的值就会+1
  3. 简单的来说就是:用序列插入数据库的值不一定是连续的。

序列出现裂缝的条件:
事务回滚。
系统异常。
多个表同时使用同一个序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值