Oracle学习笔记(一)
首先推荐基本书籍: 《Oracle实用教程》、《深入浅出Oracle》
目前主流数据库包括
● 微软: sql server 和 access
● 瑞典MySQL: AB公司 mysql
● ibm公司: db2
● 美国Sybase公司: Sybase
● ibm公司: informix
● 美国oracle公司: oracle
关于DBA认证等级:
oca(oracle初级认证)
ocp(oracle专家级认证)
ocm(oracle大师级认证)
Oracle安装会自动的生成sys用户和system用户:
(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install 。
(2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager 。
(3)一般讲,对数据库维护,使用system用户登录就可以啦。
也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
system用户的默认密码:manager
scott用户的默认密码:tiger
oracle的一般常用命令:
1.linesize 说明:设置显示行的宽度,默认是80个字符
show linesize
set linesize 90
2.pagesize说明:设置每页显示的行数目,默认是14
3.conn
用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper
4.disc
说明: 该命令用来断开与当前数据库的连接
5.psssw
说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
6.show user
说明: 显示当前用户名
7.exit
说明: 该命令会断开与数据库的连接,同时会退出sql*plus
创建用户:在oracle中要创建一个新的用户使用 create user 语句,一般是具有dba(数据库管理员)的权限才能使用。
基本语法:create user 用户名 identified by 密码
给用户修改密码:如果给自己修改密码可以直接使用
基本语法:password 用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限
基本语法:alter user 用户名 identified by 新密码
给用户授权:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令 revoke。
基本语法: grant 权限/角色 to 用户
oracle数据库启动流程
oracle启动流程-windows下
1) lsnrctl start (启动监听)
2) oradim –startup –sid 数据库实例名
oracle启动流程-linux下
1) lsnctl start (启动监听)
2) sqlplus sys/change_on_install as sysdba (以sysdba 身份登录,在oracle10g后可以这样写)
sqlplus /nolog
conn sys/change_on_install as sysdba
3) startup
连接我自己的oracle数据库:
SQL> show user;
USER 为 " 显示自己当前使用的用户 "
SQL> conn system/0108;
已连接。
SQL> grant connect to creep;
授权成功。
SQL> conn creep/0108;
已连接。
关于授权的例子:
*希望xiaoming用户可以去查询scott的emp表
grant select on emp to xiaoming
* 希望xiaoming用户可以去修改scott的emp表
grant update on emp to xiaoming
* 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表
grant all on emp to xiaoming
* scott希望收回xiaoming对emp表的查询权限
revoke select on emp from xiaoming
clerk 普员工
salesman 销售
manager 经理
analyst 分析师
president 总裁
mgr 上级的编号
hiredate 入职时间
sal 月工资
comm 奖金
deptno 部门
dept:部门表
deptno 部门编号
accounting 财务部
research 研发部
operations 业务部
loc 部门所在地点
salgrade:工资级别
grade 级别
losal 最低工资
hisal 最高工资
问题:如何显示所有员工中最高工资和最低工资?
SELECT MAX(sal),min(sal) FROM emp;
SELECT MAX(sal),min(sal) FROM emp;
问题:查找已经入职8个月多的员工
SQL> select * from emp where sysdate>=add_months(hiredate,8);
问题:显示满10年服务年限的员工的姓名和受雇日期。
SQL> select ename, hiredate from emp wheresysdate>=add_months(hiredate,12*10);
问题:对于每个员工,显示其加入公司的天数。
SQL> select floor(sysdate-hiredate) "入职天数",enamefrom emp;
SQL> select trunc(sysdate-hiredate) "入职天数",enamefrom emp;
问题:找出各月倒数第3天受雇的所有员工。
SQL> select hiredate,ename from emp where last_day(hiredate)-2=hiredate;
SQL> select ename, to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99999.99') from emp;
问题:显示1980年入职的所有员工
SQL> select * from emp where to_char(hiredate, 'yyyy')=1980;