数据库学习杂记一
如果当时没有对口令做任何的设置的话,那么scott用户默认是会被锁定的,其他用户的密码默认为oracleadmin,而scott用户是主要使用的用户,所以下面可以按照如下步骤输入命令解决:
1、 通过运行输入:sqlplusw;
2、 在用户名上输入:“/nolog”
3、 以超级管理员的身份登录:CONN sys/change_on_install AS SYSDBA
· 如果没改密码的话那么就是oracleadmin,即:CONN sys/oracleadmin AS SYSDBA
4、 输入解锁命令:ALTER USER scott ACCOUNT UNLOCK ;
5、 可以重新登陆sqlplusw:有可能登陆之后要求用户重新输入密码,就输入“tiger”即可。
在一个数据库之中肯定会存在多个用户,而实际上不同的表属于不同的用户,如果现在希望查询出一个用户有多少张数据表,则可以输入如下的指令:
SELECT * FROM tab ; |
这个用户下现在有四张数据表,那么这四张表的功能随后介绍。
既然一张表会有多个数据列,那么可以通过DESC指令查询一张表中的所有数据列:
DESC emp ; |
由于有多个用户,那么现在如果要想确定当前的用户是那一位,则可以使用下下面的指令:
SHOW USER ; |
但是在这里必须强调一点,SQLPLUSW虽然是作为程序的主要工具窗口,但是在此窗口中实际上并不方便于进行代码的编辑,因为在这个工具之中,所有的方向键实际上控制的只是屏幕的移动,并不能控制输入光标的移动,所以为了降低代码编写的不方便,所以针对于不同的操作系统,oracle提供了一个ed命令,使用此命令可以直接执行本机的记事本程序,例如:windows中使用的是notepad,而linux之中使用的是vi,输入“ed a”。
此时会出现一个提示,询问是否要创建一个“a.sql”的文件,选择“是”,之后就可以打开记事本工具。
但是一旦现在使用ed指令在sqlplusw中打开记事本程序的话,原本的sqlplusw窗口将进入到一种阻塞状态,因为这个时候要一直等待文本编辑完成之后才可以,所以现在在文本中直接输入要操作的语句,而后可以使用“@a”指令执行刚才所编辑完的命令。
除了这种直接通过sqlplusw调用之外,在oracle中也可以直接在硬盘上编写一个文本文件,作为程序的执行语句,例如,现在在“d:\test.txt”文件,将语句输入完成之后,下面就可以直接在命令行中输入:“@d:\test.txt”,当然,如果说现在文件的后缀是“*.sql”的话,那么可以不用输入后缀:“@d:\test”、“@d:test”。
那么既然说在oracle数据库之中有许多不同的用户,那么就可以使用如下的语法进行用户的连接操作:
CONN 用户名/密码 [AS SYSDBA] ; |
以后只要是固定的语句,全部大写,如果那些语句是需要根据情况更改的,全部使用小写,可选的操作都使用[]表示。
如果现在使用的是普通用户那么可以不写AS SYSDBA,如果是数据库管理员,例如:SYS,就必须编写。
范例:使用sys用户登录
CONN sys/change_on_install AS SYSDBA ; |
很明显执行此语句之后,当前连接的用户就是sys,现在如果再次发出以下的查询指令:
SELECT * FROM emp ; |
但是这个时候出现一个提示“ORA-00942: 表或视图不存在”,意思是:找不到emp表,对于所有的表,肯定是分别属于不同的用户的,所以一张数据表的完整名称应该是“用户名.表名称”,例如,如果现在使用的是scott用户登录,那么查询emp表就是查询scott.emp,由于是一个用户的,可以不写用户名,而如果是不同的用户,就必须写上表的完整名称:
SELECT * FROM scott.emp ; |
另外,需要提醒的是,对于“用户名.表名称”,中的用户名也可以称为模式名,即:“模式名.表名称”。
如果说现在要是连接回scott用户的话呢就不用再写之前的“AS SYSDBA”了。
CONN scott/tiger |
CONN scott |
考虑到工具使用的方便性,所以在sqlplusw之中,也可以使用HOST指令调用本机操作系统所提供的方法。
范例:使用sys用户登录
CONN sys/change_on_install AS SYSDBA ; |
很明显执行此语句之后,当前连接的用户就是sys,现在如果再次发出以下的查询指令:
SELECT * FROM emp ; |
但是这个时候出现一个提示“ORA-00942: 表或视图不存在”,意思是:找不到emp表,对于所有的表,肯定是分别属于不同的用户的,所以一张数据表的完整名称应该是“用户名.表名称”,例如,如果现在使用的是scott用户登录,那么查询emp表就是查询scott.emp,由于是一个用户的,可以不写用户名,而如果是不同的用户,就必须写上表的完整名称:
SELECT * FROM scott.emp ; |
另外,需要提醒的是,对于“用户名.表名称”,中的用户名也可以称为模式名,即:“模式名.表名称”。
如果说现在要是连接回scott用户的话呢就不用再写之前的“AS SYSDBA”了。
CONN scott/tiger |
CONN scott |
考虑到工具使用的方便性,所以在sqlplusw之中,也可以使用HOST指令调用本机操作系统所提供的方法。
扫盲:DOS的copy命令
希望将d:\test.sql复制为d:\hello.sql,可以采用如下语法:
COPY 源文件路径 拷贝的目标文件路径; |
范例:实现拷贝
copy d:\test.sql d:\hello.sql |
范例:在sqlplusw之中使用此命令的时候必须在前面加上“HOST”前缀
HOST COPY d:\test.sql d:\hello.sql |
除了以上的一些基本的操作命令之外,下面还有一特别的命令需要提醒一下,关于数据库的实例关闭与重新启动。
如果要使用这些命令必须由超级管理员SYS完成。
1、 使用sys用户登录
CONN sys/change_on_install AS SYSDBA ; |
2、 立刻停止数据库实例:
SHUTDOWN IMMEDIATE |
一旦数据库的实例关闭之后,那么最麻烦的问题是无法直接在进行登录操作了,那么这个时候如果必须要使用sqlplusw登录的话,那么就必须在用户名上输入“/nolog”。
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist |
这两个错误信息只要以后看见,就按照下面的方式操作;
采用/nolog登录
3、 继续使用sys以超级管理员的身份登录;
4、 使用STARTUP命令开启数据库的实例服务;
1、 Oracle数据库中的四个主要用户:
·超级管理员:sys / change_on_install;
·普通管理员:system / manager;
·普通用户:scott / tiger;
· 海量数据用户(大数据用户):sh / sh;
2、 Oracle数据库的卸载问题;
3、 对于sqlplus操作的若干命令需要熟练;
4、 数据库的监听服务为以后程序操作的主要使用服务,关于问题的解决要清楚,用的时候会改;
5、 一定要记住scott表中的四张表的作用及彼此的关系。