MySQL必知必会_简要笔记

使用MySQL

本章将学习如何连接和登陆到MySQL,如何执行MySQL语句,以及如何获得数据库和表的信息。

1 连接

step1.在Nacicat中建立用户,连接SQL。
step2.打开cmd,进入MySQL的安装目录下cd "C:\Program Files\MySQL\MySQL Workbench 8.0 CE"
step3.执行mysql -u root -p
在cmd中进入MySQL

2 选择,了解数据库和表

例如,使用crashcourse数据库,应该出入以下内容:USE crashcourse;
如果你不知道可以使用的数据库名时怎么办?这时,可以通过MySQL的SHOW命令来显示这些信息:SHOW DATABASES;
获取一个数据库内的表的列表操作:SHOW TABLES;
SHOW命令也可以用来显示表列中的具体规则:SHOW COLUMNS FROM customers;
(显示表:SELECT * FROM 表名)
选择,了解数据库和表

所支持的其他SHOW语句还有:
1)SHOW STATUS,用于显示广泛的服务器状态信息;
2)SHOW CREATE DATABASE和SHOW CREATE TABLE,分别来显示创建特定的数据库或表的MySQL语句;
3)SHOW GRANTS,用来显示授予用户的安全权限;
4)SHOW ERRORS和SHOW WARNINGS,用来显示服务器错误或警告消息。

3 使用数据处理函数

函数分类
COUNT()函数 —COUNT(*)不管是否为空,都算入。COUNT(指定列)空值不计入。

4 数据分组

通过上一节可知道SQL聚集函数可以用来汇总数据。所有计算都是在表的所有数据或特定WHERE子句中进行。但是如果要返回多个组别的统计那怎么办?
这里引入了分组概念,分组允许把数据分成多个逻辑组,以便能对每个组进行聚集运算。

4.1 创建分组

GROUP BY(列名) 按指定的某列排序并分组数据。而不是整个表计算一次。如果分组列中具有NULL值,那么NULL将作为一个分组返回。GROUP BY( )必须出现在WHERE之后,ORDER BY之前。
例题:有一个courses 表 ,有: student (学生) 和 class (课程)。请列出所有超过或等于5名学生的课。
±--------±-----------+
| student | class |
±--------±-----------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
±--------±-----------+
解决办法:

SELECT class FROM courses
GROUP BY class						
HAVING COUNT(DISTINCT STUDENT) >= 5;  

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/classes-more-than-5-students
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

4.2 过滤分组

HAVING.
特点:

  1. HAVING是个类似于WHERE的句子。但是WHERE不能过滤分组,它只能过滤指定的行。
  2. 在HAVING中可以使用函数。
  3. WHERE和HAVING可以同时使用。

也可以理解为WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
即—> WHERE>GROUP BY>HAVING>ORDER BY

5 联结表

ANSI SQL 规范首选INNER JOIN语法(内部/等值联结),虽然WHERE句子可以简单实现。其格式为:
SELECT ---,---,----,FROM 表1 INNER JOIN 表2 ON 表1.某列=表2.某列
联结多个表时使用WHEREAND的组合。
需要注意的是有时候多表联结查找比嵌套查询更加简捷。
创建高级联结:
自联结、自然联结和外部联结。

  1. 自联结
    查询中需要的两个表实际上是相同的表。所以需要采用AS为表取别名,如针对表A,....FROM A AS b1,A AS b2
    自联结通常替代从相同表中检索数据时使用的子查询语句。速度有时相对较快。
  2. 自然联结
    SELECT中手动选择需要检索出的列,然后用WHERE将各表简单联结。
  3. 外部联结
    外部联结它的联结包含了那些在关联表中没有关联行的行(两表的行数不同)。与INNER JOIN类似,但是它的格式为:
    SELECT ... FROM 某表 [LEFT|RIGHT] JOIN 某表
    必须使用LEFT或RIGHT其中一个来定位句中的左侧,或右侧的一个表为基准联结。称为左外部联结和右外部联结。
  4. 使用带聚集函数的联结
    聚集函数可以在SELECT中使用,然后在FROM中进行联结处理。
    需要注意的是,当需要检索出包含0个或者没有数据的项则需要使用LEFT或RIGHT外联结来处理。

6 组合查询 UNION

使用规则:
1.必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。
2.UNION中的每个查询必须包含相同的列,表达式或聚集函数(次序可以不同)。

UNION默认自动除去重复的行,想要显示所有的匹配行需要使用UNION ALL

6 全文本搜索FULLTEXT()

全文本搜索
可以在创建表时指定FULLTEXT,或者在稍后指定。在索引之后,使用两个函数Match()Against()执行全文本搜索。其中Match()指定被搜索的列(要与FULLTEXT(列)的列相同),Against()指定要使用的搜索表达式。
LIKE不同的是:全文本搜索会对结果排序。具有较高等级的(文本中词靠前的)行,先返回。而且由于数据是索引的,全文本搜索还相当的快。
注意
1.如果表中的行数少于三行,则使用全文本搜索不返回结果。
2.仅在MyISAM数据库引擎中支持全文本搜索。

6.1 使用查询扩展

例如要找出所有提到‘anvild’的注释。只有一个注释包含词‘anvild’,但你还想找出可能与你搜索有关的其他行,即使他们不包含词‘anvild’
SELECT 表.列 FROM 表 WHERE Match(表.列) Against(‘anvild’ WITH QUERY EXPANSION);
查询扩展可以极大的增加返回的行数。

6.2 布尔文本搜索

可以支持更多的细节,比如指定要排斥的词,指定排列的等级(但是不按等级值降序排序返回行),表达式分组等。
Match(某列) + Against(‘需要匹配的内容 匹配细节’ IN BOOLEAN MODE)
匹配细节是由全文本布尔操作符(具体省略)来控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值