含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段
用法注意:
1.distinct 【查询字段】,必须放在要查询字段的开头,即放在第一个参数;
2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;
3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的
4.不能与all同时使用,默认情况下,查询时返回的就是所有的结果。
asc(ascend )是升序,就是这个值按照从小到大进行排序;desc(descend)是降序,就是这个值按照从大到小进行排序。
between关键字是一个逻辑操作符用来筛选指定属性或表达式某一范围内或范围外的数据。between关键字常用在where关键字后与select或update或delete共同使用。between的使用语法如下:
expr [NOT] BETWEEN begin_expr AND end_expr;
在整个表达式中,expr表示的是一个单一的属性或者是一个计算的表达式,整个表达式中的三个参数 expr、begin_expr、end_expr 必须是同一种数据类型。
between筛选的是 expr >= begin_expr
并且 expr <= end_expr
的数据,如果不存在则返回的是0;
not between筛选的是 expr < begin_expr
或者 expr > end_expr
的数据,如果不存在则返回的是0;
如果 expr 返回的是 NULL,则between 也返回的是null (暂未验证)
一、Like是什么意思
1、Like算作MySQL中的谓词,其应用与is、=、>和<等符号用法类似。
2、在sql结构化查询语言中,like语句有着至关重要的作用。
3、从某种意义上讲,Like可看作是一个精简的正则表达式功能。
二、Like作用
like语句的语法格式是
select * from 表名 where 字段名 like 对应值(子串)
作用:主要是针对字符型字段的,在一个字符型字段列中检索包含对应子串的。
三、Like支持类型
Like主要支持两种通配符,分别是"_“和”%"。
1、"_"代表匹配1个任意字符,常用于充当占位符;
2、"%"代表匹配0个或多个任意字符
返回字符串str根据当前字符集映射所有字符为大写。
CONCAT(str,str2,str3…) 可以将两个或者多个参数拼接在一起.
注意事项:
①返回结果为连接参数产生的字符串。
②如有任何一个参数为NULL ,则返回值为 NULL。
LEFT()
函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。
下面是LEFT()
函数的语法 -
LEFT(str,length);
LEFT()
函数接受两个参数:
str
是要提取子字符串的字符串。length
是一个正整数,指定将从左边返回的字符数。LEFT()
函数返回str
字符串中最左边的长度字符。如果str
或length
参数为NULL
,则返回NULL
值。
如果length
为0
或为负,则LEFT
函数返回一个空字符串。如果length
大于str
字符串的长度,则LEFT
函数返回整个str
字符串。
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法
DATE_FORMAT(date,format)
#例如:
date_format(date,'%Y%m')
date 参数是合法的日期。format 规定日期/时间的输出格式。
统计函数:Max(列名),可以用于统计某一列的最大值。
语法:
select max(列名) from 表名
GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
当我们用到聚合函数,如sum,count后,又需要筛选条件时,having就派上用场了,因为WHERE是在聚合前筛选记录的,having和group by是组合着用的
语法:
SELECT column1, column2, … column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, … column_n
HAVING condition1 … condit
MySQL INNER JOIN
子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录。
INNER JOIN
子句是SELECT
语句的可选部分,它出现在FROM子句之后。
在使用INNER JOIN
子句之前,必须指定以下条件:
INNER JOIN
子句中。理论上说,可以连接多个其他表。 但是,为了获得更好的性能,应该限制要连接的表的数量(最好不要超过三个表)。INNER JOIN
子句的ON
关键字之后。连接条件是将主表中的行与其他表中的行进行匹配的规则。INNER JOIN
子句的语法如下:
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition1
INNER JOIN t3 ON join_condition2
...
WHERE where_conditions;
SQL
假设使用INNER JOIN
子句连接两个表:t1
和t2
,我们来简化上面的语法。
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition;
SQL
对于t1
表中的每一行,INNER JOIN
子句将它与t2
表的每一行进行比较,以检查它们是否都满足连接条件。当满足连接条件时,INNER JOIN
将返回由t1
和t2
表中的列组成的新行。
请注意,t1
和t2
表中的行必须根据连接条件进行匹配。如果找不到匹配项,查询将返回一个空结果集。当连接超过2
个表时,也应用此逻辑。
using等价于join操作中的on,例如a和b根据id字段关联,那么以下等价
using(id)
on a.id=b.id
外连接:OUTER JOIN
外连接就是求两个集合的并集。
从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。
另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做UNION操作来实现。
外连接 (OUTER JOIN)分为三种
**1. 左外连接 (LEFT OUTER JOIN 或 LEFT JOIN):**左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL
**2. 右外连接 (RIGHT OUTER JOIN 或 RIGHT JOIN):**与左(外)连接相反,右(外)连接,右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录,左表记录不足的地方均为NULL
**3. 全外连接 (FULL OUTER JOIN 或 FULL JOIN):**左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充
MySQL中不支持全外连接,可以使用 UNION 来合并两个或多个 SELECT 语句的结果集
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。