Oracle知识整合----SQL概述

目录

一、SQL 简介

二、SQL 语言的分类

1、数据查询语言 (DQL)

2、数据操作/操纵 (DML)

3、数据定义语言 (DDL)

4、数据控制语言 (DCL)

5、事物控制语言 (TCL)

三、数据查询语言

1、查询全部

2、查询指定列

3、在 system下查询 Scott 的 dept 表,登录的用户的权限要比被查的用户的权限大

4、带有条件的查询,具体数据用单引号

5、查询中的别名 特殊字符别名

6、在查询中使用算数运算符

7、使用 distinct 去重

8、在查询中使用连接运算符(||)

四、单行函数

1、字符型单行函数

(1)lower (列\表达式)

(2)upper(列\表达式)

(3)concat(列1\表达式,列2\表达式)

(4)substr(列\表达式,m[,n])

(5)length(列\表达式)

(6)instr(列\表达式,'字符串',m[,n])

(7)replace(原字符串,被替换字符串,替换字符串)

2、数字型单行函数

(1)round(num,i)

(2)trunc(num,i)

(3)mod(num1,num2)

3、日期型单行函数

(1)sysdate

(2)add_months(时间值,添加的月份值)

五、空值和空值函数

1、空值:

2、空值函数

(1)nvl(num1,num2)

(2)nvl2(num,n,m)

六、逻辑处理函数

1、case函数

2、decode 函数

七、分组函数

1、sum() 求和

2、avg() 求平均值

3、max() 求最大值

4、min() 求最小值

5、count() 计数,列的行数

6、group by() 分组函数,分组查询

7、having :筛选(对分组之后进行二次筛选)

八、数据操作语言

1、insert:增加

2、update:修改

3、delete:删除


一、SQL 简介

SQL 结构化查询语言

二、SQL 语言的分类

1、数据查询语言 (DQL)

select

2、数据操作/操纵 (DML)

insert、update、delete

3、数据定义语言 (DDL)

create、alter、drop、truncate(截断删除,删除表然后建立一个空表结构)

4、数据控制语言 (DCL)

grant(授予权力)、revoke(回收权力)

5、事物控制语言 (TCL)

commit(提交)、rollback(回)

三、数据查询语言

语法;select * |[distinct]列名 | 表达式 as 重命名/别名 from 表名 [where 条件];

1、查询全部

SELECT * FROM dept;

2、查询指定列

SELECT deptno,dname,loc FROM dept;

3、在 system下查询 Scott 的 dept 表,登录的用户的权限要比被查的用户的权限大

SELECT * FROM scott.dept;

4、带有条件的查询,具体数据用单引号

SELECT * FROM dept where deptno=30;
SELECT * FROM dept where deptno=30 and dname='SALES';
SELECT * FROM dept where deptno=40 or dname='SALES';

5、查询中的别名 特殊字符别名

--即中文要用双引号包裹   

注: as 可以省略

SELECT deptno AS dno,dname  "部门名称" FROM dept;

6、在查询中使用算数运算符

  sal*12--表达式

SELECT ename "员工姓名",sal*12 "年薪" FROM emp;

7、使用 distinct 去重

SELECT  job FROM emp; -- 有重复
SELECT distinct job FROM emp;

8、在查询中使用连接运算符(||)

即:  ename || '是一个' || job---表达式


SELECT ename || '是一个' || job FROM emp;

四、单行函数

1、字符型单行函数

(1)lower (列\表达式)

作用:把字符串转换为小写  dual伪表,虚假的表为了满足语句需要,只能写这个

SELECT lower('ABCD') FROM dual;--表达式
SELECT lower(ename) FROM emp;--列

(2)upper(列\表达式)

作用:把字符串转换为大写

SELECT upper('aaasd') FROM dual; --表达式
SELECT upper(ename) FROM emp;--列

(3)concat(列1\表达式,列2\表达式)

作用:把两个字符串连接成一个

SELECT concat('abc','def') FROM dual;--表达式
SELECT concat(ename,job) FROM emp;--列
SELECT concat(ename,'123jjj') FROM emp;--表达式和列

(4)substr(列\表达式,m[,n])

作用:截取字符串

m代表截取的开始位置 ,n 代表截取的长度 下标从1开始

SELECT substr('abcdefg',4) FROM dual;--不指定长度
SELECT substr('abcdefg',4,2) FROM dual;--指定长度

(5)length(列\表达式)

作用:计算字符串中的字符个数,空格也算  ,返回个数

SELECT length('srdfghj') FROM dual;--表达式
SELECT length(ename) FROM emp;--列名

(6)instr(列\表达式,'字符串',m[,n])

作用:查找指定字符串的位置

SELECT instr('abcdefgh','de') FROM dual;

(7)replace(原字符串,被替换字符串,替换字符串)

作用:把一个字符串中的某部分替换掉

SELECT replace('abcdefg','cd','dc') FROM dual;

2、数字型单行函数

(1)round(num,i)

