Oracle笔记

发布 2021-05-11 22:35:28 阅读 4025

删除用户。

drop user

conn system\liu621 转换用户)

在删除用户的时候注意。

如果要删除的用户已经创建了表了那么就需要带一个参数 cascade;带着它就把用户所涉及的表统统删除。

付权限的是:系统管理员 system 或 sys(他有create database 的功能而system没有其他类似)

付权限:(oracel有一百四十多种权限。分为一种系统权限【session属于系统权限】(指用户数据库的相关权限),一种是对象权限(指用户对其他用户的数据对象 (表视图过程)【select insert update delete all【所有权限】等等】操作的权限 ))

角色:有七种权限(分为两种,一种是预定义角色,另一种是自定义角色)

connect(属于预定义,它自身有一定的权限如 session 有它就可以登陆)

dba角色

resource角色。

dba角色包括connect resource

grant connect to liumaochang;

这样就可以登陆了可以连接到数据库了

grant resource to liumaochang;

这样就可以创建表了。

desc命令看表的结构。

一个用户去查询别的用户中的表需要授权。

grant select on emp to liumaochang;

system sys scott 都有这个权力 liumaochang本身没有。

撤销权限。revoke select on from liumaochang;

/对权限的维护。

希望刘茂昌把scott付给他的权限在付给别人。

-如果是对象权限就在后面加入with grant option

grant select on emp to liumaochang with grant option;(这样授权的话刘茂昌就可以授权给别人了)

-如果是系统权限

system 给liumaochang权限时;

grant connect to liumaochang with admin option ;

这样的话 liumaochang 就可以给别人付这个权限了。

若liumaochang的权限被收回那么他授权的人的权限也被收回。

使用profile 管理用户口令。

1)、账户锁定。

create profile aa limit failed_login_attempts 3 password_lock_time 2;

alter user liumaochang profile aa;

2)、解锁。

alter user liumaochang account unlock;

3)、终止口令(让用户定期修改密码)

create profile aa limit password_life_time 10 password_grace_time 2;

每十天修改一次宽限期两天)

alter user liumaochang profile aa;

口令历史:1 建立profile

create profile bb limit password_life_time 10 password_grace_time 2 password_reuse_time 10

指定口令可重用时间即10天后就可以重用)

2 分配给摸个用户。

删除profile

drop profile aa【cascade】

创建表:create table student(name char(2),sex varchar2(10));

字符型:char 定长最大符。

char(10)‘小明’前四位放‘小明’,后添6空格补满’小名 ’优点查询速度快,浪费空间。

varchar2(20) 自动变长最大符,查询速度慢,节省空间,’小汉’oracel 分配四个字符。

clob(charcter large objiect) 字符型大对象最大四g

数字型:number 范围 -10的38次方 10的38次方。

可以表示整数,也可以表示小数。

number (5,2)

表示一个小数有5位有效数字,两位小数。

范围-999.99 ~~999.99

number(5) 表示一个五位整数。

范围-99999~~99999

修改表:desc命令查看表

desc student

添加一个字段:

alter table student add (classid number(2));

修改字段长度。

alter table student modify (xm varchar2(30));

修改字段类型/是名字(不能有数据);

alter table student modify (xm char(30));不建议做这一个,若是一个空表可以,若有数据就麻烦了)

删除一个字段;(不建议去删)

alter table student drop column sal;

修改表名;rename student to stu

删除表。drop table student

添加数据:insert into student values(‘a001’,’张三’’男’,’28-9月-90’,’12’,2560) oracle 中日期输入必须这个样式,另外除非你这样更改一下就可以和中国的日期表达方式相似了,alter session set nls_date_fromat=’yyy-mm-dd’;

insert into student values(1,’李四’,’女’,’1990-9-28’)

添加一部分字段:

insert into student (xh ,xm,sex)values(‘a111’,’小红’,’女’)

插入空值:insert into student (xh,xm,sex,brithday)values (1,’qq’,’男’,null);

查找没生日的学生。

select * from student where brithday is null;

修改一个字段:

update student set sex=’女’ where xh=’1’;

修改性别为男的薪水,为原来的一半。

update student set xinshui=xinshui/2 where sex =’男’;

修改多个字段:

update student set set xinshui=xinshui/2,classid=’2’ where sex=’男’;

删除数据:delete from student 删除所有记录,表结构还在,写日志是可以恢复的,速度慢。

s**epoint(保存点) 【写日志】

rollback(回滚找回数据,回滚到保存点)

s**epoint aa;

delete from student

rollback to aa ;

select * from student;数据能找回。

drop table student 删除表的结构和数据。

delete from student where xh=’222’;删除一条记录。

truncate table student删除表中的所有记录,表结构还在,不写日志无法找删除回记录,速度快。

查询:查看表结构:

desc student;

查看所有列:

select * from student

这样速度有点慢,不提倡用select*)

查询指定列:

select name,sex from student;

如何取消重复行:

select distinct number from emp;

使用算数表达式:

如何显示员工的年工资?

select sal*12 ,tom from emp;

select sal*12”年工资” from emp; 这样更形象)

如何处理空值,null

算数表达式里若有一个空值那么结果就是一个空值。

select sal*12+nvl(comm,0)*12 ”年工资” ,name ,conn from emp;

nvl这个方法是若为空就取零,若不为空就是comm

使用where字句:

select name,date from student where date>’1-1月-1990’;

多个条件之间用and

如何使用like:

;表示0到多个字符。

:表示任意单个字符。

在where条件中使用in:

如何查询员工为 123,234,235的人

select * from student where in(123,234,235)

如何使用is null操作。

如何显示没有上级的员工。

select * from emp where mgr is null;

使用逻辑操作符号:

select * from emp where (sal>500 or job=”manager”) and name like ‘j%’;

使用order by 字句:

select * from emp order by sal;(默认从低到高)

select * from emp order by sal desc ;(从高到低)

select * from emp order by sal , yuangonghao desc ;

升序降序。使用列的别名排序;

select name ,(sal+nvl(comm.,0))*12 ”年薪” from emp order by “年薪”;

或。select name ,(sal+nvl(comm.,0))*12 as ”年薪” from emp order by “年薪”;

oracle笔记

1 查看表的结构 desc tabledescription 2 set timing on 打开操作表的时间记录。3 消除重复行 distinct 4 大小写不区分的是列名,而不是里面的数据。1 可以对某一列直接进行加减乘除。两列相加。2 如果有一列为null,所得结果也为空。使用nvl函数处理n...

Oracle笔记

第1页1.oracle 的使用 1.1.sqlplus 的命令 初始化表的位置 set nls lang american 设置编码才可以使用下面脚本 cd oracle home rdbms cd demo 我们目前使用的是oralce 9i 9201 版本 select from v versi...

oracle笔记

clear 清屏。col title for a20 设置title的字符最多有20个。oracle介绍。rdbsrdb 基本的存储结构是,二维表。表头。行。列。字段。sql的分类 dsl 关键字 select dml 操作 insert delete update ddl 定义 create dr...