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. 基础 jQuery 实例

    基础 jQuery 实例 jQuery 原则: 由于 jQuery 是为处理 HTML 事件而特别设计的,那么当您遵循以下原则时,您的代码会更恰当且更易维护: 把所有 jQuery 代码置于事件处理函 ...

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

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

  3. AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像

    AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下

  4. SQL基础用法(实例二)

    /* 2006年10月01日 SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 视图 (5) 函数 (6) 高级查询 */ ()批处理 将多条SQL语句作 ...

  5. expect基础及实例

    expect基础及实例 http://blog.csdn.net/zhuying_linux/article/details/6900805

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

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

  7. SVG基础绘图实例

    SVG可缩放矢量图(Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言,图像在放大或改变尺寸的情况下其图形质量不会有所损失,是万维网联盟的标准. 下面整 ...

  8. jQuery基础与实例

    一.简介 1.什么是jQuery jQuery是一个轻量级.快速简洁的javaScript库,能让我们方便快捷的选择元素操作元素属性. 2.下载地址 3.jQuery使用方式 $("div& ...

  9. Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

随机推荐

  1. 基于 bootstrap 的 vue 分页组件

    申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...

  2. 《Qt数据类型》--QByteArray,QString,int,hex之间的转化

    对于QString和QByteArray,他们都有一个toInt的静态函数,QString::toInt()是根据string的字面值转化为int类型,比如string:"123" ...

  3. 【Html】div 加载 html页面的方法

    做网页的单页面应用时,需要在一个HTML的Div元素中加载另一个HTML页面,以前有一种方法就是用iframe,举例如下:(亲测可行) <div class="main-contain ...

  4. 【转】【Python】Python多进程与多线程

    1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...

  5. 建议大家使用Java 8 的日期、时间,而非java.util.Date

    建议大家使用Java 8 的日期.时间,而非java.util.Date. 详细原因见:如何在Java 8中愉快地处理日期和时间 总结一下就是, java.util.Date 太乱,如 月份从0开始. ...

  6. linux下locale中的各环境变量的含义

    本文来自:http://blog.sina.com.cn/s/blog_406127500101dk26.html Locale是软件在运行时的语言环境, 它包括语言(Language), 地域 (T ...

  7. 批量kill 进程

    场景: 需要批量kill tail 进程. 解决方法: ps -ef | grep IC.IndexServer.log | grep -v grep | awk -F' ' '{print $2}' ...

  8. Maven依赖机制

    案例分析 让我们看一个案例研究,以了解它是如何工作的.假设你想使用 Log4j 作为项目的日志.这里你要做什么? 1.在传统方式 访问 http://logging.apache.org/log4j/ ...

  9. C#提高--------------获取方法返回值的自定义特性(Attribute)

    .NET(C#):获取方法返回值的自定义特性(Attribute) 转载 2013年05月08日 10:54:42 1456 来自:http://www.cnblogs.com/mgen/archiv ...

  10. (源)VC助手VA破解使用指南

    一般情况下,你下载的破解版的VC助手,要么自带的有一个名为VA_X.dll的文件,要么是有一个可运行的破解程序,根据不同的情况进行如下操作,只要你下载的安装文件没有问题,就能正确打上破解补丁.网上有一 ...