– DQL语句里面查询某个字段为null的语法
– select 字段列表 from 表名 where 字段名称 is null ;
– 需求1:查询英语成绩为null的学生信息;
/*
select
*
from
student
where english == null ;
*/
SELECT
*
FROM
student
WHERE english IS NULL ;

– 查询某个字段值不等于null的语法
– select 字段列表 from 表名 where 某个字段 is not null ;
/*
SELECT
*
FROM
student
WHERE english != NULL ;
*/
– 需求2:查询英语成绩不为null的学生信息;
SELECT
*
FROM
student
WHERE english IS NOT NULL ;

– 模糊查询:like关键字
/*
%:代表任意字符 (使用居多)
_:一个下划线代表一个字符

select 字段列表 from 表名 where 某个字段名称 like ‘%马%’
select 字段列表 from 表名 where 某个字段名称 like ‘马%’
*/
– 查询mysql中全局变量包含 character
SHOW VARIABLES LIKE ‘%character%’ ;

– 需求3:要查询姓马的学生信息
SELECT
*
FROM
student
WHERE NAME LIKE ‘%马%’ ; – 字符串拼接
– 需求4:查询姓名为三个字符的学生信息;
SELECT
*
FROM
student
WHERE NAME LIKE ‘___’ ; – 一个_代表一个字符

– 应用场景:给一个表单—搜索框----输入信息---->看到搜索结果(百度搜索引擎)
– 搜索框—搜索按钮---->数据库完成模糊查询

– 聚合函数查询
– 语法:select 聚合函数 from 表名;

– count(列名或者字段名称):查询总记录数 (统计) (使用最多的)
– 统计有多少条记录,就是count函数,而且里面的字段名称一般用非业务字段(id)
– 需求5:统计这个student表有多少条记录
– select count(english) ‘总记录数’ from student ; 有问题:业务字段如果某个值null,不会统计这条记录
– select count(ifnull(english,0)) ‘总记录数’ from student ; – 不建议使用业务字段去统计
– 使用非业务字段 id来统计
SELECT COUNT(id) ‘total’ FROM student ;

– avg(字段名称/某个列的名称) :查询平均分 —都是int类型
– 需求6:查询数学的平均分
SELECT AVG(math) ‘数学平均分’ FROM student ;
– 需求7:查询英语成绩的平均分
SELECT AVG(IFNULL(english,0)) ‘英语平均分’ FROM student ;

– sum(字段列表) :求和函数
– 需求8:要查询数学成绩的总分
– 数学和英语的总分成绩
SELECT SUM(math+IFNULL(english,0)) FROM student ;

– max(列名/字段名称) /min(列名/字段名称):最大值和最小值

– 需求9:要查询数学的最高成绩
SELECT MAX(math) FROM student ;
SELECT MIN(math) FROM student ;

– 聚合函数的复杂使用:单表 select嵌套select

– 需求10:查询数学成绩出大于数学平均分的学生信息;
– 分步:1)查询出数学平均分是多少
– select avg(math) from student ; – 79.5000
– 2)查询出大于79.5000的学生信息
– select * from student where math > 79.5000 ;
– 一步走
SELECT
*
FROM
student
WHERE math >
(SELECT
AVG(math)
FROM
student) ;

– 需求11:查询出数学最高分的学生信息
– 分步:1)查询出最高分的数学成绩
– select max(math) from student ; – 99
– 2)查询出math是99分的学生信息
– select * from student where math = 99 ;
– 一步走
SELECT * FROM student WHERE math =
(SELECT MAX(math) FROM student) ;

– 排序查询:order by
– 语法:select 字段列表 from 表名 order by 字段名称 排序规则(asc:升序(默认)/desc:降序)
– 需求12:数学成绩升序排序 (应用场景:针对某个字段排序)
SELECT * FROM student ORDER BY math ASC ;-- 字段后面没有带排序规则:asc

– 查询:多个字段同时排序
– 语法:select 字段列表 from 表名 order by 字段名称1 排序规则,字段名称2 排序规则;
– 前面第一个字段:按照主要条件排

UPDATE student SET english = 95 WHERE id = 6 ;
UPDATE student SET english = 100 WHERE id = 5 ;

– 需求12:查询学生的所有信息,数学成绩升序,英语成绩降序同时排序
SELECT
*
FROM
student
ORDER BY math ASC, – 主要条件排序
english DESC ; – 次要条件排序

– 分组查询:group by
– 注意事项:分组查询的时候,使用select可以查询出分组的字段
– 语法 :select 字段列表(包括分组字段) from 表名 group by 分组字段名称;

– 需求:按照性别分组,计算出他们组的数学的平均分
SELECT
sex ‘性别’,
AVG(math) ‘数学平均分’
FROM
student
GROUP BY sex ;

– 注意实现 group by如果 和where 一块使用?
– where条件必须置于group by 之前,先满足条件,才能分组;
– group by 的后面不能使用聚合函数!

– 需求:按照性别分组,查询他们的数据平均分,条件:数学成绩不大于70分的人不参与分组

