oracle学习笔记二

oracle表的管理
表名及列名命名规则:
字母开头
长度不超过30个字符
不能使用Oracle保留字
只能使用A-Z a-z 0-9 $ #


数据类型
char 最大2000字符
varchar2 最大4000字符
clob  字符型大对象最大4G
number 
number(5,2) 一个小数有5位有效数字,2位小数
number(5)表示一个五位数
date
timestamp
blob 图片 二进制数据 可以存放图片 声音


----------------------------------------
添加一个字段
alter table student add(classid number(2));


修改字段的长度:
alter table student modify(xm varchar2(30));


修改字段的类型或是名字(不能有数据)
alter table student modify(xm char(30));


删除一个字段:
alter table student drop  column sal;


修改表的名字:
rename student to stu;


删除表:
drop table student;


--------------------------------------
insert into student values(。。。);


alter session set nls_date _format ='yyyy-mm-dd';


插入空值 null
insert into stu(xh, xm) values (2,null);
查询空值的:
select * from stu where xm is null;


-------------------------------------
update student set sal=sal/2 where sex='男';


-----------------------------------------------
删除数据:
delete from student;写日志,可以恢复
设置回滚点 savepoint a
rollback to a;//回滚


drop table student;删除表的结构和数据


truncate table student;不写日志,速度快


-------------------------------------------------
查看表结构:desc dept;


distinct 取消重复行


set timing on;显示操作时间
-------------------------------
如何处理null值
使用nvl函数
select sal*13+nvl(comm,0)*13 "年工资",ename from emp;
-----------------------------------------------------
% 多个字符
_单个字符


-----------------------------------------------
order by 默认升序 asc
         desc降序
-------------------------------
复杂查询
max min avg sum count
group by用于对查询结果分组统计
having 限制分组结果显示
对数据进行分组:
1.分组函数只能出现在选择列、having order by子句中
2.select 同时包含group by,having,order by那么他们的顺序是
    group by having order by
多表查询:
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;
笛卡尔集 


-----------------------------------------------------------------------
自连接查询


子查询
单行子查询
all
any
from子句中使用子查询
--------------------------------------------
oracle 分页
1.rownum:
select a1.*,rownum rn from(select * from emp) a1;


---------------------------------------------------
用查询结果创建新表
create table myemp(id,ename,sal)as select empno,ename,sal from emp;
----------------------------------------------------------
合并查询 union union all  insersect  minus
union:取消重复行:
select ename,sal, job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';
union all 不取消重复行
insersect 取相同的。。交集
minus 取差集存,在第一个而不存在第二个
------------------------------------------------
创建数据库用工具
dbca【数据库配置助手】
-------------------------------------
Java操作Oracle
 1.加载驱动
 Class.froName("sun.jdbc,odbc.JdbcOdbcDriver");
 2.得到连接
 Connection ct=DriverMananger.getConnection("jdbc:odbd:???(数据源配置)","用户名","密码");
 3.
 Statement sm=ct.createStatement();
 ResultSet rs=sm.executeQuery("select* from emp");
 while(rs.next){
System.out.println("用户名:"+rs.getString(2));
 }
4.关闭资源
rs.close();
sm.close();
ct.close();
--------------------------------------------------------------------
1.加载驱动
Class.forName(oracle.jdbc.driver.oracleDriver);
2.得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:数据库名称","用户名","密码")
---------------------------------------------------------------------------------------------------------
分页案例:
<table>
<tr>
<td>用户名</td>
<td>薪水</td>
<%
1.加载驱动
 Class.froName("sun.jdbc,odbc.JdbcOdbcDriver");
 2.得到连接
 Connection ct=DriverMananger.getConnection("jdbc:odbd:???(数据源配置)","用户名","密码");
 3.
 Statement sm=ct.createStatement();
 
 String s_pageNow=(String)reques.getParameter("pageNow");
int pageNow=1;
if(s_paheNow!=null){
pageNow=Integer.parseInt(s_pageNow);
}
 //查询总页数
 int pageCount=0;
 int rowCount=0;//共有几条记录
 int pageSize=3;//每页显示几条记录
ResultSet rs=sm.executeQuery("select count(*) from emp");
if(rs.next){
rowCount=rs.getInt(1)
if(rowCount%pageSize==0)
{
pageCount=rowCount/pageSize;

}
else{
 pageCount=rowCount/pageSize+1;
}
}
  rs=sm.executeQuery("select * from(selecta1.*,rownum rn(select* from emp) a1 where rowmum<="+pageNow*pageSize+"))where rn>="(pageNow-1)*pageSize+1+");
 
 while(rs.next){
out.println("<tr>");
out.println("<td>:"+rs.getString(2)+</td>);
out.println("<td>:"+rs.getString(6)+</td>);
out.println("</tr>");
 }
 for(int i=1;i<pageCount;i++){
out.print("<a herf=mytest.jsp?pageNow="+i+"> ["+i+"]</a>");
 }
4.关闭资源
rs.close();
sm.close();
ct.close();
%>
</tr>
</table>
----------------------------------
修改tomcat端口conf->server.xml
-----------------------------------------
使用特点格式插入日期值
to_date()函数
-------------------------------
使用子查询插入数据
insert into 表(。。。) select 。。 from 另一个表 where。。。
update。。。
----------------------------------------------------------
oracle的事务处理
dml 增加 删除 修改 数据操作语言 要不全成功,要不全失败
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值