ORACLE命令_L(练习),希望对大家有用

O(∩_∩)O~最近几天看ORACLE来着,把自己觉得有用的都保留下来了,其中有我比较纠结的左连接,O(∩_∩)O~ 希望对大家有所帮助。


//表和约束
定义emp_1表 主键为emp_1表中的empno字段
alter table emp_1 add primary key(empno);
或 alter table emp_1 modify empno primary key;
定义emp_1表 外键为dept表中的deptno字段
alter table emp_1 add foreign key(deptno) references dept(deptno);
定义t08163表 中email唯一性约束
Alter Table t08163 Add Constraint t3_email_uk Unique(email)

列级约束和表级约束的区别

列级约束:  从形式上看,在每列定义完后马上定义的约束,在逗号之前就定义好了。
carete   table     parent(c1 number  primary key );       
create   table    child  (c  number primary key ,   c2 number  references parent(c1));

表级约束:   从形式上可以看出与列级约束的区别了吧。
create   table  child( c number ,  c2  number  , primary key (c2),  foreign key(c2)  references  parent(c1));
有些时候,列级约束无法实现某种约束的定义,比如联合主键的定义,就要用到表级约束:
create table test(id1 number , id2 number, primary key(id1, id2));



把emp_1表的jquery名称改为jquery1,可以写多条语句
   alter table emp_1 add jquery1 varchar2(10)
   update emp_1 set jquery1=jquery
   alter table emp_1 drop column jquery
或 alter table emp_1 drop (jquery)
复制表结构
create table emp_1 as select * from emp where 1<>1

//分页
SELECT * FROM (    SELECT A.*, ROWNUM RN FROM (SELECT * FROM emp) A WHERE ROWNUM <= 10)WHERE RN >= 1

//关于纠结的左连接的问题

//等值连接 如果emp表中有一条记录没有部门号,则等值连接后,这条记录不显示
select ename,dname from emp,dept where emp.deptno=dept.deptno

//左连接 如果emp表中有一条记录没有部门号,则等值连接后,这条记录显示,部门号显示为NULL
select ename,dname from emp,dept where emp.deptno=dept.deptno(+)

//SQL99写法
//查询哪个学生没有选课(用外连接)。
Select * From student s Left Join sc On  s.sno = sc.sno Where sc.sno Is Null
//查询哪门课没有人选(用外连接)。
Select * From sc Right Join course c On sc.cno = c.cno Where sc.cno Is Null

左连接显示左边表的所有行,  
右连接显示右边表的所有行  
外连接显示所有表的所有行  
内联界,显示能连接的所有行Top

//事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)

oracel 去字符串空格
select replace(trim('  I   love   U  '),' ','')from dual

转换数值(金钱)格式
Select to_char(1233654699.99,'L9,999,999,999.99') From dual


Oracle计算时间差表达式

有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60)

//计算多少虚岁
select ROUND(TO_NUMBER(sysdate - to_date('1988-02-09','yyyy-mm-dd'))/365) from dual

//计算多少实岁
select TRUNC(TO_NUMBER(sysdate - to_date('1988-02-09','yyyy-mm-dd'))/365) from dual

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值