MySQL必知必会笔记
2017-1-22
| 2023-7-17
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password

数据库和表的增删改

创建数据库

数据库选择

创建表

重命名表名

删除数据库和表

插入和更新数据

使用INSERT插入行

插入一个新客户到customers表。存储到每个表列中的数据在VALUES子句中给出,对每个列必须提供一个值。虽然这种语法很简单,但并不安全,应该尽量避免使用。 更安全的写法:
这种写法即使表的结构改变,此INSERT语句仍然能正确工作。

使用UPDATA更新数据

使用IGNORE忽略错误

如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消。为即使是发生错误,也继续进行更新,可使用IGNORE关键字:

使用DELETE删除数据

如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

表的查询

查询列

查询列中不重复项DISTINCT

限制结果数量LIMIT

排序结果

默认为升序排列, 若要降序排序, 通过DESC可指定降序排序.

过滤结果

SQL的不等于通过'<>'来表示, 判断NULL通过IS NULL来表示, BETWEEN .. AND ..或者IN (.., ..)表示范围. 多个条件组合时, AND比OR的优先级要高. MySQL中正则表达式不区分大小写, 若要区分大小写, 可用REGEXP BINARY.

组合查询

利用UNION,组合数条SQL查询结果作为单个查询结果集返回。这些组合查询通常称为并或复合查询.

拼接

Concat函数实现拼接

多数DBMS通过+或||来实现拼接, MySQL通过Concat()函数来实现.

命名列的别名

通过AS关键字, 讲拼接后的列命名一个别名.

子查询

使用IN来进行子查询

函数

文本函数

  • Upper() 文本转换为大写
  • Soundex() 寻找读音相近的数据
  • Trim() 删除多余的空格
  • RTrim() 删除右侧多余的空格
  • LTrim() 删除左侧多余的空格

日期及时间处理函数

image
image

数值处理函数

image
image

聚集函数

image
image
可在函数中以DISTINCT来仅汇总不同的值

分组

在SELECT语句的GROUP BY子句中建立分组

通过HAVING来在分组中过滤数据

分组使用的注意事项

  • GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更细致的控制
  • 在建立分组时,指定的所有列都一起计算
  • GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数), 如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式, 不能使用别名
  • 除聚集计算语句外, SELECT语句中的每个列都必须在GROUP BY子句中给出
  • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组
  • GROUP BY子句必须出现在WHERE子句之后, ORDER BY子句之前
  • 一般在使用GROUP BY子句时,应该也给出ORDER BY子句。这是保证数据正确排序的唯一方法

联结

使用WHERE创建等值联结

使用INNER JOIN创建等值联结

联结多个表

自联结

自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结远比处理子查询快得多。

自然联结

无论何时对表进行联结,应该至少有一个列出现在不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。 自然联结排除多次出现,使每个列只返回一次。

外部联结

许多联结将一个表中的行与另一个表中的行相关联。但有时候会需要包含没有关联行的那些行。例如,可能需要使用联结来完成以下工作:
  • 对每个客户下了多少订单进行计数,包括那些至今尚未下订单的客户
  • 列出所有产品以及订购数量,包括没有人订购的产品
MySQL不支持简化字符*=和=*的使用,这两种操作符在其他DBMS中是很流行的。
数据库
shell编写总结Android活动生命周期
目录