1.创建表空间
创建表空间实际上就是创建了一个数据文件
*create tablespace waterboss
datafile 'c:\waterboss.dbf'
size 100m
autoextend on
next 10m
waterboss 为表空间名称,表名称可以随便取, tablespace为表空间
datafile 用于设置物理文件名称,就是数据文件 c:\waterboss.dbf 就是表空间对应的数据文件,这里的waterboss和上面的可以不一样,
只能在c盘下,因为虚拟机只有一个盘符,如果plsql安装在windows操作系统,就可以随便取盘符
size 用于设置表空间的初始大小, 100m 为100兆
autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容,扩充多少由next决定,
next 用于设置扩容的空间大小,next 10m,为一次性扩充10兆
*创建业主表示例:
create table t_owners
(
id number primary key,
name varchar2(30), // char 固定长度字符类型,最多储存2000字节 varchar2 可变长度字符类型,最多储存4000字节
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
);
2.创建用户
*create user wateruser
identified by itheima
default tablespace waterboss
wateruser 为创建的用户名
identified by 用于设置用户的密码
default tablesapce 用于指定默认表空间名称,这样这个用户就在这个表空间里面,一个表空间可以有多个用户
3.用户赋权
*grant dba to wateruser
给用户 wateruser 赋予 DBA 权限后即可登陆,需要输入这个才可以登陆,
4.数据的增删改(该语法和mysql语法一致)
点中表,然后右击:
query data 查看
Edit 修改
*插入数据语法和mysql语法一样
INSERT INTO 表名 VALUES(值 1,值 2,...)
★示例:insert into T_OWNERS values(1,'李四','黑马6期','1-1','88888',sysdate,1); //sysdate 是获取当前系统时间
★★★★★commit; //在输入语法后,一定要输入commit提交事务,一起选中,按F8即可,事务是有隔离级别的,要等前一个事务提交了,后面的一个事务才会执行
*修改数据
UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件;
★示例:update T_OWNERS set adddate=adddate-3 where id=1; //把用户id为1的日期往前提前三天,日期可以加减
commit;
*删除数据
DELETE FROM 表名 WHERE 删除条件;
★示例:delete from T_OWNERS where id=1;
commit;
另外一种删除的方法
TRUNCATE TABLE 表名称
比较 truncat 与 delete 实现数据删除?
1. delete 删除的数据可以 rollback,而truncat不可以回滚。
2. delete 删除可能产生碎片,并且不释放空间
3. truncate 是先摧毁表结构,再重构表结构
5.数据库整体导出与导入
*作用:数据库中数据的迁移
数据库的备份恢复
*分类:整库导入导出
按用户导入导出
按表导入导出
*exp 导出
exp system/itheima full=y full就是全部,y就是yes,这是整库导入导出,导出来的是一个文件
imp 导入
imp system/itheima full=y 导入后,你自己写的表,包括系统表全部恢复
执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件。
如果想指定备份文件的名称,则添加 file 参数即可,命令如下
exp system/itcast file=文件名 full=y
示例: imp system/itcast full=y file=water.dmp file最好是dmp,full和file顺序可以变
6.按用户导入导出
*按用户导出
exp system/itcast owner=wateruser file=wateruser.dmp owner=用户名 file指定一个文件路径
*按用户导入
imp system/itcast file=wateruser.dmp fromuser=wateruser fromuser=用户名
7.按表导入导出
*按表导出
exp wateruser/itcast file=a.dmp tables=t_account,a_area , 用导出表的所在的用户名进行操作,wateruser/itcast ,所在表的名称/密码,根据用户找表
//用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
*按表导入
imp wateruser/itcast file=a.dmp tables=t_account,a_area
第二部分:今日重要内容概述以及步骤分析和相应的代码实现
1.利用JDBC完成对业主的增删改的代码实现
[1]先写原始JDBC工具类
/*
-
JDBCUtils 连接数据库,关闭资源 ,oracle数据库
*/
public class JDBCUtils {static{
//加载驱动
try {
Class.forName(“oracle.jdbc.driver.oracleDriver”);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}//获取数据库连接
public static Connection getConnection() throws Exception{
return DriverManager.getConnection(“jdbc:oracle:thin:@192.168.80.10:1521:orcl”,
“wateruser”, “itheima”);
}//关闭资源
public static void closeAll(Connection conn,Statement stam,ResultSet rs){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stam != null){
try {
stam.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
[2] 创建业主实体类
/*
- 业主的实体类
*/
public class Owners {
private Long id;//编号
private String name;//业主名称
private Long addressid;//地址编号
private String housenumber;//门牌号
private String watermeter;//水表编号
private Date adddate;//登记日期
private Long ownertypeid;//业主类型 ID
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getAddressid() {
return addressid;
}
public void setAddressid(Long addressid) {
this.addressid = addressid;
}
public String getHousenumber() {
return housenumber;
}
public void setHousenumber(String housenumber) {
this.housenumber = housenumber;
}
public String getWatermeter() {
return watermeter;
}
public void setWatermeter(String watermeter) {
this.watermeter = watermeter;
}
public Date getAdddate() {
return adddate;
}
public void setAdddate(Date adddate) {
this.adddate = adddate;
}
public Long getOwnertypeid() {
return ownertypeid;
}
public void setOwnertypeid(Long ownertypeid) {
this.ownertypeid = ownertypeid;
}
}
[3] 对业主信息实现增删改
/*
-
业主信息数据访问类
/
public class OwnersDao {
/
*新增业主
*/
public static void add(Owners owners){
//声明连接者和执行者对象
Connection conn=null;
PreparedStatement stam=null; //防止注入攻击try { //写具体的获取连接的方法 conn = JDBCUtils.getConnection(); stam = conn.prepareStatement("insert into T_OWNERS values(?,?,?,?,?,?,?)"); stam.setLong(1, owners.getId()); //业主编号 stam.setString(2, owners.getName()); //业主名称 stam.setLong(3, owners.getAddressid()); //地址编号 stam.setString(4, owners.getHousenumber()); //门牌号 stam.setString(5, owners.getWatermeter()); //水表编号 stam.setDate(6, new Date(owners.getAdddate().getTime())); //增加日期 stam.setLong(7, owners.getOwnertypeid()); //业主类型 stam.execute(); //执行 } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtils.closeAll( conn, stam, null); //关闭所有资源 }
}
/*
- 修改业主
*/
public static void update(Owners owners){
java.sql.Connection conn=null;
java.sql.PreparedStatement stam=null;
try {
conn=JDBCUtils.getConnection();
stam=conn.prepareStatement(“update T_OWNERS set name=?,addressid=?,housenumber=?,watermeter=?,adddate=?, ownertypeid=? where id=?”);
stam.setString(1, owners.getName());
stam.setLong(2, owners.getAddressid());
stam.setString(3, owners.getHousenumber());
stam.setString(4, owners.getWatermeter());
stam.setDate(5, new Date(owners.getAdddate().getTime()));
stam.setLong(6, owners.getOwnertypeid());
stam.setLong(7, owners.getId());
stam.execute();
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.closeAll( conn, stam, null);
}
}
/*
- 删除业主
*/
public static void delete(Long id){ //删除是根据业主id进行删除
java.sql.Connection conn=null;
java.sql.PreparedStatement stam=null;
try {
conn=JDBCUtils.getConnection();
stam=conn.prepareStatement(“delete from T_OWNERS where id=?”);
stam.setLong(1, id);
stam.execute();
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.closeAll(conn, stam, null);
}
}
}
- 修改业主