做MySQL题的随笔(关键字记录)
随笔
distinct
含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段
用法注意:
1.distinct 【查询字段】,必须放在要查询字段的开头,即放在第一个参数;
2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;
3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的
4.不能与all同时使用,默认情况下,查询时返回的就是所有的结果。
asc和desc
asc(ascend )是升序,就是这个值按照从小到大进行排序;desc(descend)是降序,就是这个值按照从大到小进行排序。
between
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
一、Like是什么意思
1、Like算作MySQL中的谓词,其应用与is、=、>和<等符号用法类似。
2、在sql结构化查询语言中,like语句有着至关重要的作用。
3、从某种意义上讲,Like可看作是一个精简的正则表达式功能。
二、Like作用
like语句的语法格式是
select * from 表名 where 字段名 like 对应值(子串)
作用:主要是针对字符型字段的,在一个字符型字段列中检索包含对应子串的。
三、Like支持类型
Like主要支持两种通配符,分别是"_“和”%"。
1、"_"代表匹配1个任意字符,常用于充当占位符;
2、"%"代表匹配0个或多个任意字符
UPPER(str)
返回字符串str根据当前字符集映射所有字符为大写。
CONCAT
CONCAT(str,str2,str3…) 可以将两个或者多个参数拼接在一起.
注意事项:
①返回结果为连接参数产生的字符串。
②如有任何一个参数为NULL ,则返回值为 NULL。
LEFT函数介绍
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_format(date,'%Y%m')
date 参数是合法的日期。format 规定日期/时间的输出格式。
Max
统计函数:Max(列名),可以用于统计某一列的最大值。
语法:
select max(列名) from 表名
GROUP BY
GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
having
当我们用到聚合函数,如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
Inner join
MySQL INNER JOIN
子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录。
INNER JOIN
子句是SELECT
语句的可选部分,它出现在FROM子句之后。
在使用INNER JOIN
子句之前,必须指定以下条件:
- 首先,在FROM子句中指定主表。
- 其次,表中要连接的主表应该出现在
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
using等价于join操作中的on,例如a和b根据id字段关联,那么以下等价
using(id)
on a.id=b.id
- where条件语句后面不能加聚合函数(分组函数)
- having 不能单独使用,必须和group by 联合使用
连接
- 内联结:inner join。取两列的交集。
- 外联结:
-
- left join。左连接,以左边表的列为主,取两列的交集,对于不在右边列存在的名称取null。
-
- right join。右连接,以右边表的列为主,取两列的交集,对于不在左边列存在的名称取null。
外连接: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 语句会删除重复的数据。
- union–连接表,对行操作。
- union–将两个表做行拼接,同时自动删除重复的行。
- union all—将两个表做行拼接,保留重复的行
count
count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。
- MySQL Group By 子句 - MySQL的GROUP BY语句以及SQL聚合函数,用于类似SUM提供某些数据库表的列来分组结果数据集
- MySQL IN 子句 - 这是一个子句,它可以用来连同任何MySQL查询语句以指定条件
- MySQL BETWEEN 子句 - 这是一个子句,它可以用来与任何MySQL查询来指定条件
- MySQL UNION关键字 - 使用UNION操作多个结果集组合成一个结果集
- MySQL COUNT()函数 - MySQL的COUNT聚合函数用于计算一个数据库表中的行数
- MySQL MAX() 函数 - MySQL的MAX聚合函数允许我们选择某些列的最高(最大)值
- MySQL MIN()函数 - MySQL的MIN聚合函数允许我们选择某些列的最低(最小)值
- MySQL AVG()函数 - MySQL的AVG聚合函数是用来对某些表的列求它的平均值
- MySQL SUM()函数 - MySQL的SUM聚合函数允许选择某列的总和
- MySQL SQRT函数 - 这是用来生成给定数的平方根
- MySQL RAND()函数 - 使用MySQL命令产生一个随机数
- MySQL CONCAT()函数 - 这是用来连接MySQL命令中的任何字符串
- MySQL DATE 和 Time 时间日期函数 - MySQL日期和时间相关的函数完整列表
- MySQL数字函数 - 在MySQL中操作数字的MySQL函数完整列表
- MySQL字符串函数 - 在MySQL中的字符串操作的MySQL函数的完整列表
相关文章
- Mysql加锁过程详解(7)-初步理解MySQL的gap锁
- mysql索引总结(2)-MySQL聚簇索引和非聚簇索引
- [navicate将mysql数据库数据复制到oracle数据库]--批量将oracle 表名和字段名变为大写
- mysql的学习记录
- 【MySQL】Mysql 日志
- 呕心沥血写了三天3两夜24k字的MySQL详细教程
- 【MySQL高级】Mysql并发参数调整及常用SQL技巧
- Mysql中与时间相关的统计分析
- Named Volume 在 MySQL 数据持久化上的基本应用
- 关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步
- mysql远程连接 Host * is not allowed to connect to this MySQL server
- MySQL技巧:做好Limit优化
- 记录一下MySql的一些查询语句使用案例
- 【转】mysql中文乱码的一点理解
- 【mysql】解决java.sql.SQLNonTransientConnectionException: message from server: “Too many connections“
- 【mysql问题】解决2003-Can‘t connect to MySQL server on ‘ ‘(10060“Unknown error“)
- SQL Server 数据导入Mysql详细教程
- mysql配置完环境变量后 net start mysql 服务名无效
- MySQL update 语句加锁分析
- MySQL表更新记录
- mysql存储过程 OUT or INOUT argument 3 for routine
- mac ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- 记录一次mysql使用load into命令导入csv格式数据的过程
- python操作mysql数据库系列-操作MySql数据库(三)
- python操作mysql数据库系列-操作MySql数据库(一)
- Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)
- 【MySQL】21-MySQL之增删改
- 有关Mysql的mysql_store_result函数返回NULL的情况以及其他注意事项
- mysql 1093 - You can't specify target table 'xx表' for update in FROM clause
- MySql利用case when实现批量更新多条记录的不同值实现方法
- Linux5下安装MySQL过程记录
- MySQL迁移到ClickHouse
- MySQL崩溃恢复过程
- 浅析MySQL JDBC连接配置上的两个误区