sql 简单搜索语法

sql简单搜索语法:

SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
    JOIN another_table
      ON mytable.column = another_table.column
    WHERE constraint_expression
    GROUP BY column
    HAVING constraint_expression
    ORDER BY column ASC/DESC
    LIMIT count OFFSET COUNT;

 

select 查询语法:select  colume(列名),....from  table(表名);

select查询所有列:select * from table(\G);

条件查询语句:select column from table where condition(条件) and/or condition;

Operator(关键字)

Condition(意思)
=, !=, < <=, >, >= Standard numerical operators 基础的 大于,等于等比较
BETWEEN … AND … Number is within range of two values (inclusive) 在两个数之间
NOT BETWEEN … AND … Number is not within range of two values (inclusive) 不在两个数之间
IN (…) Number exists in a list 在一个列表
NOT IN (…)  Number does not exist in a list 不在一个列表
Operator(操作符) Condition(解释)
= Case sensitive exact string comparison (notice the single equals)完全等于
!= or <> Case sensitive exact string inequality comparison 不等于
LIKE(模糊搜索) Case insensitive exact string comparison 没有用通配符等价于 =
NOT LIKE Case insensitive exact string inequality comparison 没有用通配符等价于 !=
% Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) 通配符,代表匹配0个以上的字符
_ Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) 和% 相似,代表1个字符
IN (…) String exists in a list 在列表
NOT IN (…) String does not exist in a list 不在列表

小提示:在字符串表达式中的字符串需要用引号 " 包含,如果不用引号,SQL会认为是一个属性列的名字,如:col_name = color 表示 col_name和color两个属性一样的行 col_name = "color" 表示 col_name 属性为字符串 "color"的行.

查询结果Filtering过滤 和 sorting排序

distinct语法:select distinct column from table where condition   返回指定某个或某些属性列唯一返回

因为distinct语法会直接删除重复的行, 我们还会学习 GROUP BY 语句, GROUP BY 也会返回唯一的行,不过可以对具有相同的 属性值的行做一些统计计算

order by 排序语法:select distinct column from table where condition order by column asc(升序)/desc(降序)

通过limit选取结果

LIMITOFFSET 子句通常和ORDER BY 语句一起使用,当我们对整个结果集排序之后,我们可以 LIMIT来指定只返回多少行结果 ,用 OFFSET来指定从哪一行开始返回。

limited查询语句:select distinct column from table where condition order by column asc(升序)/desc(降序) limit num_limit   offset  num_offset;

小提示:LIMIT和OFFSET一般在SQL的其他部分都执行完之后,再执行。

 用JOINs进行多表联合查询

用INNER JOIN 连接表的语法
SELECT column, another_table_column, …
FROM mytable (主表)
INNER JOIN another_table (要连接的表)
    ON mytable.id = another_table.id 
WHERE condition(s)
ORDER BY column, … ASC/DESC
LIMIT num_limit OFFSET num_offset;

inner join相当于取两个表的交集

left join和right join的用法与inner join 的用法几乎是一样的. 我们看看这三个连接方法的工作原理:
在表A 连接 B, LEFT JOIN保留A的所有行,不管有没有能匹配上B 反过来 RIGHT JOIN则保留所有B里的行。最后FULL JOIN 不管有没有匹配上,同时保留A和B里的所有行

当我们用表达式对col属性计算时,很多事可以在SQL内完成,这让SQL更加灵活,但表达式如果长了则很难一下子读懂。所以SQL提供了AS关键字, 来给表达式取一个别名.

常见统计函数

Function Description
COUNT(*), COUNT(column) 计数!COUNT(*) 统计数据行数,COUNT(column) 统计column非NULL的行数.
MIN(column) 找column最小的一行.
MAX(column) 找column最大的一行.
AVG(column) 对column所有行取平均值.
SUM(column) 对column所有行求和.

分组统计

GROUP BY 数据分组语法可以按某个col_name对数据进行分组,如:GROUP BY Year指对数据按年份分组, 相同年份的分到一个组里。如果把统计函数和GROUP BY结合,那统计结果就是对分组内的数据统计了.
GROUP BY 分组结果的数据条数,就是分组数量,比如:GROUP BY Year,全部数据里有几年,就返回几条数据, 不管是否应用了统计函数.

用分组的方式统计
SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
FROM mytable
WHERE constraint_expression
GROUP BY column;

 

posted @ 2020-02-04 16:07  mark_0  阅读(490)  评论(0编辑  收藏  举报