Oracle经典笔记

发布 2021-05-11 22:36:28 阅读 3798

oracle数据库常用命令。

sqlplus scott/tiger as sysdba :将scott账户当作dba登录进来。

alter user scott account unlock; 用户解锁。

-账户解锁

1. conn / as sysdba

2. alter user scott account unlock;

3. alter user scott identified by tiger;

-数据类型。

1. binary_integer: 整数,主要用来计数而不是用来表示字段类型。

2. number: 数字类型。

3. char定长字符串

4. varchar2: 变长字符串。

5. date日期。

6 long长字符串,最长2gb

7 boolean: 布尔,可取true false null

number:

number ( precision, scale)

precision表示数字中的有效位。如果没有指定precision的话,oracle将使用38作为精度。

scale表示数字小数点右边的位数,scale默认设置为0.

p是精度,s是刻度。

精度代表所要存的位数,s是指小数点后保留几位。

例如存储1234567.89序定义number(9,2)

char和varchar2 的区别。

char的长度是固定的,而varchar2的长度是可以变化的, 比如,存储字符串“abc",对于char (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的varchar2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。 char的效率比varchar2的效率稍高。

-数据库的启动。

sqlplus / as sysdba

shutdown immediate

sql> startup nomount

sql> alter database mount

sql> alter database open

1. 在dos窗口中rman target / nocatalog

2. 关闭数据库shutdown immediate

3. 启动数据库到第二阶段:startup mount

4. 启动数据库到第三阶段:alter database open

-创建表空间。

create tablespace ts1 datafile 'c:\'size 10m;

-新建用户并授权。

1. 新建用户并制定密码 create user user1 identified by abc;

2. 指定用户所在的表空间 alter user user1 default tablespace ts1;

3. 授予连接和资源的权限 grant connect,resource to user1;

显示当前用户show user;

授予最大权限grant connect,dba to user1;

-备份数据库。

-远程连接数据库。

sqlplus sim/sim@orclclcsky101

sim/sim用户名/密码。

orclclcsky101: 配置的监听。

-oracle默认表。

desc 表名 :查看表结构。

·desc emp 员工表

desc dept 部门表。

desc salgrade 薪水等级表。

desc dual 空表,一般用于计算,例如:select 2*3 from dual;

scott账户的默认表。

emp:员工表。

empno(员工编号)

ename(员工姓名)

job(职位)

mgr(经理人编号)

hiredate(入职时间)

sal(薪水。

comm(津贴)

deptno(部门编号)

dept:部门表。

salgrade:等级表。

select语句。

-数学表达式。

select ename,sal*12 from emp; 薪水*12,年薪。

select ename,sal*12 year_sal from emp; 起别名。

select ename,sal*12 "year_sal" from emp; 加双引号保持字段的大小写原型。

select ename,sal*12+comm from emp; 所有人的年薪,薪水*12+津贴。

-sysdate

select sysdate from dual; 当前系统时间。

-字符串连接符 ||

sql> select sal||'ksks' from emp; |字符串连接符,字符串用单引号引起。

sal||'ksks'

800ksks

1600ksks

1250ksks

2975ksks

1250ksks

2850ksks

2450ksks

3000ksks

5000ksks

1500ksks

1100ksks

-去掉重复信息 distinct

·select distinct deptno from emp; 去掉deptno字段的重复信息。

·select distinct deptno,job from emp; 去掉deptno,job组合的重复的信息。

-过滤条件 where

·数**算符:< not and or in

·select * from emp where deptno=10; deptno(部门)等于10的员工信息。

·select ename,deptno from emp where deptno<>10; 部门不等于10的员工姓名和部门。

·select ename,sal from emp where sal>=800 and sal<=1500; 薪水大于等于800并且小于等于1500

·select ename,sal from emp where sal>1000 and deptno=10; 薪水》10并且部门=10的。

select ename,sal from emp where sal>1000 or deptno=10; 薪水》10or部门=10的都取出来。

-空值处理 null

·select ename,sal from emp where comm is null; 奖金为空的员工的姓名和工资。

·select ename,sal from emp where comm is not null; 奖金不为空的员工的姓名和工资。

·select ename,sal from emp where sal in (800,1500,3000); 薪水是的人的的姓名和薪水。

·巧妙使用函数nvl()

select ename,sal*12+nvl(comm,0) from emp;

如果comm是空值,则用0代替,如果不是null,则就是comm的值。

-模糊查询 like

·%:通配一个或多个字母、 _通配一个字母、 \转义字符。

·select ename from emp where ename like '%a%';姓名中带’a’的人。

·select ename from emp where ename like '_a%';姓名中第二个字母是a的人。

·select ename from emp where ename like '%查询姓名中带%的人,·select ename from emp where ename like '%escape '$作为转义字符,查询出姓名中带%的人。

-排序 order by asc/desc

·select * from dept order by deptno desc;将部门表按照部门编号降序排列。

·select ename,sal from emp order by sal asc;员工表按照薪水升序排列。

select ename,sal from emp where deptno<>10 order by sal asc;

部门不等于10的员工按照薪水升序排列。

select ename,sal,deptno from emp order by deptno asc,sal desc;

先按照部门编号升序排序,在部门编号相同的情况下再按照薪水降序排序。

select ename,sal*12 from emp

where

ename not like '_a%' and sal>100

order by empno desc;

取出来emp的名字、年薪,名字的第二个字母不包含a并且薪水大于100按照员工编号降序排列。

-函数。|-lower(e):转换成小写 substr(字段,n,m)将字段从n开始截取,截取到m(包含第m和第n)

|-ascii(a):求a的ascii码 chr(97):将ascii转换为字符。

-round(m,s):四舍五入到s位。

select lower(ename) from emp; 将ename转换为小写。

select ename from emp where lower(ename) like '_a%';查询小写的姓名包含a的数据。

select substr(ename,1,3) from emp;将姓名从第一个开始截取,截取到第三个(包含第一个)

select ascii('a') from dual; 求a的ascii码。

select chr(97) from dual; 将ascii转换为字符,本条语句结果为a

select round(23.567) from dual; 四舍五入到个位。结果为24

select round(23.567,2) from dual; 四舍五入到小数点后两位,结果为23.57

select round(23.567,-1) from dual; 四舍五入到小数点前1位,结果为20

-to_char(字段a,格式);将字段a转换为想要的格式显示出来。

select to_char(sal,'$99,999.9999') from emp;

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...