美文网首页
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来连接多个查询。

    相关文章

      网友评论

          本文标题:SQL 查询

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