oracle学习笔记

发布 2021-05-11 23:09:28 阅读 2777

数据操纵语言dml

select 查询

可以查询所有的列也可以查询指定的列,中间用逗号隔开,当null和别的数字加减乘除的时候结果都是null

select 显示别名例如 select last_name name, commission_pct comm from emp;

意识是显示的时候last_name 用name 显示 commission_pct 用comm显示不同的列之间用逗号隔开,不同的名字之间用空格隔开默认的显示的时候都是大写,如果有大小写或汉子的话,要显示的内容用”” 引起来。

例如:select last_name “姓名”, commission_pct comm from emp;

连接是|| 例如 select last_name ||job_id as “employees” from emp;

显示的时候 last_name和job_id显示在一个列列里名字是employees

也例如:select last_name ||is a’||job_id as “employee” from employees

select distinct last_name from emp; 重复的行显示一行。

describe 列出结构。

例如 desc emp;

where子句,当where条件是字符串或者是日期,要用单引号引起来,where条件区分大写的,假如有时候不知道大小写的话,可以通过upper更改。

例如:select last_name from emp where upper(last_name) =whalen’;

lower 后面是改成小写。

in条件。例如:select manager_id from emp where manager_id in (100,101,201);

他和这条语句是一样的:select manager_id from emp where manager_id=100 or manager_id=101 or manager_id=201;

字符也可以的例如:select manager_id from emp where last_name in (‘wang’ ,li’);

select语句别名用双引号引起来。

like 模糊查询。

代表一个字符 %代表多个字符。

怎样创建表

建表。-学生表

create table student ( 表名

xh number(4), 学号

xm varchar2(20), 姓名

sex char(2), 性别

birthday date, -出生日期

sal number(7,2) -奖学金

-班级表 create table class(

classid number(2),

cname varchar2(40)

修改表 添加一个字段。

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

修改一个字段的长度

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

修改字段的类型/或是名字(不能有数据) 不建议做

sql>alter table student modify (xm char(30));

删除一个字段不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)

sql>alter table student drop column sal;

修改表的名字很少有这种需求

sql>rename student to stu;

删除表 sql>drop table student;

更改日期显示格式。

sql> alter session set nls_date_format='yyyy-mm-dd';

session altered.

sql> select sysdate from dual; (查看日期显示格式)

sysdate

错误写法:select * from student where sex = null;

正确写法:select * from student where sex is null;

如果要查询sex不为null,则应该这样写:

select * from student where sex is not null;

insert into emp values ('a002', mike', 男', 1905-05-06', 10);

这样添加数据的时候,每一列的数据都要写上。

update emp set email=''where id='01'; 增加一行的某一个值。

sql> update student set classid='2' where classid is null;

sql> update student set sal=null where sal is not null;

sql> update student set xingming='null' where xingming is not null;

update student set birthday='1986-03-19',sal='300',classid='2' where xuehao=08;

insert into emp (id,name,sex,age) values(12,'德华','男',35)增加一行。

alter table emp add(爱好 varchar2(20));增加一列。

alter table emp drop column 爱好。

alter table emp drop column sex 删除一列。

s**epoint a; -创建保存点

delete 的数据可以恢复。

rollback to a; -恢复到保存点

现在说下对象权限,现在要做这么件事情:

希望xiaoming用户可以去查询emp表

希望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

对权限的维护。

希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。

-如果是对象权限,就加入 with grant option

grant select on emp to xiaoming with grant option

sql> create user xiaohong identified by m123;

用户已创建。

sql> grant connect to xiaohong;

授权成功。

如果是系统权限。

system给xiaoming权限时:

grant connect to xiaoming with admin option

sql> revoke select on emp from xiaoming;

撤销小明对emp表的查询权限。

例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。

创建profile文件 (用管理员的身份去操纵)

sql> create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

sql> alter user scott profile lock_account;

2.给账户(用户)解锁

sql> alter user tea account unlock;

例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。看看怎么做。

sql> create profile myprofile limit password_life_time 10 password_grace_time 2;

sql> alter user tea profile myprofil;

如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

例子: 1)建立profile

sql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10

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

2)分配给某个用户

alter user guotao profile password_history;

概述:当不需要某个profile文件时,可以删除该文件。

sql> drop profile password_history 【casade】

注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。

加了casade,就会把级联的相关东西也给删除掉。

char 定长最大2000个字符。

例子:char(10) ‘小韩’前四个字符放‘小韩’,后添6个空格补全如‘小韩’

varchar2(20) 变长最大4000个字符。

例子:varchar2(10) ‘小韩’ oracle分配四个字符。这样可以节省空间。

clob(character large object) 字符型大对象最大4g

char 查询的速度极快浪费空间,查询比较多的数据用。

varchar 节省空间

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

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

number(5,2)

表示一位小数有5位有效数,2位小数

范围:-999.99到999.99

number(5)

表示一个5位整数

范围99999到-99999

日期类型 date 包含年月日和时分秒 oracle默认格式 1-1月-1999

问题:如何按照工资的从低到高的顺序显示雇员的信息?

select * from emp order by sal;

问题:按照部门号升序而雇员的工资降序排列

select * from emp order by deptno, sal desc;

order by 默认是升序加desc就是降序了。

如何显示所有员工中最高工资和最低工资?

select max(sal),min(sal) from emp;

查询最高工资员工的名字,工作岗位

select ename, job, sal from emp where sal = select max(sal) from emp);

ORACLE学习笔记

rac real application clusters 真实应用集群。ohs oracle http server sga system global area 系统全局区,是系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。实例 存取和控制数据数...

Oracle学习笔记

参数文件 记录了控制文件的位置,控制文件是一个非常小的二进制文件,最大。可以增长到 64mb,控制文件包括如下主要信息 数据库的名字,检查点信息,数据库创建的时间戳 所有的数据文件,联机日志文件,归档日志文件信息 备份信息等 有了这些信息,oracle 就知道那些文件是数据文件,现在的重做日志文件是...

ORACLE学习笔记

目录。oracla管理 1 1.登录sqlplus 1 1.1.sysdba 身份登陆 1 1.2.普通用户登陆sqlplus 1 2.常用命令 1 3.格式化提示符 2 4.查看系统状态 2 4.1.查看实例状态 2 4.2.查看表 2 5.关闭 启动 2 6.创建表空间 3 7.用户和权限 3 ...