• PLSQL命令行创建用户 以及 JDBC简单操作


    PLSQL Developer命令行创建用户以及表

    打开Command  Windows
    查看当前管理员
    show user
    
    创建用户le   密码abc(在连接的虚拟机oracle下HR数据库中可以找到 le)
    create user le identified by abc;
    
    授予用户le链接  和 资源使用 权限
    grant connect,resource to le;
    
    使用用户le  密码abc 通过tns服务,连接mydog变量中的服务器
    conn le/abc@mydog
    create table tbl_student
    {
        stu_no int primary_key,
        stu_name varchar2(30) not null,
        stu_age int
    };
    
    insert into tbl_student values(1,’mary’ ,12);
    
    修改要提交数据
    commit;
    

    课堂要点

    1.数据字典 (data dictionary=dd)

    是用来进行数据库管理的表结构。

    dba_users 是系统用户表
    user_tables 是当前用户所拥有的表的记录表

    2.sqlplus平台能够执行的指令的分类
    a. sql语句
    ​ sql语句必须用;表示结束

    b. oracle专用语句
    ​ 不需要用;表示结束

    3.创建用户(方案 schema)
    一个用户所创建的各种对象的集合,叫做方案
    一个用户拥有一个同名的方案,该用户是这个方案的所有者。
    管理员可以把其它人的专属方案授权给某个用户,那么一个用户就可以访问多个方案了。

     create user tester identified by abc123;
    

    4.角色
    ​ 一个角色可以拥有大量的权限,
    我们只要把一个角色授予用户,就赋予大量的权限,这样的授权比较方便。
    我们可以一次性授予多个角色给用户

     grant connect,resource to tester;
    

    5.数据的二大标准

    1)语言的标准

     为了扩大市场蛋糕,统一数据库语言提上了日程。
     put...inside   2
     save  1
     insert into   12
     pull  0
    
     SQL (Structured Query Language)
    
     SQL89
    
     SQL92
     SQL99
     SQL03
     ....
    
     任何一种流行的数据库都支持了某个SQL标准,同时还有自己专用的语句(方言,dialect)
    
    1. 通讯的标准
     ODBC/JDBC
     JDBC的标准,也在不断修订之中,功能随着版本越来越强大,目前最新版本是4.2
    

    ​ JDBC

    JDBC操作理解图

    JDBC技术的由来

    连接 JDBC

    public class DBUtils
    {
    	//连接串描述了数据库的位置信息
    	private static final String CONN STR="jdbc :oracle:thin:@//172.19.24.99:1521/orc1";
    	private static final String USER="tester";
    	private static final String PWD="abc123" ;
    
    	public static Connection getConn()
            {
    		Connection conn = null;
    		//到类路径中,根绝这个全类名查找该类是否存在,如果存在,则驱动已经加载成功
    		try
    		{
    		   Class .forName("oracle.jdbc.driver.OracleDriver");
    		   conn = DriverManager.getConnection(CONN STR, USER, PWD);
    		}	
    		catch (ClassNotFoundException e)
    		{
    		  e.printStackTrace();
    		  System.out.println("驱动没有加载");
    		}
    		catch (SQLException e)
    		{
    		  e.printStackTrace();
    		}
    		return conn;
    	}
    	/**
    	* 释放资源,注意关闭顺序
    	* @param conn
    	* @param pstmt
    	* @param rset
    	*/
    	public static void releaseRes (Connection conn, PreparedStatement pstmt, ResultSet rset) 
            {
    		try
    		{
    		if (rset != null)
    			rset.close();
    		if (pstmt != null)
    			pstmt.close();
    		if (conn != null)
    			conn.close();
    		}
    		catch (SQLException e)
    		{
    		e.printStackTrace();
    		}
    	}
    }
    

    加载数据

    public void testSaveEmp()
    {
    	String sql = "insert into tbl employee values(?,?,?)";
    	Employee emp = new Employee();
    	emp.setEmpId(2);
    	emp.setEmpName( "mary");
    	emp.setEmpSalary(4100.5);
    
    	Connection conn = DBUtils.getConn();
    	PreparedStatement pstmt = null;
    
    	try 
    	{
    		pstmt = conn. prepareStatement(sql);
    		pstmt.setInt(1, emp.getEmpId());
    		pstmt.setString(2, emp.getEmpName());
    		pstmt .setDouble(3, emp.getEmpSalary());
    		pstmt.executeUpdate(); 
    		//update: insert,delete,update,query
    	}
    	catch (SQLException e)
    	{
    		e. printStackTrace();
    	}
    	finally
    	{
    		DBUtils.releaseRes(conn, pstmt, null);
    	}
    }
    

    主外键约束

    -- 创建主表
    create table tbl_course(
      course_id int primary key,
      course_name varchar2(30) not null
    );
    
    -- 创建从表
    create table tbl_student(
      stu_no int primary key,
      stu_name varchar2(30) not null,
      stu_age int default 7,
      course_id int not null,
      constraint FK_STU_COURSE FOREIGN KEY(course_id) references tbl_course(course_id)
    );
    

    Course has many Students (1:m)

    1方就是主表方
    m方就是从表方

    1方如果有关联多方,一方记录不能删除,也就是父表如果有从表记录的话,不能删除父表记录。
    m方不能关联不存在一方,也就是说明从表记录中,不能包含不存在主表记录。

    比如:主表是课程,从表是学生;

    当选择数据库(课程)的学生有张三(学生),张三不能选择不存在的课程;除非张三不选择数据库(课程),否则不能删除数据库(课程)。

    踩坑之路

    设置ORACLE_HOME环境变量

    用以指向安装目录,寻找TNS信息

    如果只是PL/SQL寻找TNS,只需要配置好ORACLE_HOME环境变量就好了

    解决方法

    ORACLE_HOME:Oracle数据库软件的安装目录
    ORACLE_SID:Oracle数据库的实例名
    Oracle 数据库实例名:用于和操作系统进行联系的标识,即数据库和操作系统之间的交换是通过数据库实例名来体现的。

    1、右击“我的电脑”->选择“属性”->选择“高级”->单击“环境变量”
    2、选择“Path”这一行,单击“编辑”,在“Path”的变量值文本框的最后面先加入一个分号“:”,然后再分号后面加入sqlplus文件的目录路径,如“D:OraClient Liteproduct11.2.0client_litein”,然后点击“确定”按钮。
    3、如果在“系统变量”列表框下面的“变量”列中找不到“ORACLE_HOME”和“ORACLE_SID”这两个变量,则需要下面操作,否则无需一下操作。
    4、在“系统变量”中点击“新建”按钮,在“变量名”中输入“ORACLE_HOME”,变量值中输入Oracle的安装目录路径,如“D:OraClient Liteproduct11.2.0client_lite”,然后点击“确定”按钮。
    5、在“系统变量”中点击“新建”按钮,在“变量名”中输入“ORACLE_SID”,变量值中输入数据库的实例名,然后点击“确定”按钮。

  • 相关阅读:
    JVM heap中各generation的大小(Sizing the Generations)
    MySQL中分组取第一条, 以及删除多余的重复记录
    八芯网线水晶头做法(线序)
    Win7命令行下查看无线网络信息
    OpenWrt的开机启动服务(init scripts)
    犀牛书的实例代码:给对象添加freeze, hide, 查询descriptors
    ES6新特性:Javascript中Generator(生成器)
    ES6新特性:Function函数扩展, 扩展到看不懂
    ES6新特性:Javascript中的Map和WeakMap对象
    ES6新特性:Javascript中Set和WeakSet类型的数据结构
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/10667197.html
Copyright © 2020-2023  润新知