MySQL查询语句

1. 一般查询

select * from table;

创建表:并插入数据,为下面的查询做例

2. 排序语法:关键字排序

升序和降序默认的排序方式就是升序

ASC :升序;DESC :降序;配合order by 语法

按照name列降序排列:

按照hobbid列降序,id列升序排列(先排hobbid,再排id)

以多个列作为排序关键字,只有当第一个参数有相同的值,第二个字段才有意义。因为多个列排序,会先对第一个字段进行排序,当第一个字段存在重复时,对重复的字段,会根据第二个字段再进行排序。

3. where条件的筛选功能(比较符)
3.1 区间判断:可与and or 搭配使用,查询分数大于70且小于等于90的行:

查询分数大于80或小于70的行

3.2 嵌套多条件,条件中再嵌套条件,用()

4. 分组查询

SQL查询的结果进行分组,使用 group by 语句 配合聚合函数一起来实现。

4.2 聚合函数用法示例

选择列用于聚合函数,如果使用group by,则还需要至少一个列用于分组

**针对 info 表中的数据,按照 hobbid 列中的每个唯一值,统计出该值对应的记录数量,并将结果按照 hobbid 的值进行分组展示。**直白点说就是统计每个hobbid对应的记录数量,并显示出来。

在聚合函数分组语句中,所有的非聚合函数列,都可以在group by 语句中。

也可以联合wherehaving等语句进行筛选

在group中使用having语句

having是在group by中用于筛选的语句,写在group by之后

例:以hobbid这一列作为分组,计算成绩score的平均值,筛选出平均成绩大于等于60分的分组

例:统计姓名,以兴趣和分数作为分组,统计出成绩大于80的分组,然后对统计姓名的列按照降序排列

5. limit

limit 1,3 为例:

1是位置偏移量(可选参数),偏移1表示从第二行开始;

如果不设定位置偏移量,默认为0,从第一行开始。3是从起始行开始连续选取三行。

例:选取以id排序的最后三行:

6. as :表和列的别名

实际工作中,表的名字和列的名字可能会很长,书写起来不太方便,需要多次声明表和列时,完整展示太麻烦,可以设置别名,可以使书写简化,方便阅读。

设置别名使用 as,设置列名的别名

7. 通配符

like :模糊查询 ,% :表示0个,1个或多个字符 ,_ :表示单个字符

8. 子查询
子查询也叫内查询,嵌套查询。

是在select语句当中又嵌套了一个select。嵌套的select才是子查询,先执行子查询的语句,外部的select再根据自条件的结果进行过滤查找。

子查询可以使多个表,也可以是同一张表。

关联语句: in ; not in ,格式 select (select )

先执行子查询里,筛选出score>=80的id,再回到外层查询,根据查到的id,列出对应id的name,score

执行顺序和上面一样,区别在于回到外层查询时,对查到的id取反,即除了查到id,列出其他的id对应的name,score

例:联合其他表进行查询

也可以和update连用,查询test表中name为tianqi的id,将info表中对应id的score改为80

 子查询当中多表查询和别名

例:info表和test表,查询两张表id相同的部分。然后根据id相同的部分,查询info表的对应id的所在行

解释:a.id in (select b.id from test as b);

info表和test表,查询两张表id相同的部分。然后根据id相同的部分,查询info表的对应id中score大于80的所在行

例:info表和test表,查询两张表id相同的部分。然后根据id相同的部分,查询info表的平均成绩

9. exists

exists判断子查询的结果是否为空。不为空返回true;为空返回false

看起来好像是统计score大于80的数量,实际是先执行子查询,查询结果存在,则exists返回值为true,执行外层查询,统计info的总行数

例:查询分数,如果分数小于50,则统计info的字段数

10. mysql的视图(view)

视图是一个虚拟表,表的数据基于查询的结果生成。视图可以简化复杂的查询,隐藏查询的细节,访问数据更安全。视图表是多表数据的一个集合表。

视图和表之间的区别:

存储方式:表是实际的数据行,视图不存储数据行,仅仅是查询结果的虚拟表。
数据更新:更新表可以直接更新数据表的数据(较老的版本可能不支持)。
占用空间:表实际占用空间,视图表不占用空间,只是一个动态结果的展示。
视图表的数据可以是一张表的部分查询数据,也可以是多个表的一部分查询数据。
 查询当前数据库当中的视图表:

创建视图表:

删除视图表:

创建一张视图表,视图表中包含 id,name,address ,从info 和test当中的name值相同的部分创建

可以发现,视图表其实就相当于为查询语句创建了一个别名,为查询做了简化。

平时使用中表的权限是不一样的,因为库的权限是有控制的。而查询视图表的权限相对低。所以使用视图表既可以保证原表的数据安全,也简化了查询的过程。

11. 连接查询

两张表或者多个表的记录结合起来,基于这些表共同的字段,进行数据的拼接。

首先,要确定一个主表作为结果集,然后将其他表的行有选择性的选定到主表的结果上(即做一个拼接)。

1、内连接:两张表或者多张表之间符合条件的数据记录的集合。

INNER JOIN,INNER一般可以省略

把两张表按照a_id,a_name,b_level拼接起来,并以on 后接筛选条件

外连接:取两个表或多个表之间的交集。outer join,outer一般可以省略

左连接:左外连接,left join ,left outer join

左连接以左表为基础,接收左表的所有行,以左表的记录和右表的记录进行匹配。匹配左表的所有,以及右表中符合条件的行。不符合的显示null

右连接:右外连接,right join , right outer join

基本就是跟左连接反过来。右连接以右表为基础,接收右表的所有行,以左表的记录和右表的记录进行匹配。匹配右表的所有,以及左表中符合条件的行。不符合的显示null。

 

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一种常用的关系型数据库管理系统,它支持使用SQL语言进行数据的查询、插入、更新和删除等操作。以下是一些常见的MySQL查询语句: 1. SELECT语句:用于从数据库中检索数据。 示例:SELECT * FROM 表名; 2. WHERE子句:用于在SELECT语句中添加条件筛选。 示例:SELECT * FROM 表名 WHERE 条件; 3. ORDER BY子句:用于对查询结果进行排序。 示例:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC; 4. LIMIT子句:用于限制查询结果的数量。 示例:SELECT * FROM 表名 LIMIT 数量; 5. JOIN语句:用于在多个表之间建立关联。 示例:SELECT * FROM 表1 JOIN 表2 ON 表1.列 = 表2.列; 6. GROUP BY子句:用于对查询结果进行分组。 示例:SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名; 7. HAVING子句:用于在GROUP BY子句后添加条件筛选。 示例:SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING 条件; 8. INSERT INTO语句:用于向数据库中插入新的数据。 示例:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); 9. UPDATE语句:用于更新数据库中的数据。 示例:UPDATE 表名 SET 列名 = 值 WHERE 条件; 10. DELETE FROM语句:用于从数据库中删除数据。 示例:DELETE FROM 表名 WHERE 条件; 这些只是MySQL查询语句的一部分,还有很多其他的语句和功能可以用于满足不同的需求。如果你有具体的问题或者需要更详细的介绍,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值