oracle数据库的常见数据类型
oracle全部数据类型 有 26种
char
定长字符串类型 长度是固定不变 no char(10) 如果存入的值 不足十个字符,其它位也被占用
默认长度是1 即一个字符 最大长度:2000个字符
占用的空间较多,但是查询效率较高
varchar2
变长字符串类型 长度可变 例如:定义的长度是100个字节,存入的值是80个字节,那么实际占用就是80个字节
varchar在oracle中不推荐使用,强烈推荐你使用varchar2
必须要为其指定长度 1-4000个字节 所以就需要考虑编码问题
oracle使用gbk编码 一个中文占2个字节 英文\数字占一个字节
占用的空间较少,但是查询的效率较低
number
数字类型 number(all_len,point_len)
第一个参数:整个数字的位数
第二个参数:以小数点为参照 右边为整数,左边为负数 0 就是没有小数位
Actual Data Specified As Stored As
----------------------------------------
123.89 NUMBER 123.89
123.89 NUMBER(3) 124
123.89 NUMBER(6,2) 123.89
123.89 NUMBER(6,1) 123.9
123.89 NUMBER(4,2) exceeds precision (有效位为5, 5 > 4) 超出范围
123.89 NUMBER(6,-2) 100
.01234 NUMBER(4,5) .01234 (有效位为4)
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
date
将数据存入数据库中,需要进行格式化存储的函数(方法)
默认格式:DD-MM-YY
select sysdate from dual ;
30-9月 -15
to_date('存入的值','存入的格式');
2015-12-12 12:12:12 YYYY-MM-DD HH24:MI:SS
to_date('2015-12-12 12:12:12','YYYY-MM-DD HH24:MI:SS');
drop table test_date ;
create table test_date(name char(3) , test_time date default sysdate);
insert into test_date (name , test_time) values('xyz',to_date('2015-12-12 22:12:12','YYYY-MM-DD HH24:MI:SS'));
to_char();
select to_char(test_time,'YYYY-MM-DD HH24:MI:SS') tochar_time from test_date where name = 'xyz' ;
timestamp
clob 用来存储单字节字符型数据 适用于存储超长文本 例如:小说\博客
blob 用来存储二进制数据 存储视频\图像\音频
------------------------------------------------------------------------------
约束
创建表时使用约束
是强加在表上的规则和条件.确保数据库满足业务规则.可以保证数据的完整性
当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则时
系统就会拒绝执行这个操作.
定义约束时如果没有给定一个明确的约束名称,系统将会自动为该约束生成一个名字.
oracle强烈建议创建约束时要给约束起名称
约束的分类:
非空约束(NOT NULL)
约束字段(列)不能为NULL值
唯一约束(UNIQUE KEY)
在表中每一行中定义的这列或这些列的值都不能相同 即唯一性
主键约束(PRIMARY KEY)
唯一的标识表中的每一条数据(每一行记录) 不能为NULL 不能重复
外键约束(FOREIGN KEY)
用来维护从表和主表之间引用的完整性 (不推荐使用外键约束)
条件/检查约束(CHECK)
表中每一行该列都要满足该约束条件
命名规则:
约束名称简称_表名_列名
非空约束 NN_tablename_col1
唯一约束 Uk_tablename_col1
主键约束 PK_tablename_col1
外键约束 FK_tablename_col1
条件/检查约束 CK_tablename_col1
create table c_test(
id number(6),
name varchar2(30),
gender char ,
age number(3),
birthday date,
constraint PK_C_TEST_ID primary key(id)
);
-------------------------------------------------------------------
表结构操作
修改表名称
rename tt to ttt ;
添加表字段
alter table ttt add gender char default 'M' ;
表字段重命名
alter table tt rename column name to username ;
修改表字段
alter table ttt modify (name varchar2(50) default '老公在这里') ;
oracle函数
运算符:
算术运算符 + - * /
连接运算符 ||
比较运算符 > = >= < <= != like between and is null in
任何值与null进行运算 都null
ascii('a'); 根据字符返回编码值
chr(编码值); 返回对应的字符
concat(字段名1,字段名2) 连接两个字符串
initcap(字段名) 返回字符串并将字符串的第一个字母变大写
length(字段名) 返回字段值的长度
lower(字段名) 返回字符串的全部小写
upper(字段名) 返回字段值全部大写
select lower(initcap(username)) low , upper(username) up from tt ;
ltrim(字段名) 清除字段值左边的空字符串
rtrim(字段名) 清除字段值右边的空字符串
substr(原字符串,从第几个字符开始,截取多少个);
select substr('abcdefghijklmn',1,3) from dual ;
replace(原字符串,被替换的字符串,要替换的字符串);
select replace('He love rose !','He' , 'I') from dual ;
trim('要去掉的#字符#' from '目标字符串') 减掉两边的所有s字符
trim('s' from 'string)
select trim('s' from 'strings') from dual ;减掉两边的所有s字符
select trim(leading 's' from 'strings') from dual ; 减除前面所有的s字符
select trim(trailing 's' from 'strings') from dual ; 减除后面所有的的s字符
abc(数字字段名) 返回数字的绝对值
select abs(123) abs1 , abs(-1234) abs2 from dual ;
floor(字段名) 将小数转成为整数(不四舍五入)
select floor(1234.123) from dual
ceil(字段名) 将小数转成整数(有小数就+1)
mod(被除数,除数)
select mod(10,3) m1 , mod(3,3) m2 , mod(1,3) m3 from dual ;
power(原数字,幂)
select power(2,3) from dual ;
round(字段名) 对小数进行四舍五入成整数
select round(55.5) from dual ;
trunc(字段名) 直接截取整数部分(不四舍五入)
select trunc(55.5) from dual ;
avg(字段名) 平均值
select avg(age) from tt ;
count(字段名或者*); 获取记录数 如果使用字段名,该字段一定不能有null值,否则忽略
select count(*) from tt ;
sum(字段名) 求和
select sum(age) from tt ;
min(字段名)
max(字段名)
to_number('1234')
select to_number('1234') from dual ;
-------------------------------------------------------------------
公司日报系统
1--每天的学习内容
2--工作内容
3--项目中遇到的问题
老板
按部门管理所有员工日报
经理
只能管理本级所属员工的日报
员工
只能管理自己的日报
用户及权限管理模块
用户角色 部门编号
日报收集模块
oracle全部数据类型 有 26种
char
定长字符串类型 长度是固定不变 no char(10) 如果存入的值 不足十个字符,其它位也被占用
默认长度是1 即一个字符 最大长度:2000个字符
占用的空间较多,但是查询效率较高
varchar2
变长字符串类型 长度可变 例如:定义的长度是100个字节,存入的值是80个字节,那么实际占用就是80个字节
varchar在oracle中不推荐使用,强烈推荐你使用varchar2
必须要为其指定长度 1-4000个字节 所以就需要考虑编码问题
oracle使用gbk编码 一个中文占2个字节 英文\数字占一个字节
占用的空间较少,但是查询的效率较低
number
数字类型 number(all_len,point_len)
第一个参数:整个数字的位数
第二个参数:以小数点为参照 右边为整数,左边为负数 0 就是没有小数位
Actual Data Specified As Stored As
----------------------------------------
123.89 NUMBER 123.89
123.89 NUMBER(3) 124
123.89 NUMBER(6,2) 123.89
123.89 NUMBER(6,1) 123.9
123.89 NUMBER(4,2) exceeds precision (有效位为5, 5 > 4) 超出范围
123.89 NUMBER(6,-2) 100
.01234 NUMBER(4,5) .01234 (有效位为4)
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
date
将数据存入数据库中,需要进行格式化存储的函数(方法)
默认格式:DD-MM-YY
select sysdate from dual ;
30-9月 -15
to_date('存入的值','存入的格式');
2015-12-12 12:12:12 YYYY-MM-DD HH24:MI:SS
to_date('2015-12-12 12:12:12','YYYY-MM-DD HH24:MI:SS');
drop table test_date ;
create table test_date(name char(3) , test_time date default sysdate);
insert into test_date (name , test_time) values('xyz',to_date('2015-12-12 22:12:12','YYYY-MM-DD HH24:MI:SS'));
to_char();
select to_char(test_time,'YYYY-MM-DD HH24:MI:SS') tochar_time from test_date where name = 'xyz' ;
timestamp
clob 用来存储单字节字符型数据 适用于存储超长文本 例如:小说\博客
blob 用来存储二进制数据 存储视频\图像\音频
------------------------------------------------------------------------------
约束
创建表时使用约束
是强加在表上的规则和条件.确保数据库满足业务规则.可以保证数据的完整性
当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则时
系统就会拒绝执行这个操作.
定义约束时如果没有给定一个明确的约束名称,系统将会自动为该约束生成一个名字.
oracle强烈建议创建约束时要给约束起名称
约束的分类:
非空约束(NOT NULL)
约束字段(列)不能为NULL值
唯一约束(UNIQUE KEY)
在表中每一行中定义的这列或这些列的值都不能相同 即唯一性
主键约束(PRIMARY KEY)
唯一的标识表中的每一条数据(每一行记录) 不能为NULL 不能重复
外键约束(FOREIGN KEY)
用来维护从表和主表之间引用的完整性 (不推荐使用外键约束)
条件/检查约束(CHECK)
表中每一行该列都要满足该约束条件
命名规则:
约束名称简称_表名_列名
非空约束 NN_tablename_col1
唯一约束 Uk_tablename_col1
主键约束 PK_tablename_col1
外键约束 FK_tablename_col1
条件/检查约束 CK_tablename_col1
create table c_test(
id number(6),
name varchar2(30),
gender char ,
age number(3),
birthday date,
constraint PK_C_TEST_ID primary key(id)
);
-------------------------------------------------------------------
表结构操作
修改表名称
rename tt to ttt ;
添加表字段
alter table ttt add gender char default 'M' ;
表字段重命名
alter table tt rename column name to username ;
修改表字段
alter table ttt modify (name varchar2(50) default '老公在这里') ;
oracle函数
运算符:
算术运算符 + - * /
连接运算符 ||
比较运算符 > = >= < <= != like between and is null in
任何值与null进行运算 都null
ascii('a'); 根据字符返回编码值
chr(编码值); 返回对应的字符
concat(字段名1,字段名2) 连接两个字符串
initcap(字段名) 返回字符串并将字符串的第一个字母变大写
length(字段名) 返回字段值的长度
lower(字段名) 返回字符串的全部小写
upper(字段名) 返回字段值全部大写
select lower(initcap(username)) low , upper(username) up from tt ;
ltrim(字段名) 清除字段值左边的空字符串
rtrim(字段名) 清除字段值右边的空字符串
substr(原字符串,从第几个字符开始,截取多少个);
select substr('abcdefghijklmn',1,3) from dual ;
replace(原字符串,被替换的字符串,要替换的字符串);
select replace('He love rose !','He' , 'I') from dual ;
trim('要去掉的#字符#' from '目标字符串') 减掉两边的所有s字符
trim('s' from 'string)
select trim('s' from 'strings') from dual ;减掉两边的所有s字符
select trim(leading 's' from 'strings') from dual ; 减除前面所有的s字符
select trim(trailing 's' from 'strings') from dual ; 减除后面所有的的s字符
abc(数字字段名) 返回数字的绝对值
select abs(123) abs1 , abs(-1234) abs2 from dual ;
floor(字段名) 将小数转成为整数(不四舍五入)
select floor(1234.123) from dual
ceil(字段名) 将小数转成整数(有小数就+1)
mod(被除数,除数)
select mod(10,3) m1 , mod(3,3) m2 , mod(1,3) m3 from dual ;
power(原数字,幂)
select power(2,3) from dual ;
round(字段名) 对小数进行四舍五入成整数
select round(55.5) from dual ;
trunc(字段名) 直接截取整数部分(不四舍五入)
select trunc(55.5) from dual ;
avg(字段名) 平均值
select avg(age) from tt ;
count(字段名或者*); 获取记录数 如果使用字段名,该字段一定不能有null值,否则忽略
select count(*) from tt ;
sum(字段名) 求和
select sum(age) from tt ;
min(字段名)
max(字段名)
to_number('1234')
select to_number('1234') from dual ;
-------------------------------------------------------------------
公司日报系统
1--每天的学习内容
2--工作内容
3--项目中遇到的问题
老板
按部门管理所有员工日报
经理
只能管理本级所属员工的日报
员工
只能管理自己的日报
用户及权限管理模块
用户角色 部门编号
日报收集模块