Oracle数据库学习笔记一

本文介绍了Oracle数据库的基础管理操作,包括用户管理、权限分配、表的管理等,并详细讲解了SQL查询语句的使用方法,如条件筛选、排序、分组等。
sql的组成:
DDL(Data Definition Language):数据库模式定义语言,关键字create
DML(Data Manipulation Language):数据库操作语言,关键字insert、delete和update
DCL(Data Control Language):数据库控制语言,关键字grant、remove
DQL(Data Query Language):数据库查询语言,关键字 select
事务的四个特性
原子性、一致性、隔离性和持续性。 通常被称为ACID特性
原子性( atomicity):一个事务是不可分割的工作单位,事务中包括的诸操作要么做要么不做。
一致性(consistency):事务必须是使数据库从一个状态变为另外一个状态。一致性与原子性密切相关。
隔离性(isolation):一个事务的执行不能被其他事务干扰。 即一个事务内部的操作及是使用数据对其它事务是隔离的,并发执行的各个事务之间不能相互干扰。
持续性(durability):指事务一旦提交。他对数据库中的数据改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。
如何判断一个项目使用什么数据库?
1.项目的规模
 a.负载量多大,用户多大
 b.成本
 c.安全性
Oracle安装会自动生成两个角色:sys和system
(1)sys用户是超级用户,具有最高权限,具有sysba角色,有create database的权限。
(2)system 用户是 管理员操作,权限也很大,具有sysoper权 限,没有create database的权限。默认的密码是chang_on_install
(3)一般讲,对数据库维护,使用system用户登录就可以了。
Oracle用户的管理:
创建一个用户:
create user   xiaoming identified by m123;(Oracle中密码必须以字母开头)

切换用户:
conn system/manager (用户名/密码)

给用户修改密码(在系统管理员的权限下可以修改用户的密码):
password xiaoming;

删除用户:
drop user xiaoming;(xiaoming ——用户名)
说明:再删除用户时注意,如果要删除的用户已经创建了表,那么就需要在删除的时候带一个参数,这个参数就是cascade

为普通用户授权(sys/system):
grant connect to xiaoming;(connect为一个角色,其中有其中权限)

Oracle中权限和角色的概念:


希望scott用户将访问emp表的权限给xiaoming:
代码:grant select on emp to xiaoming
 
            grant all on emp to xiaoming;(all 所有权限)

scott希望收回xiaoming对emp表的查询权限:
revoke select on emp from xiaoming


对权限的维护:
scott希望收回xiaoming对emp表的查询权限/希望xiaoming还可以将这种权限传递给别人:
--如果是对象权限,就加入with grant option
revoke select on emp from xiaoming with grant option

--如果是系统权限,就加入with admin option
system 给xiaoming权限时,
grant connect to xiaoming with admin option

?如果Scott把小明对emp表的select权限收回:小红会怎么样?
小红的权限也将被回收。
使用profile管理用户口令:

账户锁定:
首先创建一个profile文件(红色的为固定的格式):
crate profile lock_account limit failed_login_attempts 3 password_lock_time 2;

然后再指定使用的用户:
alter user xiaoming profile lock_account;

给账户(用户)解锁:

alter user xiaoming account unlock;

终止口令:


口令历史:



Oracle表的管理:
表和列的命名规则:

Oracle的数据类型:





建表:


修改表:
添加一个字段:
alter table student add classid number2));

修改字段的长度
alter table student modifyxm varchar230));

修改字段的类型/或是名字(不能有数据)
alter table student modifyxm char30));

删除一个字段(不轻易使用)
alter table student drop column sal

修改表的名字
rename student to stu;

删除表
drop table student

保存点(有经验的Oracle数据库操作员都会在操作之前设置保存点):
savepoint aa
rollback to aa

查询表


查看表的结构
desc dept

查询所有列
select * from dept

如何取消重复行
select distinct deptnojob from emp

查询smith的薪水,工作,所在部门(Oracle中where后的数据区分大小写,选择前的数据可以不区分大小写)
select deptnojobsal from emp where ename=“smith”;

显示每个员工的年工资
select sal*12ename from emp
select sal*12 “年工资”,ename from emp;(别名=“年工资”)

如何处理null值?
使用nvl来处理,如下

如何显示工资高于3000的员工
select enamesalfrom emp where sal>3000

显示入职日期在1982年之后的员工
select enamehiredate from emp where hiredate>"1-1月-1982"

怎么显示工资在2000-2500之间的员工
select enamesal where sal>2000 and sal<2500

怎么显示首字母为m的员工
select enamesal from emp where ename like s%’;

怎么显示第三个名字字母为大写O的所有员工
select enamesal from emp where ename like __O%’;

使用is null 操作符。怎么显示没有上级的员工
select * from emp where mgr is null

使用逻辑操作符
查询工资高于500或者岗位是 manager的雇员,同时还要满足他们的姓名首字母为大写的J
select * from emp where (sal > 500 0r job=manager) and ename like "J%";

如何按照部门号升序二雇员的入职时间降序排列
select * from emp order by deptno asc, hiredate desc;
使用列的别名进行排序:按照年薪来排序
select ename,(sal+nvl comm0))*12 as “年薪” from emp order by “年薪”;

Oracle表的复杂查询
如何显示所有的员工中工资中最高工资和最低工资
select max sal),minsal from emp    
select enamesal from emp where sal=(select maxsal from emp);

请显示工资高于平均工资的员工
select avgsalfrom emp
select enamesal from emp where sal> select  avgsalfrom emp);

group by 和 having
求每个部门的平均工资和最高工资
select avgsal),maxsal),deptno from emp group by deptno

显示每个部门的每种岗位的平均工资和最高工资
select avgsal),maxsal),deptno job from emp group by deptnojob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半路笙歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值