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
上一篇: 对抗* 人工智能可以做什么?