一、sql语法

 select */列名1,列名2... from 表名[连接查询  内连接/左连接 on条件]   必选的

 where  条件 子查询/in/exists/between ... and ..  可选的

 group by 分组列1,分组列2...  可选的

 having 字句 可以对分组结果进行筛选  可选的

 order by 排序列1,排序列2... 可选的

各个关键字的数据必须要保证

二、写sql语句的步骤

1、要先确定从哪个表中查询数据,是要从一个表查询,还是要从多个表查询,如果是多个表必须用连接查询。

2、确定是否需要分组查询

3、写where条件

4、写需要返回的列

三、连接查询

连接查询分两类,交叉连接和普通连接查询

1、交叉连接

交叉连接可以用逗号分隔多个表,也可以用关键字cross join ,交叉连接返回两个表数据的笛卡尔集。

2、连接查询

连接查询分内连接和外连接,外连接有分为左外连接,右外连接,全连接

最常用的是内连接和左外连接

内连接返回所有满足连接条件的记录

select * from 表1 [inner] join  表2 on 表1. 外键=表2.主键

 --查询所有有部门的员工的信息
select * from emp e inner join dept d on e.deptno=d.deptno;

左外连接返回左表的所有数据+右表匹配到的数据,如果左表匹配不到右表的数据,显示为空

 --查询所有员工信息,如果员工有部门信息,显示出来,否则不显示
select * from emp e left join dept d on e.deptno=d.deptno;

右外连接同左外连接

全连接返回左表的所有数据+ 右表的所有数据,如果匹配不到对方的数据,则显示为空

 --查询所有员工和部门信息,如果匹配不到显示为空
select * from emp e full join dept d on e.deptno=d.deptno;

三、in

iin用在连接条件中,表示某个字段的值在in提供的列表之中。

 select * from 表 where 列名 in (值1,值2...);

in后还可以是一个子查询,子查询一般会返回多个结果。

 举例:查询部门编号在10,20,30之中的用户的信息
select * from emp where deptno in (10,20,30);

in 和=的区别,in后面可以跟多个值,=后面只能有一个值

 举例:查询部门名称为BOSTON或者CHICAGO的员工的信息
select e.* from emp e inner join dept d on e.deptno=d.deptno where d.loc ='BOSTON' or d.loc='CHICAGO'
使用in:
select * from emp where deptno in (select deptno from dept where loc in ('BOSTON','CHICAGO'));

四、between ... and ...

一般也用在条件中,between开始值and结束值,开始值和结束值一般是数字,也可以是其他类型(字符串,日期)

字符串比较和字符串的长度无关,会从第一个字符开始向后比较,如果相同再比较下一个。

 举例:查询基本工资在1500到2000之间的员工的信息
select * from emp where sal between 1500 and 2000;
 查询 1981年到1998年之间雇佣的员工的信息
--把字符串转换为日期之后再比select * from emp e where e.hiredate between
to_date('1981-01-01','yyyy-mm-dd') and to_date('1998-12-31','yyyy-mm-dd');
--把日期转换为字符串之后再比select * from emp e where to_char(e.hiredate,'yyyy-mm-dd') between
'1981-01-01' and '1998-12-31';

五、group by

group by 分组查询

select 结果列  from 表 where 条件 group  by  列1,列2...

注意:结果列只能是两种形式:

1、要么是分组的列

2、如果要返回其他列,需要对其他列使用聚合函数

 举例:统计各部门不同职位的人有多少个
select deptno,job,count(empno) from emp group by deptno,job
select dname,job,count(empno) from emp e inner join dept d on e.deptno=d.deptno
group by e.deptno,dname,job;

having 子句可以对分组查询的结果进行过滤

举例:统计各部门不同职位的人有多少个,只显示部门人数大于2的信息 
 select dname,job,count(empno) c from emp e inner join dept d on e.deptno=d.deptno
group by e.deptno,dname,job
having count(empno) >2
;

六、order by

order by 排序,可以对多列排序order by 列1 升序/降序,列2 升序/降序 默认是升序asc.

例子:查询员工信息 按基本工资从大小排列 
 --先按员工基本工资倒序,再按奖金倒select * from emp order by sal desc,comm desc;

