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 增加 删除 修改 数据操作语言 要不全成功,要不全失败
表名及列名命名规则:
字母开头
长度不超过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 增加 删除 修改 数据操作语言 要不全成功,要不全失败