SQL-select常用语句
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常用语句的更多相关文章
- SQL SELECT INTO 语句
SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用 ...
- SQL-W3School-高级:SQL SELECT INTO 语句
ylbtech-SQL-W3School-高级:SQL SELECT INTO 语句 1.返回顶部 1. SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 S ...
- SQL SELECT DISTINCT 语句
SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...
- SQL SELECT DISTINCT 语句 用法
SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...
- SQL UNION 和 UNION ALL 操作符\SQL SELECT INTO 语句\SQL CREATE DATABASE 语句
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
- sql server之SQL SELECT INTO 语句
SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用于创建表 ...
- sql数据库常用语句总结
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNc ...
- SQL Server常用语句
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- SQL的常用语句
select * from g_members where id between '16' and '31' order by id desc 倒序排列 select * from g_members ...
随机推荐
- 从项目中理解let和const为什么如此重要
变量声明 变量声明方式 伴随js诞生的var // 语法 var varName = value var a = 1 // 这样子你就得到了一个变量 var缺陷场景分析 var specialUser ...
- linux 硬盘满了后,查看使用目录占用空间情况
cd 切换到目录, du -ah --max-depth=1 查看当前目录下的 文件夹 占用情况
- Ansible 如何只输出错误信息?
有时主机较多时,我们只想关注有问题的主机. Ansible callback 插件中有一个 actionable,官方描述为: actionable - shows only items that n ...
- awk、sed、grep更适合的方向
awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...
- multer 基础教程(英文版)
Multer is a node.js middleware for handling multipart/form-data, which is primarily used for uploadi ...
- CS224N Assignment1 Section 1
运行环境需求 # All Import Statements Defined Here # Note: Do not add to this list. # All the dependencies ...
- 【题解】Puzzle [Uva1399]
[题解]Puzzle [Uva1399] 传送门:\(\text{Puzzle [Uva1399]}\) [题目描述] 给定 \(m\) 和 \(n\),表示有 \(m\) 种不同的字符(大写字母\( ...
- C#, CSV,Generic, 泛型,导出
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- SqlServer 查看数据库、添加数据文件
一.查看SqlServer实例的数据库列表 1).直接在SSMS(SqlServer Management Studio)管理工具里面 展开实例下面的所有数据库便可查看 2).使用Transact- ...
- Python - 正则表达式2 - 第二十三天
Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. ...