SELECT查询语句

  ---进行单条记录、多条记录、单表、多表、子查询……

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[MAX_STATEMENT_TIME = N]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

select书写使用技巧:

  ①确认需要访问数据来自哪几张表

    from来自某张表或者某几张表

    join添加某张表

    on表连接条件

  记住一点:每关联一个表就需要加上对应的on条件(on条件就是主外键条件)

  ②通过where条件过滤数据

  ③确认需求里面是否有分组聚合的含义

    分组:group by

    聚合:聚合函数

    聚合条件过滤:having

  ④是否需要排序

    order by

1、查询某张表所有数据

mysql> select * from temp;

解析:*代表所有列,temp代表表名,不带条件就查询所有数据

2、查询指定列和条件的数据

mysql> select name,age from temp where age = ;

解析:查询name和age这两列,age 等于22的数据。

3、对查询的数据进行运算操作

mysql> select age+,age/,age-,age* from temp where age- > ;

mysql> select PLAYRNO,AMOUNT,AMOUNT*6.5 “Ren Min Bi” from PENALTIES;

解析:查询AMOUNT列数据乘6.5并改列名为Ren Min Bi

使用小括号可以改变运算的优先级

4、concat函数,字符串连接

mysql> select NAME,concat(TOWN,STREET,HOUSENO) “player Home Address” from PLAYERS;

解析:利用concat函数将TOWN,STREET,HOUSENO三列的字符串连接起来,别名列为player Home Address(可以在concat里加' '进行分隔)

注意:concat和null进行连接,会导致连接后的数据成为null

mysql> select * from t1;
+------+--------+--------+
| id | First | Last |
+------+--------+--------+
| | zhang | jiacai |
| | linghu | NULL |
+------+--------+--------+ mysql> select id,concat(First,' ',Last) from t1;
+------+------------------------+
| id | concat(First,' ',Last) |
+------+------------------------+
| | zhang jiacai |
| | NULL |
+------+------------------------+

concat_ws函数,指定分隔符的字符串连接

mysql> select id,concat_ws(':',First,Last) "Full Name" from t1;
+------+--------------+
| id | Full Name |
+------+--------------+
| | zhang:jiacai |
| | linghu |
+------+--------------+ 圆括号里的第一个位置用来指定字符串连接的分隔符

5、as 列别名(或省略,留空格)

mysql> select id as 'num' from t1;

mysql> select id 'num',First from t1;

6、distinct关键字去掉重复数据

mysql> select * from t2;
+------+
| num |
+------+
| |
| |
| |
| |
+------+ mysql> select distinct num from t2;
+------+
| num |
+------+
| |
| |
+------+ distinct 多列:去重的是同行多列组合的重复数据 mysql> select distinct id, age from temp;

7、where条件查询

where语句中的条件比较:大于>、大于等于>=、小于<、小于等于<=、等于=、不等于<>

mysql> select * from tableName where a> or a>= or a< or a<= or a= or a<>;

8、and 并且、or 或者、not非

mysql> select * from temp where age> and name=‘jack’;

解析:查询name等于jack并且年龄大于20的

mysql> select * from tmep where name=‘jack’ or name=‘jackson’;

解析:查询name是jack或是jackson的

mysql> select * from temp where not (age > );

解析:取小于等于20的数据

mysql> select * from temp where id not in(, );

解析:查询id数不是1,也不是2的

9、between v1 and v2:v1和v2之间

mysql> select * form temp where age between  and ;

解析:查询age在20和25之间的

10、in 查询:多个条件 类似于or

mysql> select * from temp where id in (, , );

解析:查询id在括号中出现的数据

11、like 模糊查询

%:替代0个或多个字符

_:替代一个字符

mysql> select * from temp where name like ‘j%’;

解析:查询name以j开头的(%通配所有)

mysql> select * from temp where name like ‘%k%’;

解析:查询name包含k的

escape转义

mysql> select * from temp where name like ‘\_%’ escape ‘\’;

解析:指定\为转义字符,上面的就可以查询name中以“_”开头的数据

12、is null、is not null

mysql> select * from temp where name is null;

解析:查询为null的数据

mysql> select * from temp where name is not null;

解析:查询不为null的数据

13、order by排序:desc降序、asc升序

mysql> select * from temp order by id;  (默认asc升排序)

mysql> select * from temp order by id desc;  (指定降序排)

多列组合

mysql> select * from temp order by id, age;

14、limit子句:从结果集中选取最前面或最后面的几行

  通常和order by连用,放其后面