/*select
sex ‘性别’,
avg(math) ‘数学平均分’
from
student
group by sex
where math > 70 ;
错误语法
*/
SELECT
sex ‘性别’,
AVG(math) ‘数学平均分’
FROM
student
WHERE math > 70
GROUP BY sex ;

– 筛选having
– 一条语句既有分组,又有筛选,还有where,先后顺序?
– having和group by:having后面可以使用聚合函数,而且group by 不能使用聚合函数
– where 在前面,下来group by,再是having 筛选

– 需求:按照性别分组,查询他们的数据平均分,
– 条件:数学成绩不大于70分的人不参与分组,筛选出总人数大于2的一组
SELECT
sex ‘性别’,
AVG(math) ‘数学平均分’,
COUNT(id) ‘总人数’
FROM
student
WHERE math > 70 – 数学成绩大于70分的同学参与分组
GROUP BY sex
HAVING COUNT(id) > 2 ;

SELECT
sex ‘性别’,
AVG(math) ‘数学平均分’,
COUNT(id) total
FROM
student
WHERE math > 70 – 数学成绩大于70分的同学参与分组
GROUP BY sex
HAVING total > 2 ;

– 分页查询:limit (重点)
– 语法:select 字段列表 from 表名 limit 起始行数,每页显示的条数;
– 起始行数= (当前页码-1)*每页显示的条数
– 已知参数:每页显示条数3条, 查询第一页的数据;
SELECT * FROM student LIMIT 0,3 ;
– 第二页数据 (每页显示3条)
SELECT * FROM student LIMIT 3,3;
– 第三页数据 (每页显示3条)
SELECT * FROM student LIMIT 6,3 ;
– 第四页数据(每页显示3条)
SELECT * FROM student LIMIT 9,3 ;

– 插入一些数据
INSERT INTO student VALUES(9,‘盲僧’,25,‘男’,‘西安’,78,76),
(10,‘ez’,20,‘男’,‘北京’,80,78),
(11,‘螳螂’,22,‘男’,‘咸阳’,87,98) ,
(12,‘木木’,28,‘男’,‘渭南’,76,66) ;

– 查询所有学生信息
SELECT * FROM student ;

– 数据库约束
– 约束:是约束用户操作数据的一种非法行为
– 举例:插入全表数据,直接插入null,null就是没有值,没有意义

– 分类
– 默认约束default
– 非空约束not null
– 唯一约束unique
– 主键约束 primary key
– 自增长约束 auto_increment—和主键约束一块用
– 外键约束 foreign key
– 级联操作CACADE:级联修改和级联删除,是在外键约束基础上使用的

– 创建一张表 worker表
CREATE TABLE worker(
id INT ,
NAME VARCHAR(10),
gender VARCHAR(3) DEFAULT ‘男’ – 默认约束
) ;

– 插入两条正常的数据
INSERT INTO worker VALUES(1,‘高圆圆’,‘女’),(2,‘张佳宁’,‘女’) ;
– 如果插入数据,插入部分字段,性别字段没有插入数据,默认值null(没有意义)
INSERT INTO worker(id,NAME) VALUES(3,‘文章’) ;
DELETE FROM worker WHERE id = 3 ;

– 默认约束default :当某个表插入部分字段,没有给指定字段插入数据,默认约束就可以给默认值

DROP TABLE worker ;

– 非空约束 not null,当用户在插入数据的时候,直接插入null,非空约束起作用
CREATE TABLE worker(
id INT NOT NULL, – 非空约束 (插入数据,必须存在)
NAME VARCHAR(10)
) ;
– 插入正常数据
INSERT INTO worker VALUES(1,‘张三丰’),(2,‘张无忌’) ;

INSERT INTO worker VALUES(NULL,‘张三’) ; – 非法行为:插入null值,不应该出现
– Column ‘id’ cannot be null :列id字段不能为null
INSERT INTO worker(NAME) VALUES(‘高圆圆’) ; – 这种sql不行

DELETE FROM worker WHERE NAME = ‘高圆圆’ ;
– 通过sql语句修改字段类型:将not null去掉了
ALTER TABLE worker MODIFY id INT ;
– 修改字段类型
ALTER TABLE worker MODIFY id INT NOT NULL ;

– 唯一约束 unique,限定某个字段值不能重复
– 实际业务中:权限校验(邮箱/手机号:身份信息):手机号登录 —这个身份:超级管理员
– 实际业务中:手机短信验证/邮箱邮箱激活…
CREATE TABLE worker(
id INT NOT NULL,
NAME VARCHAR(20) NOT NULL ,
phone_number VARCHAR(11) UNIQUE

) ;

– 插入正常数据
INSERT INTO worker VALUES(1,‘高圆圆’,‘13366668888’),(2,‘张佳宁’,‘18866662222’);
– 插入数据
INSERT INTO worker VALUES(3,‘李四’,‘13366668888’) ;-- Duplicate entry ‘13366668888’ for key ‘phone_number’ :重复数据出现

