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)
- 通讯的标准
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”,变量值中输入数据库的实例名,然后点击“确定”按钮。