作用:可以用来指定小数位数,会四舍五入

SELECT round(5.16,1) FROM dual; --5.2
SELECT round(5.14,-1) FROM dual; --10  将5四舍五入
SELECT round(4.14,-1) FROM dual;--0 将4舍去为0

(2)trunc(num,i)

作用:用来指定位数不会四舍五入

SELECT trunc(3.76,1) FROM dual; --3.7 到达指定位数,不四舍五入
SELECT trunc(26.53,-1) FROM dual; -- 20到达指定位置,不入 6 舍弃

(3)mod(num1,num2)

作用:用来计算两个数的余数,不够除时,被除数就是余数

SELECT mod(5,3) FROM dual; --2  5/3=1....2
SELECT mod(6,10) FROM dual; --6  6/10 商不了


3、日期型单行函数

(1)sysdate

作用:获取当前系统时间,可以和整数做运算,这个整数代表天数

SELECT sysdate FROM dual; --获取时,当时的时间,不同地方会有地区时差
SELECT sysdate+1 FROM dual;--2024/4/11
SELECT sysdate+31 FROM dual; --超过日,加成月  2024/5/11
SELECT sysdate+5/24 FROM dual;-- 整数/24  加上小时数
--两个日期相加减,得到相差的天数
--              日  月 年
SELECT to_date ('5-4月-24')-sysdate FROM dual;
--查看系统日期表示格式语言  
SELECT userenv('lang') FROM  dual;--ZHS 中文

(2)add_months(时间值,添加的月份值)

作用:用来在某个时间上加上 n 个月

--                日   月  年
SELECT add_months('10-4月-24',3) FROM dual;


五、空值和空值函数

1、空值:

空值是没有意义,不确定的值

在数据库中用关键字 Null 表示空值

对空值进行判断时,用 is null 或 is not null

2、空值函数

(1)nvl(num1,num2)

作用:对空值进行处理,使其可以进行运算

如果 num1 是空值 ,则返回 num2;否则返回 num1

SELECT ename,nvl(comm,1) FROM emp;

(2)nvl2(num,n,m)

作用:nvl2 是 nvl 的功能增强函数
如果 num 为空返回 m;否则返回 n

SELECT ename,nvl2(comm,comm,) FROM emp;
-- 做运算 SELECT ename,nvl2(comm,comm+100,2500) FROM emp;


六、逻辑处理函数

1、case函数

如果 i 的值 为 a 那么就得 a1 的值

对一个列的操作 格式

case i when a than a1 
       when b than b1
       when c than c1
       ...
       else n
end

作用:判断 i 和 a 是否相等,相等则返回 a1;
否则在判断 i 和 b 是否相等,相等则返回 b1;
以此类推
如果都不相等,则返回 n   

--eg
SELECT ename,job,
case job when 'ANALYST' then sal+100
         when 'SALESMAN' then sal+200
         when 'CLERK' then sal+300
         else sal
end "涨后通知"
FROM emp;

2、decode 函数

--格式
decode(i,a,a1,
         b,b1,
         ....,
         defualt
         )

decode函数和 case函数作用相同
先判断 i 和 a 是否相等,相等则返回 a1;
否则判断 i 和 b 是否相等,相等则返回 b1;
以此类推
都不相等则返回 defual 处指定的值

--eg
SELECT ename,job,
decode(job,'ANALYST',sal+100,
           'SALESMAN',sal+200,
           'CLERK',sal+300,
           sal--defualt
        )"涨后工资"
FROM emp;



       
 

七、分组函数

用于对多行数据进行处理

sum(),  avg(),  max(),  min(),  count(),  group by(),  having()

1、sum() 求和

SELECT sum(sal) FROM emp;

2、avg() 求平均值

SELECT avg(sal) FROM emp;

3、max() 求最大值

SELECT max(sal)FROM emp;

4、min() 求最小值

SELECT min(sal)FROM emp;

5、count() 计数,列的行数

SELECT count(*) "人数" FROM emp;

6、group by() 分组函数,分组查询

SELECT job,avg(sal) "平均工资"  FROM emp GROUP BY job;

7、having :筛选(对分组之后进行二次筛选)

SELECT job,avg(sal) "平均工资"  FROM emp GROUP BY job HAVING avg(sal)>2000;


八、数据操作语言

数据操作语言主要是对表中的数据进行增删改操作,非空字段添加

1、insert:增加

字段名省略表示全部列名===全部列名写出来

--语法:insert into 表名(字段名) values(字段值);

--eg
--sysdate 当前日期
INSERT INTO emp VALUES(7933,'李四','经理',7431,sysdate,3500,300,20);
INSERT INTO emp(empno,ename) VALUES(7935,'张三');

2、update:修改

--语法:update 表名 set 字段名=值,字段名=值  [where 条件];

--eg
UPDATE emp SET job='副总裁' WHERE empno=7933; 

3、delete:删除

--语法:delete from 表名 [where 条件];

--eg
DELETE FROM emp where ename='李四';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值