##DQL:查询表中的记录

1、语法:

select

字段列名

from

表名列表

where

条件列表

group  by

分组字段

having  分组之后的条件

order  by

排序

limit

分页限定

2、基础查询

1、多个字段的查询

select  字段名1,字段名2,...from 表名;

*注意:

* 如果查询所有字段,则可以使用*来代替字段列表。

2、去除重复

* distinct

3、计算列

* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)

* ifnull(表达式1,表达式2):null 参与的运算,计算结果都为null

表达式1:哪个字段需要去判断是否为null

表达式2:如果该字段为null后的替换值

4、起别名

*as:as也可以省略

例子:

/*在 lxy数据库中创建一张学生表*/

create tablestudent(

idint,

namevarchar(20),

ageint,

sexvarchar(5),

addressvarchar(100),

mathint,

englishint);

/*插入数据*/insert into student(id,name,age,sex,address,math,english) values(1,'马云',66,'男','杭州',100,100);insert into student(id,name,age,sex,address,math,english) values(8,'马德',35,'男','香港',78,88);select * fromstudent ;/*数据去重*/select distinct address fromstudent;/*计算分数之和*/

select name,math,english,math+english fromstudent;/*如果有Null 参与的运算,计算结果都为Null*/

select name,math,english,math+ifnull(english,0) fromstudent;/*起别名*/

select name,math,english,math+ifnull(english,0) as Total from student;

3、条件查询

1、where子句后跟条件

2、运算符

*  >;=;=;<>(这个是不等于)

*  BETWEEN...AND

* IN(集合)

*  LIKE

*  _:单个占位字符

*  %:多个任意字符

*  IS NULL

*  and  或  &&

*  or  或  ||

*  not  或  !

例子1:普通查询

/*查询年龄大于20岁*/

select * from student where age >=30;/*查询年龄不等于30*/

select * from student where age <> 30;/*查询年龄在30-50之间*/

select * from student where age between 30 and 50;select * from student where age >= 30 && age <= 50;select * from student where age >= 30 and age <= 50;/*查询年龄为45,35,46的信息*/

select * from student where age = 45 or age = 35 or age = 46;select * from student where age in(45,35,46);/*查询英语成绩为null*/

/*这样查是不正确的,null不能使用 =(!=)判断*/

select * from student where english = null;/*正确写法*/

select * from student where english is null;

例子2:模糊查询

/*查询姓马的有哪些*/

select * from student where name like '马%';/*查询姓马的单名有哪些*/

select * from student where name like '马_';/*查询第二个字是化的人*/

select * from student where name like '_化%';/*查询姓名是三个字的人*/

select * from student where name like '___';/*查询姓名中包含马的*/

select * from student where name like '%马%';

4、排序查询

*  语法:order by 子句

*  order by 排序字段1 排序方式1,排序字段2 排序方式2...

*  排序方式:

*  ASC:升序,默认的

*  DESC:降序

*  注意:

*  如果有多个排序体哦阿健,则当前边的条件值一样时,才会判断第二条件。

/*按照数学成绩排序 降序*/

select * from student order by math desc;/*按照数学成绩排序 降序 如果数学成绩一样 按照英语成绩降序排序*/

select * from student order by math desc,english desc ;

5、聚合函数:将一列数据作为整体,进行葱纵向计算

1、count:计算个数

1、一般选择非空的列:主键

2、count(*)

2、max:计算最大值

3、min:计算最小值

4、sum:计算和

5、avg:计算平均值

*注意聚合函数的计算会排除null值。

*  解决方案:

1、选择不包含非空的列进行计算。

2、IFNULL函数

/*计算name的记录条数*/

select count(name) fromstudent;/*注意聚合函数的计算会排除null值,解决方案:*/

select count(ifnull(english,0)) fromstudent;select count(*) fromstudent;/*计算数学成绩最大值,最小值同理*/

select max(math) fromstudent;/*求和*/

select sum(math) fromstudent;/*平均值*/

select avg(math) from student;

6、分组查询

1、语法:group by 分组字段;

2、注意:

1、分组之后查询的字段:分组字段、聚合函数

2、where 和 having 的区别:

1、where在分组之前进行限定,如果不满足条件,则不参与分组。Having在分组之后进行限定,如果不满足结果则不会被查询出来。

2、where后不可以跟聚合函数,having可以进行聚合函数的判断。

/*按照性别分组,分别查询男、女同学的数学平均分*/

select sex, avg(math) from student group bystudent.sex;/*按照性别分组,分别查询男、女同学的数学平均分,分别的人数*/

select sex, avg(math),count(id) from student group bystudent.sex;/*按照性别分组,分别查询男、女同学的数学平均分,分别的人数 要求:分数低于70分的人不参与分组*/