sql语句的基本用法总结的更多相关文章

  1. sql语句Group By用法-转载

    sql语句Group By用法一则 2007-10-25 12:00 sql语句Group By用法一则 如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么 ...

  2. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...

  3. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 日期:2005年6月1日 作者:seasky212 总结一下SQL语句中引号(').quoted ...

  4. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('')在Delphi中进行字符变量连接相加时单引号用('' ...

  5. sql语句-CASE WHEN用法详解

    当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了. Case具有两种格式.简单Case函数和Case搜索函数. 第一种 格式 : 简单C ...

  6. sql语句的join用法

    sql的join分为三种,内连接.外连接.交叉连接. 以下先建2张表,插入一些数据,后续理解起来更方便一些. create table emp(empno int, name char(20),dep ...

  7. sql语句having子句用法,很多时候你曾忘掉

    显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY reg ...

  8. sql语句like的用法 有些正则表达式可以通过like实现

    原文发布时间为:2010-10-28 -- 来源于本人的百度文章 [由搬家工具导入] 在SQL结构化查询语言中,LIKE语句有着至关重要的作用。LIKE语句的语法格式是:select * from 表 ...

  9. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

随机推荐

  1. idea(or maven) 未结束字符串字面值 非法的表达式开始

    [ERROR] *.java:[38,27] 未结束的字符串字面值 [ERROR] *.java:[38,53] 需要 ';' [ERROR] *.java:[41,19] 需要 ')' [ERROR ...

  2. C++二级指针和指针引用传参

    前提 一级指针和引用 已经清晰一级指针和引用. 可参考:指针和引用与及指针常量和常量指针 或查阅其他资料. 一级指针和二级指针 个人觉得文字描述比较难读懂,直接看代码运行结果分析好些,如果想看文字分析 ...

  3. Python---5Python内置的有序集合-list和tuple

    list Python内置的一种数据类型是列表:list,[ ].可以修改的集合. list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: ...

  4. shell的循环嵌套语法

    测试shell的循环嵌套语法 [root@localhost test]# vi Xunhuanqiantao.sh #!/bin/bash #程序功能描述: # 测试循环嵌套 #作者:孤舟点点 #版 ...

  5. 环境安装文档(for Ubuntu)

    这个文档的目标是:各位小伙伴通过这个文档,可以在一台全新的 Ubuntu 电脑上搭建平常开发使用的环境,主要包含 Node.js, git 和 编辑器部分. 这是针对 Ubuntu 系统的安装文档,W ...

  6. 虚拟桌面软件CitrixReceiver相关问题

    由于安过一次,卸载再次安装程序报错: 原因:卸载不干净,导致再次安装部分插件未成功安装 解决: 1.在控制面板卸载Citrix receiver 2.删除C:\Program Files (x86)\ ...

  7. 【ThinkPHP6:从TP3升级到放弃】1. 前言及准备工作

    春节期间因为疫情的关系出不去门,所以就研究了一下ThinkPHP的最新版本6.0.2, 自己写了一个博客程序. 现在, 打算写一个ThinkPHP6的专题, 用来把自己在写博客的过程中入过的坑和获得的 ...

  8. Java面试必问之Hashmap底层实现原理(JDK1.7)

    1. 前言 Hashmap可以说是Java面试必问的,一般的面试题会问: Hashmap有哪些特性? Hashmap底层实现原理(get\put\resize) Hashmap怎么解决hash冲突? ...

  9. 7-40 jmu-python-统计成绩 (15 分)

    输入一批学生成绩,计算平均成绩,并统计不及格学生人数. 输入格式: 每行输入一个数据,输入数据为负数结束输入 输出格式: 平均分=XX,不及格人数=XX,其中XX表示对应数据.如果没有学生数据,输出没 ...

  10. grid实战之微信钱包 腾讯服务界面

    网格布局简介 CSS3网格布局是让开发人员设计一个网格并将内容放在这些网格内.而不是使用浮动制作一个网格,实际上是你将一个元素声明为一个网格容器,并把元素内容置于网格中. 有一些浏览器是不支持网格布局 ...