MySql入门学习 DAY41

MySql入门学习(数据库mysql)

DAY41

今日内容:

完整查询语句

关键字

单表查询

多表查询  

子查询

完整查询语句

插入数据(INSERT INTO):

    语法一: (指定字段插入数据)   

    INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);

    语法二:    INSERT INTO 表名 VALUES (值1,值2,值3…值n);

    插入多条记录:

    语法:
    INSERT INTO 表名 VALUES
        (值1,值2,值3…值n),
        (值1,值2,值3…值n),
        (值1,值2,值3…值n);
       
更新数据(UPDATE  SET):

    语法:
    UPDATE 表名 SET
        字段1=值1,
        字段2=值2,
    WHERE 条件;

    注意:
    WHERE 可选
        有 就修改满足条件的记录
        没有  就全部修改

删除数据(DELETE)

    语法:
    DELETE FROM 表名
        WHERE 条件;

    注意:
    WHERE 可选
        有就 删除满足条件的记录
        没有  就全部删除
        如果需要全部删除 最好使用 TRUNCATE TABLE 表名
        DELETE是逐行比对  删除 效率低 而且删除的行号会保留

查询数据(SELECT)

    单表查询

    多表查询

    子查询

关键字

WHERE :  从硬盘上读取数据时的一个过滤条件 ,在没有索引的情况下  是一条一条记录比较  效率低

GROUP BY :用于给数据分组 方便统计

聚合函数:    将一堆数据经过计算,得到一个数据
    sum() 求和
    avg() 求平均数
    max()/min() 求最大值 / 最小值
    count() 个数

HAVING:用于对分组后的数据进行过滤 和GROUP BY 一起使用

与where的区别
        相同点: 都用于过滤数据
        不同点:
                1.where是最先执行   用于读取硬盘数据
                   having 要等到数据读取完之后 才能进行过滤 比where晚执行
                2.where中不能使用聚合函数
                   having中可以

ORDER BY [DESC,ASC]:    用于对记录进行 排序  DESC 为降序  ASC 为升序  默认为升序

修改为降序
SELECT *FROM 表名 ORDER BY 字段名 DESC;

LIMIT:    用于限制显示的条数  常用于 数据的分页展示

SELECT *FROM 表名 LIMIT 3; # 看表中的前三条数据

ON:作用 用于多表查询是 进行条件限制

单表查询

语法:

SELECT    * | 字段1 | 聚合函数 | 表达式    FROM 表名
                  WHERE 条件
                  GROUP BY 字段名
                  HAVING 按条件筛选
                  ORDER BY 字段名
                  LIMIT 限制显示条数

注意: 关键字的顺序必须与上述语法一致

关键字的执行优先级

1.找到表:from

2.拿着where指定的约束条件,去文件/表中取出一条条记录

3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组

4.将分组的结果进行having过滤

5.执行select

6.去重

7.将结果按条件排序:order by

8.限制结果的显示条数

多表查询  

1.笛卡尔积查询
        什么是笛卡尔积,用坐标中的一条记录 去链接另一张表的所有记录
        就像是把 两张表的数据做了一个乘法
        这将导致 产生大量的无用重复数据
2.内连接查询

只连接匹配的行   INNER JOIN

3.左外连接

左边表中的数据完全显示   右边表中的数据匹配上才显示 LEFT JOIN

4.右外连接

左边表中的数据匹配上才显示   右边表中的数据完全显示  RIGHT JOIN

5. 全外链接

通过UNION 间接实现

UNION  表示合并查询  意思是把多个查询结果合并在一起显示
              要求是 被合并的表结构必须相同
              默认去除重复                       

UNION ALL

合并但是不去除重复
       

子查询

    什么是子查询:将上一次查询的结果 作为本次查询的原始数据(或是查询条件)

    需求 查询出工资最高的人的信息

    先查询出 财务部 最高工资是多少

    拿着最高工资 去表中看 谁的工资和最高工资匹配

    select *from emp where salary = (select max(salary) from emp);
 

以上为本次学习内容

猜你喜欢

转载自blog.csdn.net/sql121407/article/details/82708609