select sex, avg(math),count(id) from student where math > 70 group bystudent.sex;/*按照性别分组,分别查询男、女同学的数学平均分,分别的人数 要求:分数低于70分的人不参与分组 分组之后人数大于2个人*/

select sex, avg(math),count(id) from student where math > 70 group by student.sex having count(id) > 2;select sex, avg(math),count(id) 人数 from student where math > 70 group by student.sex having 人数 > 2;

7、分页查询

1、语法:limit   开始的索引,每页查询的条数;

2、公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数

3、limit是一个MySQL的”方言“

/*每页显示3条记录*/

select * from student limit 0,3; /*第一页*/

select * from student limit 3,3; /*第二页*/

mysql 查询表 第一列报错_MySQL----DQL(查询数据库表中数据)相关推荐

  1. mysql删除表中所有数据_MySQL删除或清空表中数据的方法

    原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...

  2. mysql命令导入存储过程报错_mysql导入存储过程时declare报错的有关问题解决

    在导入存储过程时经常遇见下列DECLARE报错的问题: ? Error Code : 1064 You have an error in your SQL syntax; check the manu ...

  3. mysql用in报错_Mysql子查询IN中使用LIMIT

    学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...

  4. mysql主辅同步报错_mysql数据库主辅同步Slave_IO_Running,Slave_SQL_Running错误

    Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件 Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令. 这个错误是出现在我重启电脑之后 ...

  5. mysql源码安装报错_mysql 的二进制和源码包 安装的报错总结

    MySQL报错总结 报错原因:/application/mysql-5.6.44/tmp不存在 解决方法:mkdir /application/mysql-5.6.44/tmp 报错原因: /appl ...

  6. mysql下载是port报错_mysql group replication添加复制节点报错

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 恳求各位大神给把把脉,到底问题处在那个环节 环境: 三台物理机 192.168.1.3 192.168.1.4 192.168.1.5 配置文件: [my ...

  7. mysql创建bit类型报错_MySQL入门(三)——MySQL数据类型

    MySQL的数据类型包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型和二进制数据类型.不同数据类型决定了数据的存储格式.有效范围和相应的限制. 1.整数类型 MySQL支持的整数类型如 ...

  8. mysql导出txt文件报错_mysql导入txt文件

    1.首先在命令行启动mysql net start mysql 2.登录MySQL(建议使用非root用户) mysql --local-infile=1 -u one -p 3.创建数据库 如 CR ...

  9. mysql修改密码总是报错_mysql修改密码报错 | 吴老二

    mysql已经安装好了,不过重置密码的时候使用update修改mysql的密码出现了报错,我的mysql是5.7版本的 mysql> use mysql Reading table inform ...

最新文章

  1. 在线作图|差异柱状图(组内)
  2. 保护了无数医护人员的N95口罩,原来是华裔科学家和一位学生共同发明的!
  3. codevs 1002 搭桥
  4. 软件测试第二次作业:JUNIT单元测试方法
  5. 3-自定义BI启动版是否隐藏CMS名称
  6. C# 把特定数字移动到数字前面,其他顺序不变。
  7. IDA Pro 反汇编窗口基本操作
  8. java 解析日期 t z_date - Java SimpleDateFormat(“yyyy-MM-dd'T'HH:mm:ss'Z'”)给出时区为IST...
  9. linux 笔记服务器,Linux服务器 CentOS7.5 操作小笔记
  10. php设置http请求头信息和响应头信息
  11. 全球首发!惯性导航导论(剑桥大学)第十二部分
  12. Android源码学习之浅析SystemServer脉络
  13. Android底层开发
  14. 廖雪峰Python学习
  15. MAC苹果电脑装单win10系统
  16. “中国会员电商第一股”云集的反爬虫攻防战 | 产业安全专家谈
  17. Vue项目首页---开发周末游组件
  18. 2023秋招大厂经典面试题及答案整理归纳(201-220)校招必看
  19. 【复杂网络系列】模块度(Modularity )的计算方法
  20. Codeforces 1146G Zoning Restrictions

热门文章

  1. i3 10100和i5 10400的区别 i310100和i510400性能差多少
  2. uniapp 实现搜索使得搜索字体变颜色
  3. caffe总结(五)经典神经网络模型(LeNet , AlexNet , VGG , GoogLeNet)简介
  4. 企鹅号自媒体如何快速转正,企鹅号怎么过三级
  5. 关于在大厂拧螺丝钉的一些感想
  6. 语音变速和变调的实现
  7. 数据库多表查询 myBatis四表联查
  8. Redis单线程为何速度如此之快
  9. Windows安装Mysql,服务无法启动,错误1053处理
  10. Kinect DK相机与Realsense D435i相机记录