美文网首页
mysql 学习

mysql 学习

作者: 客观开发者 | 来源:发表于2022-01-15 10:57 被阅读0次

    1,数据库连接工具
    SQLyog - 64 bit Trial
    Navicat Premium 15
    DBBrowser
    2,mysql 安装


    image.png

    修改完数据库密码需要

    flush privileges;
    修改 my.ini文件,删除最后一句 skip-grant-tables;
    即可。
    3,mysql 连接


    image.png

    4、命令

            1) DDL(Data Definition Language)数据定义语言
                用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
            2) DML(Data Manipulation Language)数据操作语言
                用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
            3) DQL(Data Query Language)数据查询语言
                用来查询数据库中表的记录(数据)。关键字:select, where 等
            4) DCL(Data Control Language)数据控制语言(了解)
                用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
    
    命令行操作数据库
    
    创建数据库 : create database [if not exists] 数据库名;
    删除数据库 : drop database [if exists] 数据库名;
    查看数据库 : show databases;
    使用数据库 : use 数据库名;
    
    

    设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

    image.png

    dql 语法

    SELECT语法

    SELECT [ALL | DISTINCT]
    {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
    FROM table_name [as table_alias]
      [left | right | inner join table_name2]  -- 联合查询
      [WHERE ...]  -- 指定结果需满足的条件
      [GROUP BY ...]  -- 指定结果按照哪几个字段来分组
      [HAVING]  -- 过滤分组的记录必须满足的次要条件
      [ORDER BY ...]  -- 指定查询记录按一个或多个条件排序
      [LIMIT {[offset,]row_count | row_countOFFSET offset}];
       -- 指定查询的记录从哪条至哪条
    

    第一次看没有看明白,最后才知道,这样是规则,写的时候顺序一定是这样的。
    排列

    语法:order by 子句
                * order by 排序字段1 排序方式1 ,  排序字段2 排序方式2...
    
            * 排序方式:
                * ASC:升序,默认的。
                * DESC:降序
    

    聚合

    聚合函数对一组值执行计算并返回单一的值。除了 COUNT 以外,聚合函数忽略[<u>空值</u>](https://baike.baidu.com/item/%E7%A9%BA%E5%80%BC)。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
    
    聚合函数:将一列数据作为一个整体,进行纵向的计算。       
       1. count:计算个数         
         1.1. 一般选择非空的列:主键         
         1.2. count(*)         
     2. max:计算最大值      
     3. min:计算最小值       
     4. sum:计算和      
     5. avg:计算平均值
    
    

    分组查询
    GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下:
    GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP]
    属性名:是指按照该字段的值进行分组。
    HAVING 条件表达式:用来限制分组后的显示,符合条件表达式的结果将被显示。
    WITH ROLLUP:将会在所有记录的最后加上一条记录。加上的这一条记录是上面所有记录的总和。

    1. 语法:group by 分组字段;
      2. 注意:
      1. 分组之后查询的字段:分组字段、聚合函数
      2. where 和 having 的区别?
      1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
      2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。

    执行顺序 说明

    ROUP BY关键字可以和GROUP_CONCAT()函数一起使用。GROUP_CONCAT()函数会把每个分组中指定的字段值都显示出来。
    
    同时,GROUP BY关键字通常与集合函数一起使用。集合函数包括COUNT()函数、SUM()函数、AVG()函数、MAX()函数和MIN()函数等。
    
    sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;
    其执行顺序为:FROM-WHERE-GROUP BY-HAVING-SELECT-DISTINCT-UNION-ORDER BY
    Mysql执行顺序:开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果
    聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
    
    而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
    

    AS

    -- CONCAT()函数拼接字符串
    SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student;
    
    DISTINCT关键字的使用
    去掉重复内容。
    

    子查询

    其他

    https://www.cnblogs.com/gh110/p/15153660.html

    相关文章

      网友评论

          本文标题:mysql 学习

          本文链接:https://www.haomeiwen.com/subject/spjyxrtx.html