SQL基础操作

查询

全部查询

类别详细解示
基本语法select * from 表;
示例select * from money;
示例说明查询money表中所有字段中的所有结果

指定查询

类别详细解示
基本语法select 字段 from 表;
示例select id,username, balance from money;
示例说明查询money表中id,username, balance字段中的所有结果

不重复查询 

类别详细解示
基本语法select distinct 字段 from 表;
示例select distinct age  from money;
示例说明查询money表中age唯一的所有结果

条件查询

类别详细解示
基本语法select 字段 from 表 where where条件;
示例select * from money where age = 29;
示例说明查询money表中年龄为29的所有结果

 比较运算符和逻辑运算符都可以使用在条件查询。注意:逻辑比较等于为=,而不是==,字符表达为单引号。

示例select * from money where name = '小磊';
示例说明查询money表中name为小磊的所有结果

模糊查询

小% 表示以“小”字符开头,而后面可以是任意字符。同样, %小 表示以“小”结尾,而 %小%则表示包含“小”这个字符。还有可以使用not like表示否定。

统计类函数:

函数说明
sum求和
count统计总数
max最大值
min最小值
avg平均值

 使用方法如下

类别详细解示
基本语法select 函数(字段) from 表
示例select count(id) from money
示例说明查询money表的id总数

子查询

有时候,当我们查询的时候,需要的条件是另外一个select语句的结果,这时就需要使用子查询。用于子查询的关键字包括in、not in、=、!=、exists、not exists等。

类别详细解示
基本语法select 字段 from 表 where 字段 in(条件)
示例1select * from money where id in (1,3,4);
示例1说明按照id 查询指定用户
示例2select * from money where id in (select id from order_goods);
示例2说明将购买过商品的用户信息显示出来

结果集排序

类别详细解示
基本语法select 字段 from 表 order by 字段 排序关键词
示例select id,username, balance from money order by balance desc;
示例说明查询money表中的id,username,balance字段,按照余额进行降序排序

排序用到的关键词:

关键词说明
asc升序排列,从小到大(默认)
desc降序排列,从大到小

在 select 出来之后的结果集中排序使用 order by,desc 表示按照字段进行降序排列,asc 表示升序排列,如果不写关键字默认升序排列。

多字段排序

order by 后面可以跟多个不同的字段排序,并且排序字段的不同结果集的顺序也不同,如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序。

类别详细解示
基本语法select 字段 from 表 order by 字段1 排序关键词,… …字段n descasc;
示例select id,username, balance from money order by balance desc,age asc;
示例说明查询money表中的id,username,balance字段,按照余额进行降序排序,若余额全都一样,则再使用age进行升序排序

注:如果第一个字段已经将结果给排好。第二个字段排序字段不生效。本例中,第二个字段无效。

字段取别名

类别详细解示
基本语法select  字段 as 别名 from 表
示例select  uersname as name from money;
示例说明查询 money表中的uersname并改为name显示

可省略,但是建议写上as,增加可读性。 

分组 group by

我们拿金额表里面的省份进行分组数据,分组数据后你会发现。有相同的省份会去掉。即,一个省份为一个组。

类别详细解示
基本语法select * from 表 group by 字段
示例select * from money group by province;
示例说明按照province进行分组

 如果要对两个及以上数据分组,语法为select * from 表 group by 字段,字段,……

结果再过滤having

having子句与where有相似之处但也有区别,都是设定条件的语句。

having 是筛选组 而where是筛选记录。

类别详细解示
基本语法select * from 表 group by 字段 having 条件
示例select count(province) as result ,province from money group by province having result >2;
示例说明对地区分组并统计总数,将分组结果中大于2的分组地区显示出来

内连接

inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

基本语法一:

类别详细解示
基本语法select 表1.字段 [as 别名],表n.字段 from 表1 [as 别名],表n [as 别名]where 条件;
示例SELECT u.device_id,q.question_id,q.result
from question_practice_detail as q,user_profile as u
where university = '浙江大学'and q.device_id=u.device_id
示例说明查询浙江大学学生的device_id,question_id,result

基本语法二:

类别详细解示
基本语法select 表1.字段 [as 别名],表n.字段 from 表1 [as 别名]INNER JOIN 表n [as 别名]on 条件;
示例select q.device_id, q.question_id, q.result
FROM question_practice_detail q INNER JOIN user_profile p 
ON (p.device_id = q.device_id AND university = '浙江大学')
 
示例说明查询浙江大学学生的device_id,question_id,result

外连接

说明详解
基本语法select 表1.字段 [as 别名],表n.字段 from 表1 LEFT JOIN 表n on 条件;
示例select * from user left join order_goods on user.uid = order_goods.uid;
示例说明以左边为主,查询哪些用户未购买过商品,并将用户信息显示出来

外连接又分为左连接和右链接,具体定义如下。

左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录

右连接:包含所有的右边表中的记录甚至是右边表中没有和它匹配的记录

类别详细解示
基本语法select 表1.字段 [as 别名],表n.字段 from 表1 right JOIN 表n on 条件;
示例select * from user right join order_goods on user.uid = order_goods.uid;
示例说明查询商品表中哪些用户购买过商品,并将用户信息显示出来

内连接只显示符合连接条件的记录,外连接除了显示符合条件的记录外,还显示表中的记录,例如,如果使用左外连接,还显示左表中的记录。

全连接

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

具体可以看这个博客写的

左连接 ,右连接,内连接和全外连接的4者区别_灰太狼_cxh的博客-CSDN博客_左连接,右连接,内连接,外连接的区别

在mysql中,round函数用于数据的四舍五入,它有两种形式:

1、round(x,d)  ,x指要处理的数,d是指保留几位小数

这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;

2、round(x)  ,其实就是round(x,0),也就是默认d为0;
 

注明:大部分内容来自《3天入门MySQL》,其实就是一篇《3天入门MySQL》的小总结,作者为进击的皇虫 ,书籍链接如下《3天入门MySQL》 - 书栈网 · BookStack,本文只做学习交流使用,如有侵权行为,十分抱歉,请及时联系本人删除博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值