mysql printf_MySQL_DQL操作

DQL(Data Query Language)简单的来说就是数据的查询语言。

1.最简单的查询(显示表中的所有信息)

语法: select * from 表名;

1a62fcef277cd69a6740ee4eef1566be.png

2.普通查询

语法: select 字段列表 from 表名列表 where 条件列表;

注意:这些列表是可以有多个的意思,用逗号隔开,最后一项不加逗号。

这是表的最初始状态

9ed5b8edef26a1c2f7a50900e1b083a7.png

如果想查询11岁的男生,则输入 SELECT age FROM tb1 WHERE sex='男';

5282529e98cb15bf9b3722cca9b5b83c.png

创建一个新表

ed49b887c59fd0435265cb67c8493aa9.png

3.基础查询

语法 select 列名1,列名2 from 表名;

注意:查询所有的用*(不推荐),或者在select后面写下全部列名;

2084b6f4be39985b110282a55bb09819.png

再次查询地址

5a9b35b240e9385ea7e65ef9338d24cc.png

发现有一点问题,如果只显示地址,那么重复的地址被多次显示出来,那么就可以用去重查询。

4.去重查询

语法: select distinct 列名 from 表名;

ed11e718ba75507c51bceb9650ae9592.png

发现重复的地址全部只留下来了一个;

注意:在向表中插入数据的时候可能会遇到空字符,这样就会导致多个相同的地址存在,这是检查一下自己的代码。

5.利用表中的数据进行计算查询

如果想知道上表的数学英语成绩的和

语法: select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 from 表名;

718304a475043d2ce0f0cf268e7d4ae6.png

发现可以算出来成绩的和,但是列名不合适,并且当英语为NULL的时候,总分也是NULL,本应该是,数学成绩,下面这两个问题一一解决,

(1)算出数据改名

语法:select select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;

注意:as可有可无;

329f990343e6dff67d9fecb40c9ee950.png

(2)关于NULL的问题

分析,正常情况下,如果英语旷考,那么成绩应该为0

语法:select select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;只需要在表达式里加上ifnull方法;

注意:ifnull方法有两个参数前面是可能会出现NULL值得列名,后面是如果遇到NULL则把他的值改为什么,例如下面例子 SELECT NAME,math,english, math+IFNULL(english,0) AS 总分 FROM tb2;

82c78bb8ed1f29a984bd75ca3a28a048.png

发现完美的解决了上面的两个问题。

6.条件查询,其中关键字分别由,<=,>=,=,<>,between and,in,like,is NULL,&&(and),||(or),!。

(1)想要查询年龄等于23的人

语法:SELECT * FROM 数据库 WHERE 条件;

注意:在java中如果用iF判断相等需要用==,而在sql中只需要一个=;

789f81f348820758e1cc8a5fb57113a9.png

(2)想要查询年龄不为23 的人SELECT * FROM tb2 WHERE age !=23;

169fe8b03df18f35b3b44f965f6e704f.png

可见没有年龄等于23的人,还有一种方法,用到MySQL专有的不等号<>;

f06ddaa38383295d6ae3d3e809c29ebf.png

可见结果一模一样

(3)查询一个范围内的人

ab928e72867743966606bc9a5f83f671.png

当然可以用and这两个是一个意思,还可以用另一种方法,那就是between and

注意:两个边界都包含及大于等于和小于等于

d9cca572300160c42e367ea76dd9a54e.png

结果一模一样。

(4)想查询年龄为23,48,45的,人都比较懒,不想写三行,于是还有一种简便方法。那就是in();

51af0b35267a2c15758829ac49923609.png

(5)想要查询英语旷考的人,正常的想法就是判断english=null;那么对不对呢?

aa678c94aa8de37529760dd37efdc812.png

发现查询不到,也就是不能用等号判断是否为NULL,那就要用is;

9905d888a7b1806e4caf711cb5187fa6.png

发现查到了英语缺考的人。

(6)想要模糊查询;

语法like 条件用''括起,然后有两种字符:%任意个字符,_一个字符,想查,第二个字为三的人,

353ce9323454c6584cc35f42bfdea6e7.png

如愿以偿;

7.排序查询

语法 select * from 表名 order by 排序字段1 排序条件1,排序字段2 排序条件2;

注意:如果有多个条件,当前面的值一样,才会判断后面的条件,并且排除了非空的情况,即不算NULL值;如果不写递增递减,则默认递增(ASC),递减(DESC)。

e772c6d3dddcc236dc9c0ac9fb024c38.png

发现,已经按我们的想法排序出来了

8.聚合函数:将一列数据作为一个整体计算

语法 select 聚合函数 from 表名;结果会呈单行单列的方式显示,其中聚合函数有五个,分别为count()计算个数,max()求最大值,min()求最小值,sum()求和,avg()求平均值,在括号里面写要计算你的列名。仅用算英语总分为例

7c52c74724fbbfda4f936354f8c321a7.png

另外还有一个count方法需要特殊强调,如果用count(*),在所有列中,只要有一个列没有NULL那么就会成为一条记录

c60d9a3cb1ec2e07c28ebb7f8370d2d5.png

9.分组查询

语法: SELECT 列名或者聚合函数 from 表名 group by 列名。

注意:分组之后查询字段为分组字段 或者聚合函数,其他无意义

1e7b65e33ba6c824c17123aabb002887.png

(1)低分不参与分组,限定分组条件。

注意:分组之后人数要大于两个人,即count(*)的值大于2

ccb53baa73a01e1a235326729ff9d786.png

c1d664a5d36da85ddb5ef686b127858e.png

注意:having和where 的区别:

(1)作用位置不同:where是分组之前限定,不参与分组。而having是分组之后限定,如果不满足条件,则不会被查询出来

(2)where后不可以跟聚合函数,而having后面可以跟聚合函数。

10.分页查询

语法:开始的索引,每页查询的条数。select * from 表名 limit 开始的索引,每页查询条数。

注意:开始的索引=(当前页码-1)*每页显示条数。分页操作是一种"方言",也就是说只能在MySQL中使用,别的数据库就不可以用limit关键字。

7a9a22544f2b0b4dc8a52f3ac8fa644b.png

1516cfd0138ce82418fb13880cc382c8.png

可以发现,数据每页四个在页面中呈现出来,当然最后一页最多有四个数据,最少一个数据。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值