解锁scott:mysql
打开SQLPLUS(是oracle的自带的工具软件,主要用于执行SQL语句,pl\sql块),也能够在“运行”里面输入“sqlpus或sqlplusw" 输入:用户名(如system),密码linux
输入 alter user scott account unlocksql
PL/SQL developer属于第三方软件,主要用于开发,测试,优化oracle pl/sql的存储过程。这款软件用的不少,须要单独安装。数据库
企业管理器windows
oracle 经常使用的sql plus命令浏览器
分配权限session
方案(schema)oracle
理解:当一个用户建立好后,若是该用户建立了任意一个数据对象,这时咱们的dbms就会建立一个对应的方案与该用户对应,而且该方案的名字和用户一致。app
赋权:grant [select |delete|insert|update|all] on 表名 to 用户名 with grant option; with grant option 表示获得权限的用户能够把权限继续分配。如:grant all on scott.emp to stu;若是是管理员权限则带 with admin option
ssh
查询:select * from scott.emp
收回权限:revoke [select |delete|insert|update|all] on 表名 from 用户名
oracle用户管理
profile管理用户口令:profile是口令限制,资源限制的命令集合,当创建数据时,oracle会自动创建名称为default的profile,当创建用户没有指定profile选项,那oracle就会将default分配给用户。
使用profile文件对口令进行管理,
建立: create profile 文件名 limit failed_login_attempts 3 password_lock_time 2 ,
使用: alter 用户名 profile 文件名;解锁:alter 用户名 account unlock;
终止口令:create profile 文件名 limit password_life_time 10 password_grace_time 2; 10天修改密码,密码的宽限是2天
删除:drop profile 文件名 【cascade】
oracle数据库的启动流程
linux里的ssh远程登陆工具,systeminfo能够显示系统的基本信息
windows操做系统:
lsnrctl start(启动监听)
oradmin -startup -sid orclhsp (启动实例)
unix操做系统/linux系统: 和windows相差不大
oracle登陆认证方式
conn ***/*** as sysdba //可以链接成功,只要as sysdba 后系统不会去验证用户名和密码就自动登陆。
数据库基本概念
1.数据类型
select *,dump(name) from table ; dump查看字段的详细信息(编码,长度等)
char(size),size不能超过2000,是定长。若是是英文字母,能存放size个字符,若是是中文,占用两个字符空间。
varchar2(size),varchar2的性能更优,是变长,最长可存放4000个字符,字母占一个字节,中文占两个字节。
nchar(size),是unicode数据类型,定长,最大2000字符。不论是英文仍是中文,能存放size个字符。unicode的好处:为了知足各国不一样大小容量的文字。
nvarchar2(size),unicode数据类型,变长,最大4000个字
clob(character large object),字符型大对象,最大8tb
blob(binary large object),二进制数据,能够存放图片/声音8tb
number(p,s),数值类型,变长,p为整数,s为小数位 ;范围:1<=p<=38,-84<=s<=127,保存数据泛微-1.0e-130<=number1.0e+126,p为有效位,从左往右数每个非0的数就是每个有效位,如number(5,2) 范围-999.99-999.99;number 什么都不写,保持原数;number(6,-2),存123.55——存入100,167.98——存入200;
date,日期型,默认的日期格式是美国格式(“DD-MM-YY"),若是要用习惯的格式的话要用oracle函数,timestamp(n)游戳类型,当数据更新时,日期自动更新;日期类型必须加单引号。to_date(string,'format');
2.基本语法
修改表名:rename 旧表名 to 新表名
查看表结构:desc 表名
修改列名:alter table 表名 modify (列名 列类型); 当写where语句为空时 where name is null
删除列名:alter table 表名 drop(列名1,列名2);
增长列名:alter table 表名 add(列名 列类型);
删除行后找回:delect * from mytable ;找回数据 先 savepoint a;而后rollback to a ; truncate table 表名 删除之后没法找回。
查询:select [distinct] * from mytable;distinct去重复数据。sql语句(如表名、字段名)不区分大小写,内容是区分大小写的。
soundex:返回一个与给定的字符串读间相同的字符串。select * from table1 where soundex(name)=soundex(‘weather’);
ABS:返回指定值的绝对值。select abs(price),abs(-100) from dual;
ACOS:给出反余弦的值。ATANT:返回一个数字的反正切值。COS:返回一个给定数据的余弦。select cos(-3.1415926) from dual ;———— -1
CEIL:返回大于或等于给出数字的最小整数。 select ceil(3.14) from dual;FLOOR:对给定的数据取整数;LN:返回一个数据的对数;
3.基本运算
nvl(字段名,0):用于处理数据为null时的问题,若是字段为空时不取0,若是不为空取自己值。
|| 链接字符串。 select name ||”年龄是“|| age from table1; // 张三年龄是25
alter user scott account lock;用户锁定之后,只是不能登陆,可是表仍是能够访问
to_char:字符格式的转换;//如:where to_char(birthday,'yyyy-mm-dd')>'1995-1-1'; 4月出生的:to_char(birthdat,'mm')='4'
like:%表示0到多个字符,_ 表示一个字符;
order by:是对查询结果进行排序。默认是升序asc。支持别样查询。order by后面是能够加表达式的。
数据分组:max、min、avg、sum、count,当返回一个值时能够放 在一块儿查询,当返回的结果条数不同时一块儿查询会出错;avg(SAL),当SAL为null时不会统计。//统计带空的时 select sum(SAL)/count(*) from table1; count统计时也会排除null的项。
SQL语句的执行顺序:一、默认状况下是从右向左执行;
group by 和 having:group by 用于对查询的结果分组统计,group by 字段1,字段2 ;having子句用于过滤分组显示的结果,即至关于group by的查底结果where 的做用。
自查询:select * from table1 t1,table1 t2 where t1.name1=t2.grad1(+);必定要取别名不然会出错。(+)是外联的附号,(+)写在左边是右外联,写在右边是左外联。
4.子查询
单行子查询:子查询只返回一条记录。
多行子查询:子查询返回多条记录。any指结果中的任一一条数据都知足条件。
多列子查询:查询查询结果知足两列条件 //如查询与smith的部门和岗位彻底相同的全部雇员 :select * from emp where (detpno,job)=select (depno,job)from emp;
注:oracle支持数字排序,可是不能数字不能超过列数;子查询的时候必须指定别名;where上面取个别名,前面的语句将没法识别;desc显示表结构。
//显示部门最高工资的人的详细信息
分页查询:
mysql分页:select * from 表名 where limit 从第几条取,条数
sql server分页:select top 10 * from (select rownum,tb1.* from tb1 where rownum>=10 );
oracle分页:三层过虑 select t2.* from(select t1.* ,rownum rn from (select * from emp) t1 where rownum<=6) t2 where t2.rn>=4;
显示上级的个数(distinct mgr)去掉重复的了再统计;count(列名)统计一列;
模拟10W条数据
5.合并查询
union:取得两个结果集的并集。会自动去掉结果集中的重复行。
union all:和union类似,可是不会去掉重复行,也不会排序。
intersect:取交集
minus:取差集,A1集合-A2集合。cube立方体 select avg(sal),deptno,job from emp group by cube(empno,job)先对empno分组、再组job分组,再对empno和job分组
6.内链接和外链接
内链接:就是利用where子句对两张表的迪卡尔集进行筛选。 select ... tb1 inner join tb2 where tb1.id=tb2.id;(只有两张表两边都匹配的时候才被选择)
外链接:左外连,右外连,彻底外连 。
left join...on(左侧的表彻底显示);另一种写法select * from stu ,emam where stu.id=exam.id(+);
right join...on (右边的表彻底显示);另一种写法select * from stu ,emam where stu.id(+)=exam.id;
full join...on (左边的表和右边的表都显示);
7.小结