oracle基本语法(5)

1>2个数值处理函数
2>5个字符处理函数
3>2个类型转换函数
4>5个分组函数
5>1个空值转换函数
6>常见数据库对象
7>内连接与外连接

1、数值处理函数:
round(参数1,参数2):进行四舍五入,参数1,需要处理的数据(原数据),参数2,截取位数;参数2>0,向右,<0,向左,=0,小数点位置
trunc(参数1,参数2):直接截取,参数1,需要处理的数据(原数据),参数2,截取位数;参数2>0,向右,<0,向左,=0,小数点位置
select count(*),round(avg(sal),0),deptno from emp group by deptno;
select count(*),trunc(avg(sal),-2),deptno from emp group by deptno;

2、字符处理函数:
lower(参数):将所有字母都变成小写;
upper(参数):将字母都变成大写;
initcap(参数):首字母大写,其余小写
length(参数):求字符串长度
substr(参数1,参数2,参数3):取子串 ,参数1,被截取的字符串;参数2,从哪里开始截取;参数3,截取几位,截取的位数;

参数:可以是字符串,也可以字符串类型的列名,普通字符串
例如:查询员工的姓名和岗位,姓名要小写;
select ename,lower(ename),job from emp;
普通字符串:'HELlo wOrLd!'

select lower('HELlo wOrLd!'),upper('HELlo wOrLd!'),initcap('HELlo wOrLd!'),length('HELlo wOrLd!'),substr('HELlo wOrLd!',2,6) from dual;
虚表:dual 作用:处理跟查询表数据,表结构没有直接关系查询操作;
select 456*789 from dual;
select sysdate from dual;

3、转换函数:to_char, to_date
to_char(参数1,参数2):主要是将日期类型的数据转换成字符串类型的数据,还可以规范日期格式;
参数1,是日期类型的列名或者数据;参数2 是格式,常用的格式:“yyyy-mm-dd hh24:mi:ss”
用法:to_char(参数1,参数2):参数1,待转换列名;参数2:转换成格式
用途一:单纯的规范日期数据的格式
select ename, hiredate,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),job from emp;
用途二:用在查询条件中,根据日期类型的列来查询;
例如:查询在1981年10月1日之前入职的员工信息?
select * from emp where to_char(hiredate,'yyyy-mm-dd')<'1981-10-01';
to_date(参数1,参数2):主要是将字符串类型的日期数据转换成日期类型的;主要用在插入insert语句中
用法:to_date(参数1,参数2):参数1,待转换的字符串;参数2:转换成格式

例如:插入入职日期是1999-10-10的员工;
insert into emp values(2222,'sunsun','CLERK',7902,'1999-10-10',2000,100,10); --》报错,格式不匹配
insert into emp values(2223,'sunsun','CLERK',7902,to_date('1999-10-10','yyyy-mm-dd'),2000,100,10);
select * from emp where ename='sunsun';
4、分组函数
count(参数):统计查询语句返回的行数;
max(参数):最大
min(参数):最小
avg(参数):平均值
sum(参数):求和

注意:参数一般是列名

5、空值转换函数
nvl(参数1,参数2)
功能:转换空值为一个特定的值
参数1:需要转换到列名,参数2:需要指定的特定的值

6、常见的数据库对象

①表(table):由行和列组成的二维表格;表格中的行也叫记录,列也叫属性;
②视图(view):用来简化查询语句的,可以让一个复杂的查询语句变得简单;
例如:
create view v0726 as
select cname, chour, tname from course where cid in (select cid from score where sid=(select sid from student where sname='王五'));
select * from v0726;
可见创建视图的语法create view 视图名 as + select 语句;

创建备份表:create table 表名 as select 语句
create table empbf as select * from emp;
赋系统权限grant 权限1,权限2... to 用户名;
例如:
普通用户没有创建view的权限,需要sys授权,命令:grant create view to scott;
create session ----登录数据库,创建会话;
create table ----创建表的权限
create view ---创建视图的权限
create sequence ---创建序列的权限
create procedure ---创建存储过程的权限
create synonym ----创建同义词的权限
create tablespace ---创建表空间的权限

③索引(index):提高查询效率;如果有索引,可以查询的快一些,主要用在表中数据量很大的情况才有效果;
select * from student where sphone=18183929386 ;
创建索引语法:create index 索引名 on 表名(列名);

注意:索引不宜多建,索引会占用表空间,牺牲了空间换取了效率...
④存储过程:数据库里编程;数据库中写代码(procedure),别名:存过 ,过过
作用:将业务当中的业务逻辑、企业规则、公用的部分写成存储过程或者函数保存到数据库中,以便其他模块调用,简化程序开发和维护,提高效率和性能。
create [or replace] procedure 存储过程名称
(

[arg1 [IN|OUT|IN OUT]] 数据类型,

[arg2 [IN|OUT|IN OUT]] 数据类型,
...
)

is|as

声明部分;

begin

执行部分;

exception

异常处理部分;

end;

7、内连接、外连接
内连接:多表联合查询的另外一种写法;表名1 inner join 表名2 on 连接条件;
select * from student, department where student.did=department.did;
select * from student inner join department on student.did=department.did;

注:外连接,并非主外键关系
左外连接:left outer join;先将符合条件的数据查询出来,再将左表中不符合条件的数据查询出来;
右外连接:right outer join;先将符合条件的数据查询出来,再将右表中不符合条件的数据查询出来;
全外连接:full outer join;先将符号条件的数据查询出来,再将左表不符合查询出来,再将右表不符合查询出来;

8、删除主键约束:
alter table 表名 drop constraint 约束名;
查找主键约束名语句:
select owner,constraint_name,column_name from user_cons_columns where table_name='SALGRADE';

猜你喜欢

转载自www.cnblogs.com/yaoze2018/p/10503631.html