– 想通过sql语句将唯一约束删除
– 唯一约束—建立一种索引,索引名称index_name默认就是当前字段名称
– 删除唯一约束就是将唯一索引类型的索引名称删除
– alter table 表名 drop index 索引名称
ALTER TABLE worker DROP INDEX phone_number;

DELETE FROM worker WHERE id = 3 ;
– 通过sql语句:添加唯一约束,就是和修改表字段类型语法一致
ALTER TABLE worker MODIFY phone_number VARCHAR(11) UNIQUE ;

DROP TABLE worker ;
SELECT * FROM worker;

聚合函数中的小应用以及DQL语句中的应用相关推荐

  1. c语言printf输出语句_C语言中另一个printf()语句中的printf()语句

    c语言printf输出语句 A printf() function is a standard library function, that is used to print the text and ...

  2. mysql中两个表连接_SQL语句中两个表的连接

    展开全部 一.外连接 1.左连接  left join 或 left outer join SQL语句:select * from student left join score on student ...

  3. mysql中的like什么意思_mysql语句中like用法是什么

    mysql语句中like用法:1.搭配[%]使用,[%]代表一个或多个字符的通配符:2.搭配[_]使用,[_]代表仅仅一个字符的通配符. mysql语句中like用法: 1.常见用法: (1)搭配%使 ...

  4. 下列语句中在python中是非法的_下列语句中,()在Python中是非法的

    下列语句中,()在Python中是非法的 答:x=(y=z+1) 线上书店和实体书店的经营方式基本上是一样的,都是图书种类越齐全越好 答:× 由此可知,从安全的角度考虑,汽车的色彩最好选择( )或红色 ...

  5. 下列java语句中 不正确_下列JAVA语句中,不正确的一项是()

    [单选题]下列代表"横向跳格"格式转义字符的是( ) . (3.0分) [单选题]运算符+* % =中,优先级最低的是( ). (3.0分) [填空题]要使用标准的I/O库函数,必 ...

  6. python中else的用法_Python循环语句中else的用法总结

    如何正确的理解python for循环中的else用法 程序中的else语句是便于处理某种行为,在循环的正常终止时执行:即以return或者break方式退出循环将会忽略else语句:存在contin ...

  7. mysql中in和between_MySQL的WHERE语句中BETWEEN与IN的用法和他们的区别

    MySQL BETWEEN 用法 not可以对between-and取反. 1.数值型 BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围.BETWEEN 同 AND 一起 ...

  8. python中if in的用法_if语句中“ in”的使用和含义?

    慕的地6264312 由于您声称习惯于JavaScript:Python in运算子类似于JavaScript in运算子.这是一些JavaScript:var d = {1: 2, 3: 4};if ...

  9. java string 空间_Java中,String str = “Runoob”;这个语句中str和“Runoob”都占空间吗?分别占多大?...

    题目描述 1,"Runoob"这个字面值是在方法区的常量池中,它占多大空间? 2,str是存在栈区吗?它又占多大空间呢?是占一个 char型大小的空间吗? 3,str是存放的&qu ...

最新文章

  1. Llinux课程计划安排
  2. 使用Java反射更改私有静态最终字段
  3. 数据库自动收缩带来的严重问题
  4. Python教程:快速掌握列表的常用方法
  5. MyEclipse设置文件编码
  6. Discuz!$_G变量的使用方法
  7. python编程环境安装包_Python环境安装与配置
  8. 企业打开Redis的正确方式,来自阿里云云数据库团队的解读
  9. LOADRUNNER连接ORACLE数据库的方法
  10. struts2令牌(token)内部原理
  11. Jupyter Lab——无法显示matplotlib绘制的图像
  12. Duplicate spring bean id
  13. [Publish AAR To Maven] 使用 Gradle 发布 AAR 到 Maven 仓库
  14. 学画画怎么画三点透视图
  15. 计算机flash听课记录范文,听课记录范文.doc
  16. DOS命令,卸载程序
  17. 简述linux操作系统的功能是什么,什么是Linux操作系统及其功能
  18. 三维形体的数据结构(1)半边数据结构
  19. WCH系列芯片CoreMark跑分
  20. react 使用 Youtube 播放器

热门文章

  1. otsu java,opencv阈值处理--threshold函数、自适应阈值处理、Otsu处理(大津法)
  2. Atmel Studio 开发 atmega -- Pro Micro
  3. win10使用WinAppDriver实现UI自动化
  4. 行业分析-全球与中国造纸助留剂市场现状及未来发展趋势
  5. NPN和PNP三极管做开关电路使用方式速记
  6. size mismatch for yolo_head2.1.bias: copying a param with shape torch.Size(【75】) from checkpoint...
  7. Linux系统shell脚本实战之解决生产ddos攻击
  8. bugku之md5 collision(NUPT_CTF)
  9. 又一大波僵尸向社交网络来了
  10. linux结构体转qbytearray,QByteArray储存二进制数据(包括结构体,自定义QT对象)