database笔记(oracle)
注意,在使用oracle的sqlplus的时候,一定要保证oracle的oracleservicexxx(oracleserviceorcl)启动,还有就是orackeoradb10g_home1tnslistener启动。我们在开发阶段,习惯将oracle的服务的启动方式由自动改为手动,以提高计算机的启动速度。注意,如果是手动启动,一定要在使用oracle之前,去到“服务“下手动启动oracle的服务和监听。
1)通过“开始“——运行“中输入:sqlplus
oracle的命令行窗口。
在上窗口中输入用户名和密码即可登录。
注意,在我们输入口令时,口令不会回显。一旦连接成功,我们就可以使用oracle的一系列命令了。
如何在sqlplus窗口下清屏: host cls
修改列的宽度:set linesize 800;
修给每页显示的记录数: set pagesize 50;
2)oracle的第二种命令行窗口。
注意。用户名:要访问的数据库服务中所存在的用户。
口令:该用户的密码。
主机字符串:就是oracleservice的名称,默认是当前系统中的服务,可以不写。
在该窗口中常用的操作:
清屏操作 : 按 shift + delete 弹出窗口图一窗口,按“确定”即可清屏。
图一。 如何调用之前的命令:输入 “ed” ,会弹出一个记事本缓存文件(如图二)。
我们可以在记事本缓存文件中对之前的命令进行修改。修改后保存并关闭。会弹出如图三窗口中内容。
要想执行修改后的命令,可以直接在光标处输入“/”回车即可执行之前命令。如图四。
图二。图三。
图四。3)第三种启动oracle的命令语句执行的窗口。
可以使用浏览器打开isqlplus窗口。打开浏览器,在地址栏中输入url:http:
//ip:端口号/isqlplus 即可登录到oracle的isqlplus窗口。如图五所示。
url 的解释:
http 协议。
ip 就是要访问的服务器的地址,比如访问本机,可使用localhost,或者是127.0.0.1
端口号要访问的服务器上的应用程序,每个程序都会监听一个端口号。比如oracle的浏览器命令行窗口程序监听的就是5560端口。
图五。在图五中的窗口下输入用户名和密码和对应的oracleservice的名称。即可登录到该用户的控制台。如图六。
图六。在工作区中就可以输入各种sql语句。点击“执行”按钮即可执行sql语句。
比如查看当前用户(scott)下的表。输入的sql是:select * from tab; 如图七所示。
在该用户下存在四个样例表。
图七。命令是:conn 用户名/密码 [as 角色名称]
example : 从当前system用户切换到sys用户。
system用户连接。
从system用户切换到sys用户,且sys用户是以dba的身份连接的。
命令:alter user 要解锁的用户 account unlock;
exmple : 为scott用户解锁 , alter user scott account unlock;
注意:在执行解锁命令时,当前用户一定要有足够的权限。没有权限则会报错,则无法对用户解锁。如图八。
图八。注意:“scott”用户的密码默认是“tiger”。
命令是:password
为当前用户scott修改密码。密码依然不会回显。
命令:create user 要创建的用户的名称 identified by 密码。
example :创建一个用户名是“whz”,密码是“whz”的用户。
注意:要想创建用户(user),当前用户一定要有足够的权限(比如 create user 权限)。
命令:grant 权限 to 用户。
example : 为用户whz 授予连接权限(也就是会话权限:create session)
grant create session to whz;
当前用户要想为指定用户授权,当前用户必须要有足够权限才可以。说明scott用户没有为用户授权的权限。
我们使用dba为用户whz授权成功。
授权成功之后,用户whz就可以连接数据库了。
命令:revoke 权限 from 用户。
example :**用户whz的会话权限。
注意:当前用户要想撤销指定用户的权限,则当前用户也要具备足够的权限。
用户whz的会话权限被撤销之后,则该用户无法连接数据库了。
命令:create table 表名称(column_name type length, column_name2 type length);
example : 在用户whz模式下创建一个表(表明demo,有列name和age)。
报了权限不足的错误。说明一个用户即使可以连接到数据库,如果没有创建表的权限,则无法创建表。我们可以为whz用户授予创建表的权限。
注意:用户whz随然被授予了create table 权限,但是依然无法建表。为什么呢?
因为在oracle数据库中,表都要存在指定的表空间中。所以一个用户即使有了create table 权限,依然无法建表。还有授予资源访问权限(resource权限)。
命令:drop user 用户名 [cascade]
example : 删除用户whz
发现报错了。注意,如果当前要删除的用户下有对象(表、视图等),则无法直接删除,在删除时,要加关键字“cascade”。意思是,在删除用户时,会将该用户关联的对象一并删除。
我们想创建一个demo的表,表中有两列,分别是自增长的列id和姓名列name。我们知道在mysql数据库中的ddl语句是:可以使用auto_increment创建自增长。
发现在oracle中不可以使用auto_increment类型。我们要想在oracle中使用类似于mysql中的auto_increment,可以借助序列(sequence)。
1)创建序列。
命令:create sequence 序列名称 [start with 整型的值] [increment by 整型的值] [nocache]
start with value : 表示该序列从指定的value值开始递增。默认是1。
increment by value : 表示当前序列的步进值,即每次的递增量。默认是1。
nocache : 使用该项进行序列的创建,不会缓存序列值。
example :为demo表创建一个序列“sq_demo”
序列有两列伪列,分别是:表示当前序列值的“currval”和表示下一个序列值的“nextval”。我们也可以通过select语句查看当前序列的值和序列的下一个值。
注意:一个序列一旦创建成功,只有先调用nextval,才可以调用currval查看当前序列的值。否则报错。
要想使demo表的id列的值自增。就可以使用sq_demo序列。
2)删除序列。
命令是: drop sequence 序列名称;
3)修改序列。
命令:alter sequence sq_demo 序列项。
意思是:将序列sq_demo的步进值改为了2。.
可以这样理解:视图就是某些表的查询结果的集合。也就是说可以将复杂的sql语句的组合作为一个视图信息进行保存。以后再想获取类似信息时,就可以通过查询该视图获取。
注意:用户要想创建视图,必须要有创建视图的权限(create view)。
命令是: create view 视图名称 as 子查询(查询的结果集);
example : 创建一个视图,保存tb_user表中的id和username列的值。
如果以后想查看tb_user表的id和username信息,就可以通过查询vw_user视图获取。
2)删除视图。
命令是:drop view 视图名称;
3)修改“视图中”的数据。
注意,视图本身是没有数据的。它是靠自查询语句从它对应的表中获取数据。当我们在修改一个视图时,其实修改的是视图对应的表的数据。
oracle笔记
1 查看表的结构 desc tabledescription 2 set timing on 打开操作表的时间记录。3 消除重复行 distinct 4 大小写不区分的是列名,而不是里面的数据。1 可以对某一列直接进行加减乘除。两列相加。2 如果有一列为null,所得结果也为空。使用nvl函数处理n...
Oracle笔记
第1页1.oracle 的使用 1.1.sqlplus 的命令 初始化表的位置 set nls lang american 设置编码才可以使用下面脚本 cd oracle home rdbms cd demo 我们目前使用的是oralce 9i 9201 版本 select from v versi...
oracle笔记
clear 清屏。col title for a20 设置title的字符最多有20个。oracle介绍。rdbsrdb 基本的存储结构是,二维表。表头。行。列。字段。sql的分类 dsl 关键字 select dml 操作 insert delete update ddl 定义 create dr...