1.3.5 数据类型
1.3.5.1 字符数据类型
1. char类型
固定长度,范围1-2000字节,默认1字节
2.varchar2类型
可变长度,返回1-4000字节,默认30字节
3.long类型 存储:长文本,最大存储2GB文本,
一个表只能有一列long数据类型
long列不能定义为唯一约束和主键约束
long列不能建立索引
过程或存储过程不能接受long数据类型的参数
1.3.5.2 数值数据类型
number数值类型
number(p,s)
number(p)
数字的总位数,取值范围1-38,s小数点右边的位数
1.3.5.3 日期时间数据类型
date
sysdate获取系统时间
1.3.5.4 LOB大对象数据类型
clob:大字符文本
blob:二进制
bfile:二进制文件
1.3.5.5 行标识
ROWID
伪列或虚列,唯一标识
ROWNUM
查询结果中顺序分配的编号,必须从1开始
1.3.6 数据库表
1.3.6.1 创建数据库表
1.语法:
create table 表名 (列名1 数据类型和长度 是否为空,列名2 数据类型和长度 是否为空,...);
1.3.6.2 修改数据库表
1.修改列
alter table 表名 modify (列名 数据类型和长度) ;
alter table 表名 modify (列名1 数据类型和长度,列名2 数据类型和长度,...) ;
2.添加列
alter table 表名 add(列名1 数据类型和长度 ,列名2 数据类型和长度 ,...);
3.删除1列
alter table 表名 drop column 列名;
4.删除多列
alter table 表名 drop (列名1 ,列名2 );
1.3.6.3 删除数据库表
1.删除数据不删除表结构
truncate table 表名;
2.删除数据和表结构
drop table 表名;
1.3.6.4 查看表结构命令:
desc 表名;
示例:表相关操作
1.3.6.5 查看该用户下所有的表
select * from tab;
1.3.6.6 表重命名
rename 旧表名 to 新表名;
1.3.7 约束
1.3.7.1 约束概念:
建立数据完整性
1.3.7.2 数据完整性
1.概念:
数据的完整性是指数据库中数据的准确性
1.3.7.3 约束的分类
1.实体完整性约束
概念:
实体完整性要求表中每一行的数据都反映不同的实体而不能存在相同的数据行
实现方式:
通过索引、主键约束、唯一约束等方式实现
2.域完整性约束
概念:
域完整性是指给定字段的输入有效性,
实现方式:
限制数据类型、检查约束、输入格式、默认值、非空约束等
3.引用完整性约束
概念:
用来保持表之间已定义的关系
实现方式:
通过主键和外键的引用关系来实现的
4.自定义完整性约束
实现方式:
常借助于数据库的规则、存储过程或者触发器等对象来进行约束。
1.3.7.4 创建主键约束
1.语法
alter table 表名 add constraint pk_约束名 primary key(字段名);
1.3.7.5 创建唯一约束
1.语法:
alter table 表名 add constraint 约束名 unique(字段名);
1.3.7.6 检查约束
语法:
alter table 表名 add constraint 约束名 check(字段名检查内容) ;
1.3.7.7 主外键关联关系
alter table 从表名 add constraint fk_列名 foreign key (外键列名) references 主表名 (主表列名);
1.3.7.8 删除约束
alter table 表名 drop constraint 约束名;
1.3.7.9 查看约束
select table_name,constraint_name from user_constraints ;
1.3.7.10 在创建表时添加约束
create table student
(
sid number primary key,
sname varchar2(20) check(length(sname)<=6),
password varchar2(20)
check(length(password) >=6 and length(password)<=16),
scard varchar2(40) unique,
sex varchar2(4) default '女' check(sex in('男','女')),
age number(10) default '18' check(age>0 and age<=120),
cid number(10) references classes(cid)
);
1.3.8 命名规范
表空间以tbs_为前缀
创建表以tbl_为前缀
主键以pk_为前缀
外键以fk_为前缀
检查约束以ck_为前缀
唯一约束以uk_为前缀
1.3.9 序列
1.创建序列
语法:
create sequence seq_序列名 [start with 起始值] [increment by 增量] [maxvalue 最大值|nomaxvalue] [minvalue 最小值|nominvalue] [cycle|nocycle] [cache 缓存值|nocache] ;
解释:
nomaxvalue表示升序最大值10的27次方,降序最大值为-1,为默认值
nominvalue表示升序最小值为1,降序最小值为-10的26次方,为默认值
cycle:序列在达到最大值和最小值时,继续从头就开始生成
nocycle:序列在达到最大值和最小值时,不会再继续再生成值,为默认值
nocache:默认缓存20个序列号
2.访问序列
序列名.nextval; 每次递增序列值
序列名.currval; 返回当前序列
查看当前序列值
3.修改序列
语法:
alter sequence seq_序列名 [start with 起始值] [increment by 增量] [maxvalue 最大值|nomaxvalue] [minvalue 最小值|nominvalue] [cycle|nocycle] [cache 缓存值|nocache] ;
4.删除序列
语法:drop sequence 序列名;
5.查询序列
语法: select sequence_name from user_sequences;
1.3.10 数据库操作
1.对列操作
(1)对表结构的操作,增删改
(2)语法:alter table [表名] add [字段名] varchar2 (50) null;
2.对行的操作
(1)对表中数据进行增删改
(2)插入语句:insert into [表名] (字段1,字段2,。。。) values (值1,值1,。。。);
(3)删除语句:delete from[表名] where [字段1]=1;
(4)修改语句:update [表名] set [字段1]=1,。。。;
(5)查询语句:select [字段1],。。。 from [表名] where [字段1]=1 ;