MySQL中 DQL:查询表中的记录

DQL:查询表中的记录
select * from 表名;

  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
    * 如果该字段为null后的替换值。
    4. 起别名:
    * as:as也可以省略
  3. 条件查询
    1. where子句后跟条件
    2. 运算符
    * > 、< 、<= 、>= 、= 、<>
    * BETWEEN…AND
    * IN( 集合)
    * LIKE:模糊查询
    * 占位符:
    * _:单个任意字符
    * %:多个任意字符
    * IS NULL
    * and 或 &&
    * or 或 ||
    * not 或 !

排序
根据某一列来排序
select * from 表名 order by 列名 ASC;
select * from 表名 order by 列名 DESC; – 排序方式

按照数学成绩排名,如果数学成绩一样,则按照英语成绩排名。
select * from 表名 order by 列名1 ASC, 列名 2 ASC;

聚合函数:将一列数据作为一个整体,进行纵向的计算。(count 计算个数,max计算最大值, min计算最小值,sum 求和,avg计算平均值)

注意:聚合函数计算排除null值。
解决方案:1.选择不包含非空的列。 2.IFNULL函数。
列子 :select count (ifnull(english,0)) from student;
count一般的用法是(count (id))

练习
Mysql使用insert插入多条记录 批量新增数据

INSERT INTO t able1 VALUES(1,‘小明’),(2,‘小强’),(3,‘小杜’),(4,‘小李’),(5,‘小白’);
limit的用法
select *from table LIMIT [offset,]rows | rows OFFSET offset
where 和 having 的区别?

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

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

     INSERT INTO  lian (id,NAME) VALUE(3,'小明')
     SELECT *FROM lian
     INSERT INTO  lian (id,NAME) VALUE(4,'小明')
     DELETE FROM lian WHERE id IN(2,3)  #同时删除多条语句
     -- 增加行
     INSERT INTO  lian (id,NAME) VALUE(1,'小红'),(2,'小花'),(3,'小李')
     INSERT INTO  lian (id,NAME,age,english) VALUE(5,'小白',25,NULL)
     INSERT INTO  lian (id,NAME,age,english) VALUE(6,'马大',25,NULL),(7,'马到成功',25,NULL)
     INSERT INTO  lian (id,NAME,age,english) VALUE(8,'小化',25,NULL)
     -- 增多一列
     ALTER TABLE  lian  ADD age INT(10)
     ALTER TABLE  lian  ADD english INT(10)
     -- 修改表格中的数据
     UPDATE lian SET english =60 WHERE id =1;
     UPDATE lian SET english =70 WHERE id =2;
     UPDATE lian SET english =70 WHERE id IN(3,4);
     UPDATE lian SET english =90 WHERE id =4;
     -- 		
     UPDATE lian SET age =10 WHERE id =1;
     UPDATE lian SET age =30 WHERE id =4;
    
     SELECT NAME ,age FROM lian;
     -- 查询年龄等于20岁的
     SELECT  * FROM lian WHERE age =20;
    
     -- 查询年龄不等于20岁
     SELECT *FROM lian WHERE age !=20;
     SELECT *FROM lian WHERE age <>20;
     -- 查询年龄大于等于20小于等于30
     SELECT *FROM lian WHERE age >=20 AND age<=30;
     -- 查询英语成绩不为null
     SELECT *FROM lian  WHERE english IS NOT NULL
    
     -- 查询姓马的有哪些? like
     SELECT *FROM lian WHERE NAME LIKE '马%'
    
     -- 查询姓名第二个字是化的人
     SELECT *FROM lian WHERE NAME LIKE'_化%'
    
     -- 分页查找 
     SELECT * FROM lian LIMIT 0,3;    -- 第 1页
     SELECT * FROM lian LIMIT 3,3;    --  第2页
     SELECT * FROM lian LIMIT 6,3;  --  第 3页
    
     -- 聚合函数
     SELECT COUNT(*) FROM lian
     SELECT COUNT(IFNULL(english,0)) FROM lian
     SELECT COUNT(*) FROM lian
     SELECT SUM(age) FROM lian
    
    
     -- 排序
    
     SELECT * FROM lian ORDER BY age ASC;
    
发布了101 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40764966/article/details/101287687