oracle学习第二天

orcale数据库常见数据类型

oracle全部数据类型 有26种

char
定长字符串类型 长度是固定不变 no char(10) 如果存入的值不足10个字符 其他位也被占用
默认长度是1 即一个字符 最大长度2000个字符
占用的空间较多,但是查询效率较高

varchar2
变长字符串类型 长度可变 例如定义的长度是100个字节,存入的值是80个字节,那么实际占用就是80字节
varchar在oracle中不推荐使用,强烈推荐你使用varchar2
必须要为其指定长度 1-4000个字节 所以就需要考虑编码问题
oracle使用gbk编码 一个中文占两个字节 英文数字占一个字节
占用的空间较少,但是查询的效率较低

number
数字类型 number(all_len,point_len)
第一个参数,整个数字的位数
第二个参数,以小数点为参照 右边为正数,左边为负数 0就是没有小数位
number(3,1) 12.6可以装
12.88 装进去四舍五入为12.9

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) extends 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 sysdba 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');

create table test_date(name char(3) ,test_time date default sysdate);
drop table test_date;

insert into test_date(nane,test_time) values('123',to_date('2015-12-12 12: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 ='123';

timestamp


clob 用来存储单字节字符型数据 适用于存储超长文本 例如:小说博客

blob 用来存储二进制数据 存储视频图像音频


--------------------------------------------------------------------------------------------------

约束
创建表时使用约束
是强加在表上的规则和条件 确保数据库满足业务规则, 可以保证数据的完整性
当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则时
系统就会拒绝执行这个操作

定义约束时如果没有给定一个明确的约束名称,系统就会自动为该约束生成一个名字,
oracle强烈建议创建约束时要给约束起名称

约束的分类
非空约束(not null)
约束字段(列)不能为null值
唯一约束(unique key)
在表中每一行中定义的这列或这些列的值都不能相同 即唯一性
主键约束(primary key)
唯一的标识表中的每一条数据(每一行记录)不能为null 不能重复

外键约束(foreign key)
用来维护从表和主表之间引用的完整性 (不推荐使用外键约束)

条件/检查约束(check)
表中每一行该列都要满足该约束条件


命名规则
约束名称简称_表名_列名
非空约束 NN_tablename_coll
唯一约束 UK_tablename_coll
主键约束 PK_tablename_coll
外键约束 FK_tablename_coll
条件/检查约束 CK_tablename_coll

删除emp表中的外键约束
alter table emp
drop constraint FK_DEPTNO;

create table c_test(
id number(6) constraint PK_C_TEST_ID primary key,
name varchar2(30) constraint NN_C_TEST_NAME not null,
gender char constraint CK_C_TEST_GENDER check (gender='n' or gender='m'),
age number(3) constraint UK_C_TEST_AGE unique,
birthday date
);


表结构操作
修改表名称
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


select 1+1 a from dual;


grant resource to lp;
conn lp/1;
create table tt (name varchar2(50),age number(3),gender char);

alter table tt rename column name to username;
alter table tt modify (username varchar2(100));
alter table tt rename column username to username;

insert into tt values('jack',23,'M');
insert into tt values('jacy',24,'M');
insert into tt values('lily',24,'M');
insert into tt values(null,0,'M');

select * from tt where username like '%k';
select * from tt where username like '%a%';


uodate tt set age=25 where username='lily';

select * from tt where age between 23 and 24;
select * from tt where age between 'rose' and 'jacy';//只能用于数字
select * from tt where username is null;
select * from tt where age in(23,33,43);

oracle函数:
ascii('a');根据字符返回编码值
chr(编码值);返回对应的字符
concat(字段名1,字段名2) 连接两个字符串
initcap 返回字符串并将字符串的第一个字母变大写
length(字段名) 返回字段值的长度
lower(字段名) 返回字符串的全部小写
upper(字段名) 返回字段值全部大写
ltrim(字段名) 清除字段名左边的空字符串
rtrim(字段名) 清除字段名右边的空字符串
substr(原字符串,从第几个字符开始,截取多少个);
replace(原字符串,被替换的字符串.要替换的字符串);
trim('要去掉的#字符#(不能是字符串)' from '目标字符串'); 减掉两边所有字符
trim(leading 's' from 'string') 减除前面所有的s字符
trim(trailing 's' from 'stringsss') 减除后面所有的s字符
abs(数字字段名) 返回数字的绝对值

floor(字段名) 将小数不四舍五入成为整数
select floor(123.123) from dual;

ceil(字段名)
select ceil(1234.123) from dual;将小数转成整数(有小数就+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(字段名)
select min(age) from tt;
max(字段名)
select max(age) from tt;

to_number('1234'); 转成数字
select to_number('1234') from dual;

select ascii('a') from dual;
select chr(22342334) from dual;
select username || '---' || age from tt;
select concat (username,age) from tt;
select concat (username||'---',age+100) from tt;
select initcap(username) from tt;
select length(username) username_length from tt;
select lower(initcap(username)) low, upper(username) up from tt;
select ltrim(rtrim(username)) uname from tt;
select substr('abcdefghijklmn',1,3) from dual;
select replace('he love rose !','he','I') from dual;
select trim('s' from 'string') from dual;
select trim(leading 's' from 'string') from dual;
select abs(123) abs1,abs(-1234) abs2 from dual;

查看当前oracle自动提交状态
show autocommit;
修改自动提交状态()
set autocommit on;
set autocommit off;

手动提交
commit
回滚(autocommit off)
rollback

----------------------------------------------------------------------
公司日报系统
1--每天的学习内容
2--工作内容
3--项目中遇到的问题

老板 按部门管理所有员工日报
经理 只能管理本级所属员工的日报
员工 只能管理自己的日报

用户权限管理模块
用户角色 部门编号


日报收集模块

原文地址:https://www.cnblogs.com/zy19930408/p/4867798.html