欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle表操作

程序员文章站 2022-05-31 16:14:08
...

1 数据类型


数据类型 参数 描述
char(n) n=1 to 2000字节 定长字符串,n字节长,以空格填充剩余字节。若不指定,默认为1字节
varchar2(n) n=1 to 4000字节 变长字符串
number(m,n) m=1 to 38
n=-84 to 127
可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被四舍五入截取多余的位数。
如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
如:number(3,0),输入575.316,真正保存的数据是575。
date none 从公元前4712年1月1日到公元4712年12月31日的所有合法日期,Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日
long none 可变长字符列,最大长度限制为2GB,用于不需要做字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。
long是一种较老的数据类型,将来会逐渐被blob、clob、nclob等大的对象数据类型所取代。
raw(n) n=1 to 2000 可变长二进制数据,在具体定义字段的时候必须指明最大长度n。Oracle 8i用这种格式来保存较小的图形文件或带格式的文本文件,如word文档。
raw是一种较老的数据类型,将来会逐渐被blob、clob、nclob等大的对象数据类型所取代
clob none 字符型数据,存储大字符
blob none 二进制数据,存储二进制的文件
bfile none 在数据库外部保存的大型二进制对象文件,最大长度是4GB。
这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
oracle 8i可以读取、查询BFILE,但是不能写入。其大小由操作系统决定

2 表管理

2.1.创建表

create table <table_name>(
    id number(9),
    name varchar(9)
);

注: 数值的不能加单引号',字符型的值要加单引号'

2.2.修改表名称

alter table <old_table_name> rename to <new_table_name>
2.3.删除表
drop table <table_name>;
2.4.修改表的字段

  • 增加表的字段:
    alter table <table_name> add <字段名> <数据类型> [约束];
  • 修改表的字段类型
    alter table <table_name> modify <字段名> <数据类型> [约束];
  • 删除表的字段
    alter table <table_name> drop column <字段名> <数据类型> [约束];

3 表约束

约束 描述
primary key 主键。每个表只能有一个主键,可以与其他的表的外键进行关联。值非空且唯一
unique 唯一值,不可重复
default 设置默认缺省值
not null 值不能为空
check 检查约束,限制值只能在给定的条件内。如check( sex in(‘男’,‘女’))
foreign key 外键

3.1约束-列级约束

在字段后面跟上约束

例:

create table student(
sid number(10) primary key,
sname varchar(9) not null,
sex char(3) check( sex in ('男','女')),
age number(5) default 25,
trainTime date,
ID varchar(5) unique
);

3.2约束-表级约束

在创建字段后加上约束,且该约束具有约束名,方便管理

constraint <constraint_name> primary key(<字段>)
constraint <constraint_name> unique(<字段>)
constraint <constraint_name> check(<条件式>)
例:

create table ss(
sid number(10) ,
sname varchar(9) ,
sex char(3) ,
age number(5),
trainTime date,
ID varchar(5),
constraint pksid primary key(sid),
constraint nnull_sname check(sname is not null),
constraint ck_sex check (sex in ('男','女')),
constraint ck_age check (age > 0 or age <150),
constraint ck_ID unique(ID)
);

3.3约束的管理

  • 直接改变列级约束:
    alter table <table_name> modify <字段名> <约束>;
  • 增加表级约束:
    alter table <table_name> add constraint <constraint_name> primary key(<字段名...>);
    alter table <table_name> add constraint <constraint_name> unique(<字段名>);
    alter table <table_name> add constraint <constraint_name> check(<条件式>);
  • 删除表级约束
    alter table <table_name> drop constraint <constraint_name>;
  • 重命名约束
    ALTER TABLE <table_name> RENAME CONSTRAINT <old_constraint_name> TO <new_constraint_name>

3.4约束命名规范

约束 规范
非空约束 NN_表名_列名
唯一约束 UK_表名_列名
主键约束 PK_表名
条件约束 CK_表名_列名
外键约束 FK_表名_列名
默认约束 DF_表名_列名

4 表记录

4.1什么是表的记录

在表中的一行数据即称之为一个记录(row)

4.2对记录的操作

  • 增加记录
    insert into <table_name> (<字段1>,<字段2>....) values(<value1>,<value2>....);
  • 删除记录
    delete from <table_name> [where <判断条件>];
  • 修改记录
    update <tabel_name> set <字段> = <value> [where <判断条件>];
  • 查询记录
    select <字段1> as <别名1>,<字段2> as <别名2>.... from <table_name>;

注: 当插入的值的字段的类型为date时,可采用如下方式

  • insert into student(sid,sname,sex,age,traintime,id) values(1,'关羽','男',28,'28-2月-2019','11111');
  • insert into student values(2,'张飞','男',27,sysdate,'22222');
  • insert into student values(3,'李四','男',27,to_date('2019-24-02','yyyy-dd-mm'),'33333');

参考资料:数据类型:https://www.cnblogs.com/helong/articles/2087721.html
参考资料:约束命名规范:https://www.cnblogs.com/kerrycode/archive/2012/05/13/2454614.html
原文:http://blog.isdevil.com/cjerrybird/2019/02/oracle%e8%a1%a8%e6%93%8d%e4%bd%9c.html

相关标签: Oracle 数据表