mysql必知必会

学习笔记--《MySQL必知必会》--第十六章

我与影子孤独终老i 提交于 2020-02-18 05:20:40
第十六章 创建高级联结 使用表别名 使用不同类型的联结 (等值联结(equijoin)之外的) 自联结 自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结远比处理子查询快得多。 自然联结 :自然联结排除多次出现,使每个列只返回一次。 外部联结 :联结包含了那些在相关表中没有关联行的行。这种类型的联结称为外部联结。 外部联结的类型 :存在两种基本的外部联结形式:左外部联结和右外部联结。它们之间的唯一差别是所关联的表的顺序不同。换句话说,左外部联结可通过颠倒FROM或WHERE子句中表的顺序转换为右外部联结。因此,两种类型的外部联结可互换使用,而究竟使用哪一种纯粹是根据方便而定。 没有 =操作符 *:MySQL不支持简化字符*=和=*的使用,这两种操作符在其他DBMS中是很流行的。 使用带聚集函数的联结 使用联结和联结条件: 注意所使用的联结类型。一般我们使用内部联结,但使用外部联结也是有效的。 保证使用正确的联结条件,否则将返回不正确的数据。 应该总是提供联结条件,否则会得出笛卡儿积。 在一个联结中可以包含多个表,甚至对于每个联结可以采用不同的联结类型。虽然这样做是合法的,一般也很有用,但应该在一起测试它们前,分别测试每个联结。这将使故障排除更为简单。 来源: CSDN 作者: @小小程 链接: https://blog

学习笔记--《MySQL必知必会》--第九章

£可爱£侵袭症+ 提交于 2020-02-13 22:02:56
第九章 用正则表达式进行搜索 正则表达式 :正则表达式是用来匹配文本的特殊的串(字符集合)《正则表达式必知必会》。 MySQL 正则表达式 :MySQL用WHERE子句对正则表达式提供了初步的支持,允许指定正则表达式。MySQL仅支持多数正则表达式实现的一个很小的子集。 MySQL中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用BINARY关键字, 基本字符匹配 (. ^ $): # 除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用LIKE的语句.它告诉MySQL:REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理. SELECT column_name FROM table1_name WHERE column_name REGEXP '.000'; # .是正则表达式语言中一个特殊的字符,它表示匹配任意一个字符。 在LIKE和REGEXP之间有一个重要的差别 # 该语句不返回数据 SELECT column_name FROM table1_name WHERE column_name LIKE '1000'; # 该语句返回一条数据 SELECT column_name FROM table1_name WHERE column_name REGEXP '1000'; #

学习笔记--《MySQL必知必会》--第七章

不羁岁月 提交于 2020-02-13 02:21:02
第七章 数据过滤 操作符(operator) 用来联结或改变WHERE子句中的子句的关键字。也称为逻辑操作符(logical operator)。 MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。 AND操作符 :AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。 OR操作符 :OR WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。 计算次序 :SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符,不要过分依赖默认计算次序。 IN操作符 :IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR 相当。 # IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。 # SELECT column1_name # FROM table1_name # WHERE column1_name BETWEEN a AND b; SELECT column1_name FROM table1_name WHERE column1_name IN (a,b); 使用IN操作符的优点 : 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。