limit  <获取的行数> [OFFSET <跳过的行数>]

limit [<跳过的行数>,] <获取的行数>

mysql> select playerno,name from players order by playerno asc limit ,;
mysql> select playerno,name from players order by playerno asc limit offset ;
解析:跳过前面的3行,从第4行开始取,取5行

注意:MySQL5.7 doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

15、group by、having 分组聚合

select [聚合函数] 字段名 from 表名

  [where 查询条件]

  [group by 字段名]

  [having 过滤条件]

mysql> select salary,count(*) from salary_tab
-> where salary>=
-> group by salary
-> having count(*)>=;
+---------+----------+
| salary | count(*) |
+---------+----------+
| 2000.00 | |
| 3000.00 | |
+---------+----------+

##########欲知详细解析,请听下回分解##########

基础SELECT示例掌握的更多相关文章

  1. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  2. canvas基础动画示例

    canvas基础动画示例 本文主要用最简单的例子,展示canvas动画效果是如何实现的 动画效果,是一个球绕着一点旋转 const canvas = document.getElementById(' ...

  3. docker-compose 构建mongodb并导入基础数据示例

    使用docker-compose构建mongodb服务并导入基础数据示例. 1.文件目录结构 ——mongo/ |——docker-compose.yml |——mongo-Dockerfile |— ...

  4. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

    花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...

  5. Spring温习(1)--最基础的示例

    Spring温习(1)--最基础的示例 博客分类: 框架-Spring专栏 SpringXMLBeanWebDAO 从现在开始,我将从Spring为起点,逐步复习几大框架各方面的知识,以便今后查看使用 ...

  6. java 网络编程(三)---TCP的基础级示例

    下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果 ...

  7. asp.net core系列 59 Ocelot 构建基础项目示例

    一.入门概述 从这篇开始探讨Ocelot,Ocelot是一个.NET API网关,仅适用于.NET Core,用于.NET面向微服务/服务的架构中.当客户端(web站点.ios. app 等)访问we ...

  8. Spring Boot 1.5.x 基础学习示例

    一.为啥要学Spring Boot? 今年从原来.Net Team“被”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构.Spr ...

  9. SqlSever基础 select 用+号连接两个字符串

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

随机推荐

  1. x86主机搭建家庭智能路由系统 ---- 设计篇

    组件简介 Proxmox: 基于Debian的虚拟化系统,支持OpenVZ和KVM. pfSense: 基于FreeBSD的开源路由系统. FreeNAS: 开源NAS系统. shadowsocks: ...

  2. Vue 2.0初学后个人总结及分享

    摘要:最近在上海找工作,发现Vue前景还不错,于是就打算先学习一下(之前了解过,但是一直没提到日程上)这篇随笔当是为了自己学习之后,做一个小的阶段性总结.希望本文的内容对于刚开始接触vue的朋友们有点 ...

  3. UI-- Empty Application 新建空工程

    1> Empty Application  在Xcode 5 中的文件路径 : Xode 5 路径:Contents   Developer  Platforms iPhoneOS.platfo ...

  4. wxpython tab切换页面

    最近没事学习下wxpython,发现很少有关于页面切换的demo,这边分享下2中切换的方法.第一种:利用wx.Notebook第二种:利用Sizer布局实现(自己写的),代码没有涉及到什么重构之类的优 ...

  5. ionic/cordvoa 修改platform文件夹里的文件,build会覆盖问题

    这个问题开始让我感觉很崩溃,然后,我也很意外,如果遇到可以试一试 情景: 编辑platform/android/build.gradle 看了一下cordova 命令,好像还没这个命令,但是我还真的执 ...

  6. Telnet 在win7 和 xp中的使用

    telnet 默认在开启之后 监听23端口.最近在尝试使用这个服务 虽然很多机器默认是不开启telnet这个服务的 但是 万一能够碰到 也是为了自己以后能够熟练起来咯. telnet有服务器跟客户端之 ...

  7. Struts2之标签使用

    上一篇我们一起探讨了Struts2中的OGNL表达式的知识,本篇我们一起来学习一下关于Struts2标签的使用,包括:基础标签:property.set.bean.include:判断标签:if el ...

  8. sqrt()平方根计算函数的实现2——牛顿迭代法

    牛顿迭代法: 牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特 ...

  9. Android使用Sugar ORM创建数据库报no such table:...的解决方法

    在学习使用Android开源框架Sugar ORM时,只是做了开始的创建数据库的操作就报出如下的异常信息 android.database.sqlite.SQLiteException: no suc ...

  10. Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...