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
ORACLE命令_L(练习),希望对大家有用
最新推荐文章于 2022-10-21 17:24:37 发布