您的位置:首页 > 汽车 > 新车 > SQL - 查询

SQL - 查询

2024/9/20 18:25:58 来源:https://blog.csdn.net/m0_74403543/article/details/141297496  浏览:    关键词:SQL - 查询
  • 查询语句
    • select子句和from子句,其他子句用于数据的筛选和排序,如where, order by,limit等。
    • 子句书写的顺序是有影响的,不能改变这些句子的顺序,不然会出现语法错误。如,select,from,where,order by,limit.
    • 子句执行顺序:from-->join-->on-->where-->group by-->having-->select-->distinct-->order by-->limit
    • select子句
      • select * //返回所有列,会增加用增加服务器和网络的那么大负担
      • select first_name,last_name //获取指定的列,获得的列的顺序和自己写的顺序相同,当然列中数据可能会有重复的。
      • select (points+10)*100 //可以获得在原有的数据上的运算,就是算数表达式,支持 + - * / %运算。
      • select (points+10)*100 as discount_fact //对于一个结果集(表达式),想要一个清晰的描述性名称,使用 AS 关键字,如果这个名字含空格,需要引号包起来。
      • select distinct state //获取列的唯一值,也就是 distinct关键字 对列的值有去重作用
      • as 关键字:可以为表达式起别名,也可以将查询的列重新命名
    • where子句(筛选数据)
      • where子句就是对一些字段进行条件限制,如果每行记录的字段符合条件,那么就返回该行记录所要查询的列。在执行查询时,MySQL中的查询执行引擎会遍历表中的每一行信息,评估这个where条件,如果条件正确,会在结果集返回这行信息。
      • 运算符
        • 比较运算符
          • >, >=, <, <=, =, !=, <>,是逻辑判断
        • and、or、not 运算符
          • 在筛选数据时结合多条搜索条件
        • in 运算符
          • 在多个同一列值中 判断一个字段,就可以使用 in 或者not in
          • 如 where quantity_in_stock in (49,38,72)
        • between 运算符
          • 当将一个字段在和一个范围值相比较时可以使用
          • 如 where points between 1000 and 3000
        • like 运算符
          • 检索遵循特定字符串模式的记录,可以使用like ,not like
          • %,表示任意长度的字符,可以表示0个
          • 如 where last_name like '%b%'
          • _,下划线表示一个任意的单字符
          • 如where last_name like '__h',两个字符的姓
        • regexp 运算符(正则表达式)
          • 跟like的作用相同,但是不一样的格式,
          • 如 where address regexp 'trail$',表示address的形式必须是以'trail'为末尾
          • 如 where address regexp 'trail|avenue|rose',表示address中包含'trail'或者'avenue'或者'rose'
          • 如 where address regexp '[tkl]rail',表示address中包含 'trail',或者'krail',或者'lrail'
          • ^,代表字符串开头
          • $,代表字符串末尾
          • |,代表逻辑上的or,可以给出多个搜索模式
          • 字符串拼接
            • [],使用[]匹配任意在括号里例举的单字符,拼接字符串
            • [] 和 -,使用[]和-表示一个范围,如'[a-h]e',表示'abcdefge'
            • select *
              from customers
              -- where first_name regexp 'elka|ambur'
              -- where last_name regexp 'ey$|on$'
              -- where last_name regexp '^my|se'
              -- where last_name regexp 'b[ru]'

        • is null 运算符
          • 如何搜索缺失了属性的记录,可以使用 is null,不缺失 is not null
          • 如 where phone is null
    • order by子句
      • 如何为查询的数据进行排序
      • order by first_name //按first_name排序,默认升序
      • order by first_name desc //按first_name降序排序
      • order by status,first_name //用多列字段排序,按status升序排序的基础上,按first_name降序排序
      • select *,quantity*unit_price as total_price
        from order_items
        where order_id=2
        order by quantity*unit_price desc
    • limit 子句
      • 如何限制查询返回的记录数,用limit,limit语句的位置永远都在最后
      • limit 3 //返回前3条记录
      • limit 6,3 //跳过前6条记录,返回3条记录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com