美文网首页
SQL 查询

SQL 查询

作者: wpf_register | 来源:发表于2019-09-29 09:36 被阅读0次

原文链接1
原文链接2
原文链接3
原文链接4

查询单列
SELECT 列名 FROM 表名;

//起别名时AS 可以省略
SELECT 列名 [AS] 列的别名 FROM 表名;
查询多个列
SELECT 列名1, 列名2, ... 列名n FROM 表名;
查询所有列
尽量避免使用*号,会影响性能
SELECT * FROM 表名;
去除相同的查询结果
  • 去除单列的重复结果
SELECT DISTINCT 列名 FROM 表名;
  • 去除多列的重复结果
    查询结果是以行为单位返回的,所以两行记录重复就过滤
    两条记录重复的意思是:两条记录的每一个列中的值都相同
SELECT DISTINCT 列名1, 列名2, ... 列名n  FROM 表名;
department major
计算机学院 计算机科学与工程
计算机学院 计算机科学与工程
计算机学院 软件工程
计算机学院 软件工程
航天学院 飞行器设计
航天学院 电子信息
SELECT DISTINCT department,major FROM  student
department major
计算机学院 计算机科学与工程
计算机学院 软件工程
航天学院 飞行器设计
航天学院 电子信息
限制查询结果条数
LIMIT 开始行, 限制条数;
LIMIT 限制条数;   //默认从第0行开始
对查询结果排序
ORDER BY 列名 ASC|DESC
ORDER BY 列1 ASC|DESC, 列2 ASC|DESC ...

说明:
ASC和DESC指的是排序方向。
ASC是由小到大进行排序,也叫做升序,
DESC是由大到小进行排序,也叫做降序,
中间的|表示这两种方式只能选一个

默认ASC 升序列列,所以ASC可省略。

搜索条件
操作符 示例 说明
= a=b 等于
<> 或 != a<>b 不等于
< a<b 小于
> a>b 大于
<= a<=b 不大于
>= a>=b 不小于
BETWEEN a BETWEEN b and C c <= a <= b
NOT BETWEEN a NOT BETWEEN b and C
IN a IN (b1,b2...)
NOT IN a NOT IN(b1,b2...)
IS NULL a IS NULL 值为NULL
IS NOT NULL a IS NOT NULL
OR 或条件
AND 与条件 优先级高于OR
LIKE 匹配
NOT LIKE 不匹配

关于通配符

  • %:代表任意一个字符串
  • _:代表任意一个字符
  • '%'代表普通字符'%','%'代表普通字符'%'
子查询
操作符 示例 说明
EXISTS EXISTS(select...) 子查询有结果时为真
NOT EXISTS NOT EXISTS(select...) 子查询没有结果时为真
 SELECT * FROM student_score 
 WHERE EXISTS
 (SELECT * FROM student_info WHERE number = 20180108);

如果子查询没有结果直接返回false,
外层查询也就不再查,直接返回 Empty set,

查询科目成绩大于平均值

//错误  聚合函数不能放在where内
 SELECT * FROM studentScore 
 WHERE subject = '母猪护理' AND score > AVG(score);

//正确
 SELECT * FROM studentScore 
 WHERE subject = '母猪护理' 
 AND score > 
(SELECT AVG(score)  FROM studentScore WHERE subject = '母猪护理');

组合查询

  • 查询列表相同
    合并查询列数必须相同
SELECT m1, n1 FROM t1 
WHERE m1 < 2
OR m1 > 10 
OR m1 = 5;

或组合查询
SELECT m1, n1 FROM t1  WHERE m1 < 2
UNION
SELECT m1, n1 FROM t1  WHERE m1 > 10
UNION
SELECT m1, n1 FROM t1  WHERE m1 = 5
  • 查询列表不同
    虽然m1、n1和m2、n2是两个不同的查询列表,
    但是m1和m2都是整数类型的,n1和n2都是字符串类型的,
    所以查询结果拼接到一起。
    查询的结果集中显示的列名将以第一个查询中的列名为准
SELECT m1, n1 FROM t1  WHERE m1 < 2
UNION
SELECT m2, n2 FROM t2  WHERE m2> 10
ORDER BY m1 DESC
  • 使用UNION来合并多个查询的记录会默认过滤掉重复的记录,如果想要保留重复记录,可以使用UNION ALL来连接多个查询。

相关文章

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • ThinkPHP查询

    查询方式 表达式查询 快捷查询 区间查询 组合查询 统计查询 动态查询 SQL查询 ThikPHP支持原生SQL查...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

  • JPA 动态生成sql

    1. 构建格式化时间查询sql: 生成sql: 2. 构建多条件查询sql: 生成sql: 3. 构建子查询: 生...

  • sqlserver,oracle,mysql分页查询通用sql

    摘要: sqlserver,oracle,mysql分页查询通用sql1:mysql通用查询sql /* sql:...

  • 无限极分类-全路径方式

    创建表SQL 测试数据 组装SQL查询 查询结果

  • 定位和处理执行慢的sql

    查询正在获取锁的sql 查询正在执行的sql 停止正在执行的sql

  • SQL查询语句

    常用SQL查询语句 一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SE...

  • MySQL学习笔记- SQL 查询都是以 SELECT 开始的吗

    SQL 查询都是以 SELECT 开始的的吗?SQL 查询的执行顺序是怎样的? SQL 查询的执行顺序 SELEC...

  • 搜索

    直接sql查询 用sql语句like查询,复杂的用sql语句拼接。 视图和存储过程查询 简化程序,提高执行效率,维...

网友评论

      本文标题:SQL 查询

      本文链接:https://www.haomeiwen.com/subject/gypsyctx.html