创建表表空间
CREATE TABLESPACE waterboss DATAFILE 'E:oracleeckDbwaterboss.dbf' -- 物理文件存放在磁盘的具体路径 SIZE 10m -- 初始物理文件的大小 AUTOEXTEND ON -- 文件存储不足时,自动扩容 NEXT 5m -- 每次扩容的大小
删除表空间
DROP TABLESPACE waterboss; -- 删除表空间(不会删除表空间的物理文件)
-- 删除表空间并且删除表空间的物理文件 DROP TABLESPACE waterboss INCLUDING CONTENTS AND DATAFILES;
创建用户且设置所属的表空间
-- 创建用户并且设置用户所属的表空间 CREATE USER wateruser IDENTIFIED BY root123 DEFAULT TABLESPACE waterboss;
给用户授权
-- 给用户授权 GRANT DBA TO wateruser;
创建表
-- 创建表 CREATE TABLE t_user( ID NUMBER PRIMARY KEY, NAME VARCHAR2(50), SEX CHAR(1), ADDDATE DATE );
增加列
-- 增加列 ALTER TABLE t_user add ( PHONE CHAR(11) ); ALTER TABLE t_user add ( MOBILE CHAR(20), JOB VARCHAR(60) );
修改表字段
-- 修改字段 ALTER TABLE t_user MODIFY ( MOBILE NUMBER );
修改字段的名字
-- 修改字段名 ALTER TABLE t_user RENAME COLUMN PHONE TO TELEPHONE;
删除字段
-- 删除一个字段 ALTER TABLE t_user DROP COLUMN JOB; -- 删除多个字段 ALTER TABLE t_user DROP (MOBILE,TELEPHONE);
新增数据
-- 插入数据 INSERT INTO t_user (ID,NAME,SEX,ADDDATE) VALUES (1,'老司机','1',sysdate); INSERT INTO t_user (ID,NAME,SEX,ADDDATE) VALUES (2,'大美女','0',sysdate);
修改数据
-- 修改数据 UPDATE t_user SET ADDDATE = ADDDATE - 3 WHERE ID=1;
删除数据
-- 删除数据 DELETE FROM t_user WHERE ID=2;
JDBC连接Oracle
JDBCUtils.java ``` package com.xiaoshitou.utils;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
/** * 连接Oracle数据库 * * @author Beck * */ public class JDBCUtils { static { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } }
public static Connection getConnection() throws SQLException {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
return DriverManager.getConnection(url, "wateruser", "root123");
}
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
} 测试程序:TestOracle.java
package com.xiaoshitou.test;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;
import org.junit.Test;
import com.xiaoshitou.utils.JDBCUtils;
public class TestOracle {
@Test
public void test01() throws SQLException{
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = JDBCUtils.getConnection();
String sql = "INSERT INTO t_user (ID,NAME,SEX,ADDDATE) VALUES (?,?,?,?)";
stmt = conn.prepareStatement(sql );
stmt.setLong(1, 4);
stmt.setString(2, "小妹咩");
stmt.setLong(3, 0);
stmt.setDate(4, new java.sql.Date(System.currentTimeMillis()));
int update = stmt.executeUpdate();
System.out.println(update);
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.closeAll(null, stmt, conn);
}
}
} ```
数据导出和导入(备份和恢复)
整库导出:
exp system/123456 full=y exp system/123456 file=allData.dmp full=y
整库导入
imp system/123456 full=y imp system/123456 full=y file=allData.dmp
按用户导出
exp system/123456 owner=wateruser file=wateruser.dmp
按用户导入
imp system/123456 file=wateruser.dmp fromuser=wateruser
按表导出
exp wateruser/root123 file=a.dmp tables=t_user
按表导入
imp wateruser/root123 file=a.dmp tables=t_user
常用权限
系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等(对用户而言) 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等(是针对表或视图而言的)
1.系统权限 超过一百多种有效的权限(SELECT * FROM SYSTEMPRIVILEGEMAP查) 数据库管理员具有高级权限以完成管理任务,例如: –创建新用户 –删除用户 –删除表 –备份表
系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。
常用的系统权限: CREATE SESSION 创建会话 CREATE SEQUENCE 创建序列 CREATE SYNONYM 创建同名对象 CREATE TABLE 在用户模式中创建表 CREATE ANY TABLE 在任何模式中创建表 DROP TABLE 在用户模式中删除表 DROP ANY TABLE 在任何模式中删除表 CREATE PROCEDURE 创建存储过程 EXECUTE ANY PROCEDURE 执行任何模式的存储过程 CREATE USER 创建用户 DROP USER 删除用户 CREATE VIEW 创建视图
2.对象权限 不同的对象具有不同的对象权限 对象的拥有者拥有所有权限 对象的拥有者可以向外分配权限 ORACLE一共有种对象权限 对象权限 表 视图 序列 过程 修改(alter) √ √ 删除(delete) √ √ 执行(execute) √ 索引(index) √ 插入(insert) √ √ 关联(references) √ √ 选择(select) √ √ √ 更新(update) √ √
删除delete和truncat的区别?(面试)
比较truncat与delete实现数据删除? 1)delete删除的数据可以rollback;truncate是不可回滚 2)delete删除可能产生碎片,并且不释放空间;truncate不会产生碎片,会释放空间 3)delete是逐条删除;truncate是先摧毁表,再重构表