SQL语言基础

记录一下基本的SQL语法(里面的示例都是以Oracle里面自带的数据为背景):

1.desc tablename---描述一张表(字段,类型,长度)
2.select empno,sal*12 "All money" from emp;
  ---给结果项起别名。如含特殊字符或者要保持原有格式,用双引号括起来。
3.任何含空值的数学表达式最后的结果都是空值(NULL)
4.字符串连接符:||
 select ename||sal from emp;
  单引号包起来字符串。如果字符串内含有单引号,用两个单引号来替代。
5.select distinct deptno , job from emp;
 --去掉结果中的重复值。
6.select * from emp where deptno = 10;
 --取特定的值的记录。过滤条件,过滤一些记录。
7.select ename,sal,deptno from emp where deptno<>10;
 --取值不等于的记录
8.select ename,sal from emp where sal between 800 and 1500;
 --取值在什么范围的记录(包含头尾)
 等同于select ename,sal from emp where sal >=800 and sal <=1500;
9.select ename,sal,comm from emp where comm is null;
 --选空值的记录(is not null;非空值)
10.select ename,sal,comm from emp where sal in(800,1500,2000);
 --取出值为800,1500或者2000的记录。
11.select ename,sal,hiredate from emp where hiredate > '20-2月-81';
 --日期的选择。
12.and,or,not逻辑操作符都可用。

13.模糊查询:(通配符%)
 select ename from emp where ename like '%ALL%';
 select ename from emp where ename like '_A%';
14.如字符串中含%,用转义字符'/'或者自定义转义字符
 select emane from emp where ename like '%/%%';
 select ename from emp where ename like '%$%%' escape '$';
15.select * from dept order by deptno desc;
 ---降序。默认为升序。
 select empno, ename from emp order by empno asc;
  --升序,默认的。可不带asc.
16.select ename,sal,deptno from emp order by deptno asc,ename desc;
 --多重排序,先按deptno排序,deptno相同时内部再按ename倒序排。
17.select ename, sal*12 annual_sal from emp
 where ename not like '_A%' and sal >800 order by sal desc;
 --以上总结性Slect语句。
18.SQL函数:
 lower(string)
 --select lower(ename) from emp;
 --select ename from emp where lower(ename) like '_a%';
 substr(string,start,all)
 --sletect substr(ename,1,3) from emp;--从一个字符开始截取,共截取三个字符。
 chr(number) ,ascII(char)
 --select chr(65) from dual;把数字转换成ASCII码;
 --selcet ascii('A') from dual;
 round(number)  round(number,num) 还可以是负数哦。--四舍五入。
 select round(23.652) from dual;  --24
 select round(23.652,2) from dual;--23.65
 to_char(sal,'$99,999.9999')
  --9代表一位数字。数字或者日期转换成其他形式,位数上无数字则不显示。
  --可以用0来表示,也代表一位数字。无数字也显示,用0显示。
  --select to_char(sal,'$99,999.9999') from emp;
 select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;
 select to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') from emp;  -24小时制
  --记住它。日期转换为特定格式。
 select ename, hiredate from emp
   where hiredate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');
  --转换日期
 select sal from emp where sal > to_number('$1,250.00','$9,999.99');
  --转换数字。
 select ename,sal*12+nvl(comm,0) from emp;
 --算术运算中怎样处理空值,nvl如为空值,用0来替代,如不为空值返回其本身的值。
19.多行函数。---多条输入,一条输出。
* select max(sal) from emp;
* select min(sal) from emp;
* select avg(sal) from emp;
 select to_char(avg(sal),'9999999.99') from emp;
 select round(avg(sal),2) from emp;
* select sum(sal) from emp;
* select count(*) from emp;---求有多少条记录。
 
 select count(distinct deptno) from emp;
 select deptno ,job,max(sal) from emp group by deptno,job;
  --按照***来分组,组内用函数处理。
*   规则:出现在select列表里面的字段没有出现在组函数里,必须出现在group by里面。
 select ename,max(sal) from emp group by deptno;---错误表达式。
 select deptno,max(sal) from emp group by deptno;--正确。
 子查询:select ename from emp where sal = (select max(sal) from emp);
where--对单条语句进行过滤。
having--对分组进行过滤。
 select avg(sal),deptno from emp group by deptno having avg(sal) > 2000;
--以上为单条select语句。总结如下(执行顺序也不能错):
 select * from emp  --选取数据
 where sal>1000    --选择条件
 group by deptno    --对选取的数据进行分组
 having     --对分组后的数据进行过滤限制
 order by    --对最后的结果进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值