oracle基础操作(1)
以前只是简单用程序操作数据,现在才发现自己没有系统的学习过,所以想在这里记录一下自己在数据库方面遇到的问题,会参考查询网络上一些资料,现在看的是韩顺平oracle视频的笔记;
一、关于oracle系统的一些常用操作
1、oracle安装时会自动生成sys和system用户,sys是超级用户,具有最高权限,具有sysdba角色,有创建数据库的权限,默认密码是:change_on_install;system是管理操作员,具有sysoper角色,没有创建数据库的权限默认密码是:manager;
2、desc 表名;查看表结构时:使用Command window(命令窗口),不是SQL Window
3、常用关于表查询
select table_name from user_tables; //当前用户的表
select table_name from all_tables; //所有用户的表
select table_name from dba_tables; //包括系统表(需要用户权限)
select * from user_tab_columns where table_name='表名'
4、set timing on;(命令窗口)打开显示操作时间的开关
5、sql*plus常用命令:
conn 用户名/密码 [as sysdba/sysoper] 对应的是disc
psssw 修改用户密码,需要用SYS/SYSTEM登陆
show user 显示当前用户
6、用户管理
创建用户:create user 用户名 identified by 密码; (密码以字母开头)
给自己修改密码:password 用户名;
给别人修改(有dba权限):alter user 用户名 identified by 新密码
删除用户:drop user 用户名 【cascade】(用户创建了表时,带cascade参数-级联删除该用户的所有对象)
7、权限
oracle的权限分为系统权限和对象权限:
系统权限:用户对数据库的相关权限(角色)
grant connect to scott with admin option;(system给scott用户connect角色)
对象权限:用户对其他用户的数据对象操作的权限(select,insert,update,delete,all)
grant select on emp to scott;(赋给scott用户查询emp的对象权限)
grant all on emp to scott;(赋给scott用户查询,修改,删除,添加emp的对象权限)
revoke select on emp from scott;(撤销scott用户对emp表的select对象权限)
8、给用户解锁:
alter user scott account unlock;
二、简单使用查询
(1)distinct 取消查询结果的重复行,distinct紧跟在selectt之后
(2)使用连接字符串(||)
select ename || ' is a ' || job from emp
(3)查询中,别名需要使用“”号圈中文,英文用‘’
(4)查询时,若列里有一个分组函数,其他的都必须是分组函数,否则就出错
select ename, max(sal) from emp;
分组查询时,分组字段可以和分组函数一起出现在查询列里
SELECT AVG(sal), MAX(sal), deptno FROM emp GROUP by deptno;
分组函数只能出现在选择列表、 having、 order by 子句中(不能出现在 where中)
三、连接查询:
Book表:BookId,BookName,StudentId
Student表:StudentId,StudentName
(1)默认查询:select * from book b,student s where b.studentid=s.studentid
同
内连接:select * from book b inner join student s on b.studentid=s.studentid
(2)左外连接:select * from book b left join student s on b.studentid=s.studentid
以Book表的b.StudentId为基准,遍历Student表中与之匹配的s.StudentId:若b.StudentId含有s.StudentId匹配项,则
进行拼接,然后遍历Student表的下一条s.StudentId,当查询完毕则进入下一条b.StudentId。若b.StudentId没有相应
s.StudentId匹配项时,则显示左表的项,拼接右表的项显示为NULL。
select * from book b left join student s on b.studentid=s.studentid where b.studentid=s.studentid
同
select * from book b,student s where b.studentid=s.studentid
(3)union用于合并多个select语句的结果,要求select查询的列相同(自动取消重复行);
union all不取消重复行