美文网首页
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