1.全套装备

select [select选项] 字段列表[字段别名]/* from 数据源[where 条件子句] [group by条件子句] [having 子句] [order by 子句] [limit 子句];

什么是select选项呢?select选项是值select对查出来的结果的处理方式,主要有两种。all:默认的,保留所有的结果;distinct: 对查询结果进行去重;

Select select_expr [,select_expr…]
[
From table_references
[ where where_condition]
[ group by {col_name | position} [asc|desc],… ]
[ having where_condition ]
[ order by {col_name | expr | position} [asc|desc],… ]
[ limit {[offset,] row_count|row_count offset offset} ]
]

查询顺序:select→where→group by→having→order by→limit

2.表中所有信息的查询 *

select * from student;

3.去重 distinct

select distinct class from student;
select distinct class,teacher from student;

显然,所查询的列的值组合起来的行完全一样才会被去重。

4.指定列排序 order by,asc,desc

select * from student order by col_name {asc|desc};

asc 数值 :递增,字母:字典序

desc 数值:递减, 字母:反序

5.别名 as

select 列名 as 别名[,列名2 as 别名,...] from table_name;

6.列查询(不同顺序结果不同)

select col_name[,col_name2...] from table_name;

7.聚合函数查询

sum()、avg()、max()、min()分别表示对某一列求和、平均、最大、最小。

count()表示查询记录出现的数量,count(列)不算null值的,count(*)有算null值。

select sum(age),avg(age),max(id),min(age),count(teacher) from student

8.查询过滤 where(where子句不能用别名)

添加了几条记录测试模糊查询

模糊查询的通配符:"%"表示任意长度的字符串(包括空字符但不包括空值),“_”表示单个字符。这里的汉字和字母都算1个字符。

Select id as myid, name as myname ,teacher from student where teacher like ‘老%’;--查询以"老"开头的
Select id as myid, name as myname ,teacher from student where teacher like ‘%’;--查询所有记录,除了null
Select * from student where teacher like ‘老_’;--查询以老开头的两个字的记录

9.限制查询数量 limit

select * from student where age<30 limit 4;--默认从第一条记录开始搜寻,查找出4条记录就停止
select * from student limit 2,5;--记录的索引从0开始,这里限制从索引为2的开始即第3条语句,查找出5条语句
--如果数量不够则显示不出那么多记录

10.分组查询 group by

(1)最普通的用法,对于某一列相同的值只取1条语句,尝试后推测应该是记录中的第一条出现该列值的记录

select * from student group by class;

这样的记录显然没什么用,和去重效果一样,所以运用时需要加点东西。

(2)想知道该列的各个分组除了第一条记录的其他记录 group_concat(列名)

select group_concat(id),group_concat(name),age,class from student group by class;

显然,没有使用group_concat()函数的都只显示一个值,id和name显示了所有的值并且一一对应,但是没有顺序可言,第4条记录的id可以看出。

(3)如果记录太多看不清一个组到底有多少人,用count()函数嵌套

select count(*),group_concat(name),group_concat(teacher),class from student group by class;
select count(*),group_concat(name),count(teacher),class from student group by class;

由图可知这样查询非常人性化,注意区分count(*)和count(列名)对于null值的计数。

其他聚合函数同理,例如查询每个班最大年龄的人则可以用max()函数嵌套。

11.二次筛选 having

担心数据不够又加了几组记录

where和having的区别:where作用于表或视图,从中选择满足条件的元组。having短语作用于组,从中选择满足条件的组(所以一般与group by配合使用)。where是从查询满足条件的数据,用于查询数据之前;having用于在查出的数据中挑选满足条件的数据,在数据查出来之后处理。并且having的子句不能使用没有查出来的列名,where则可以,如下:

12.子查询 where

出现在其他sql语句内的select子句嵌套在查询内部,必须始终出现在圆括号内;可以包含多个关键字或条件 distinct,group by,order by,limit和函数等;子查询的外层查询可以是 select insert update set do 等。子查询返回的结果可以是标量、一行、一列或者是子查询。

select * from t1 where col1 = ( select col2 from t2);

暂时就记录这些语句,以后遇到更复杂的再补充。

SQL-select常用语句的更多相关文章

  1. SQL SELECT INTO 语句

    SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用 ...

  2. SQL-W3School-高级:SQL SELECT INTO 语句

    ylbtech-SQL-W3School-高级:SQL SELECT INTO 语句 1.返回顶部 1. SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 S ...

  3. SQL SELECT DISTINCT 语句

    SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...

  4. SQL SELECT DISTINCT 语句 用法

    SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...

  5. SQL UNION 和 UNION ALL 操作符\SQL SELECT INTO 语句\SQL CREATE DATABASE 语句

    SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...

  6. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

  7. sql server之SQL SELECT INTO 语句

    SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用于创建表 ...

  8. sql数据库常用语句总结

    1.增加字段     alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNc ...

  9. SQL Server常用语句

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  10. SQL的常用语句

    select * from g_members where id between '16' and '31' order by id desc 倒序排列 select * from g_members ...

随机推荐

  1. [LOJ 6213]「美团 CodeM 决赛」radar

    [LOJ 6213]「美团 CodeM 决赛」radar 题意 给定 \(n\) 个横坐标 \(x_i\) , 为它们选择一个不超过 \(y_i\) 的纵坐标 \(h_i\), 产生 \(c_ih_i ...

  2. 论文阅读: v-charge项目: 电动车的自动泊车和充电

    Abstract AVP服务会缓和电动车现有两个缺点: 有限的行驶范围和很长的充电时间. v-charge用相机和超声波在GPS-denied的区域全自动形式. 这篇paper叙述了下述几方面的优势: ...

  3. 【shell脚本】检查内存使用情况===chenkMen.sh

    检查内存使用情况,当内存可使用等于100时,释放缓存 [root@localhost thy]# cat checkMem.sh #!/bin/bash #防止内存溢出问题 used=`free -m ...

  4. linux jconsole的远程配置--实测可用

    工作上,经常要对tomcat的java内存配置.tomcat线程池等进行调(luan)优(gao). jconsole 是一个最基础用到的jdk自带的JVM性能查看工具. 最近进行linux测试. 所 ...

  5. mysql-5.7.23-winx64 解压版详细安装教程

    1.下载解压版: 2.配置环境变量 (1)新建MYSQL_HOME变量,并配置值为: C:\softwaretool\mysql-5.7.23-winx64 计算机→属性→高级系统设置→高级→环境变量 ...

  6. 一个简单的利用 WebClient 异步下载的示例(四)

    接上一篇,我们继续优化它. 1. DownloadEntry 类 public class DownloadEntry { public string Url { get; set; } public ...

  7. 使用Redis作为Spring Security OAuth2的token存储

    写在前边 本文对Spring Security OAuth2的token使用Redis保存,相比JWT实现的token存储,Redis可以随时吊销access_token,并且Redis响应速度很快, ...

  8. Spring-AOP源码分析随手记(一)

    1.@EnableAspectJAutoProxy(proxyTargetClass = true) 就是弄了个"org.springframework.aop.config.interna ...

  9. c#之添加window服务(定时任务)

    本文讲述使用window服务创建定时任务 1.如图,新建项目,windows桌面->windows服务 2.如图,右键,添加安装程序 3.在下图安装程序 serviceInstaller1 上右 ...

  10. GitBash上传项目出现[fatal: remote origin already exists.]问题解决方案

    问题截图如下: 当出现这个问题时,不要慌,只需要输入 git remote rm origin 就可以解决,输入完前面的命令后再次 输入 git remote add origin https://. ...