mysql select

阅读数:156 评论数:0

跳转到新版页面

分类

数据库

正文

一、语法

select [optioins] items
  [into file_details]
  from tables
  [where conditions]
  [group by group_type]
  [having where_definition]
  [order by order_type]
  [limit limit_criteria]
  [procedure proc_name(arguments)]
  [lock_options]
;

1、 items

  可以指定任意数量的列,也可以指定一些其他元素,还可以使用通配符*。

2、where条件

运算符 描述
= 测试两个值是否相等
> 大于
< 小于
>=  
<=  
!=或<> 不等于
is not null 是否包含值
is null 不包含值
between  
in  
not in  
like 配置任意数量使用%,匹配单个字符使用_
not like  
regexp 正则表达式,使用posix正则表达式

3、tables

表名之间逗号等价于inner join,

名称 描述
笛卡尔乘积 所有表的所有行的所有关联
完全关联 同上
交叉关联 同上
内部关联 如果没有where条件,等价于完全关联
等价关联 带有where条件的内部关联
左关联/右关联 在左关联中,如果右表没有值使用NULL

4、group by/ having

合计函数

名称 描述
avg(列) 平均值
count(项目) 如果指定一列,这将给出本列中非空值的列数,如果在列前加distinct单词,将得到列中不同值的列数,如果指定(*),将得到包含空值的行在内的行数
min(列)  
max(列)  
std(列) 标准方差
stddev(列) 同上
sum(列)  

在ANSI SQL中,如果使用了group by子句,出现在select子句中的必须是合计函数名称和group by子句的列名称,还可以使用having子句过滤掉一些合计的结果,有些类似只用于分组与合计的where子句。

5、order by

根据select子句中一列或多列对数据进行排序。默认是asc,还可以使用desc

在 SQL 中,当你尝试在一个聚合查询中使用 ORDER BY 语句时,你可能会收到类似 "Not a single-group group function" 的错误消息。这是因为 ORDER BY 通常用于排序查询结果的行,而不是直接用于聚合函数。

以下是一个可能的解决方案:

SELECT AVG(fault_index) FROM (
    SELECT fault_index FROM st_swits_state ORDER BY ts DESC LIMIT 6
) AS subquery;

6、limit

它包含两个参数:起始行号与返回行数。行号从0开始,limit不是ANSI SQL的一部分,是mysql的扩展。

二、select子查询

子查询是一个嵌套在另一个查询内部的查询。

1、基本的子查询

最常见的用法是用一个查询的结果作为另一个查询的比较条件。

select customid,amount
 from orders
 where amount=(select max(amount) from orders);

2、子查询操作符

名称 示例语法 描述
any select c1 from t1 where c1>any(select c1 from t2); 如果子查询中的任何行比较条件为true,返回true
in select c1 from t1 where c1 in (select c1 from t2); 等价于any
some select c1 from t1 where c1 >some(select c1 from t2); any的别名
all select c2 from t1 where c1 >all(select c1 from t2); 如果子查询中所有行的比较条件为true,返回true
exist   在下面(3)中介绍

3、关联子查询

在关联子查询中,可以在内部查询中使用外部查询的结果。

select isbn, title
  from books
  where not exists
  ( select * from order_items where order_items.isbn=books.isbn)

4、行子查询

select c1,c2,c3
from t1
where (c1,c2,c3) in (select c1,c2,c3 from t2);

5、使用子查询作为临时表

select * from 
(select custom_id,name from customers where city='tongjiang')
as tj_customers;

必须为子查询定义一个别名。

三、使用示例

1、查询结果1、0转 是否

select 
  case 字段 when 1 then '是'
           when 0 then '否'
   end

2、select中拼接字符串

select concat(字段,'xx')

concat参见:mysql的concat、concat_ws、group_concat

3、获取上一条

select * from 表 where ID<当前条ID order by ID desc limit 0,1;



相关推荐

一、事务的ACID 1、Atomicity原子性 Transactions are often composed of multiple statements. Atomicity guarantee

数据库的隔离级别 隔离级别 脏读 不可重复读 幻读</t

一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为nu

分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引。这样条件排序都能有效的利用到

Centos7的yum源中没有mysql,为了解决这个问题,我们需要先下载mysql的repo源。 一、下载mysql的repo源并安装 wget http://repo.mysql.com/mysq

备份的类型 1、根据是否需要数据库离线 (1)冷备: 需要关mysql服务,请写请求均不允许 (2)温备: 服务在线,但仅支持读请求。 <p

如果主库已经投入使用了,此时如果需要主从同步,需要导出所表结构和数据,然后导入到从库中。这时需要注意修改/var/lib/mysql/auto.cnf中uuid。 master配

一、登录mysql mysql --version -查看Mysql版本 mysql -h hostname -u username -p -h:运行mysql服务器的机器,如果正在该机器上运行此命令

mysql的权限分为4级:全局、数据库、表、列。 1、grant grant privileges [

insert [into] table [(column1,column2,column3,...)] values (val