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
可以指定任意数量的列,也可以指定一些其他元素,还可以使用通配符*。
运算符 | 描述 |
= | 测试两个值是否相等 |
> | 大于 |
< | 小于 |
>= | |
<= | |
!=或<> | 不等于 |
is not null | 是否包含值 |
is null | 不包含值 |
between | |
in | |
not in | |
like | 配置任意数量使用%,匹配单个字符使用_ |
not like | |
regexp | 正则表达式,使用posix正则表达式 |
3、tables
表名之间逗号等价于inner join,
名称 | 描述 |
笛卡尔乘积 | 所有表的所有行的所有关联 |
完全关联 | 同上 |
交叉关联 | 同上 |
内部关联 | 如果没有where条件,等价于完全关联 |
等价关联 | 带有where条件的内部关联 |
左关联/右关联 | 在左关联中,如果右表没有值使用NULL |
合计函数
名称 | 描述 |
avg(列) | 平均值 |
count(项目) | 如果指定一列,这将给出本列中非空值的列数,如果在列前加distinct单词,将得到列中不同值的列数,如果指定(*),将得到包含空值的行在内的行数 |
min(列) | |
max(列) | |
std(列) | 标准方差 |
stddev(列) | 同上 |
sum(列) |
在ANSI SQL中,如果使用了group by子句,出现在select子句中的必须是合计函数名称和group by子句的列名称,还可以使用having子句过滤掉一些合计的结果,有些类似只用于分组与合计的where子句。
根据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;
它包含两个参数:起始行号与返回行数。行号从0开始,limit不是ANSI SQL的一部分,是mysql的扩展。
二、select子查询
子查询是一个嵌套在另一个查询内部的查询。
最常见的用法是用一个查询的结果作为另一个查询的比较条件。
select customid,amount
from orders
where amount=(select max(amount) from orders);
名称 | 示例语法 | 描述 |
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)中介绍 |
在关联子查询中,可以在内部查询中使用外部查询的结果。
select isbn, title
from books
where not exists
( select * from order_items where order_items.isbn=books.isbn)
select c1,c2,c3
from t1
where (c1,c2,c3) in (select c1,c2,c3 from t2);
select * from
(select custom_id,name from customers where city='tongjiang')
as tj_customers;
必须为子查询定义一个别名。
三、使用示例
select
case 字段 when 1 then '是'
when 0 then '否'
end
select concat(字段,'xx')
concat参见:mysql的concat、concat_ws、group_concat
select * from 表 where ID<当前条ID order by ID desc limit 0,1;
相关推荐
一、事务的ACID
1、Atomicity原子性
Transactions are often composed of multiple statements. Atomicity guarantee
一、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
如果主库已经投入使用了,此时如果需要主从同步,需要导出所表结构和数据,然后导入到从库中。这时需要注意修改/var/lib/mysql/auto.cnf中uuid。
master配
一、登录mysql
mysql --version
-查看Mysql版本
mysql -h hostname -u username -p
-h:运行mysql服务器的机器,如果正在该机器上运行此命令