美文网首页
MySql总结

MySql总结

作者: paterL | 来源:发表于2022-07-31 15:13 被阅读0次

    MySQL

    MySQL基础篇

    数据库相关概念

    数据库:存储数据的仓库,数据是有组织的进行存储,简称(DataBase)

    数据库管理系统:操纵和管理数据库的大型软件,Database Management System(DBMS)

    SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准,Struccctured Query Language(SQL)

    MySQL数据库的准备

    MySQL的安装

    启动和停止

    启动:services.msc进入window服务

    输入指令:net start mysql80

    停止:net stop mysql80

    客户端连接

    方式一:MySQl提供的客户端命令行工具

    方式二:系统自带 的命令行工具执行指令

    mysql -u root -p

    MySQL数据模型

    关系型数据库(RDBMS)

    概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库

    [图片上传失败...(image-879860-1659251515757)]

    SQL

    SQL通用语法

    SQL分类

    分类 全称 说明
    DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库、表、字段)
    DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
    DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
    DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

    DDL

    查询

    查询所有的数据库

    SHOW DATABASES;
    

    查询当前数据库

    SELECT DATABASE();
    
    创建
    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集][COLLATE 排序规则];
    

    IF NOT EXISTS:如果有则不创建,没有就创建。

    DEFAULT CHARSET字符集:可指定,例如utf-8

    删除
    DROP DATABASE[IF EXISTS]数据库名;
    

    IF EXISTS:如果存在则删除,可不写

    使用
    USE 数据库名;
    
    DDL-表操作-查询

    查询当前数据库所有的表

    SHOW TABLES;
    

    查询表结构

    DESC表名;
    

    查询指定表的建表语句

    SHOW CREATE TABLE;
    
    DDL-表操作-创建
    CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],
    字段4 字段4类型[COMMENT 字段4注释],
    字段5 字段5类型[COMMENT 字段5注释],
    ......
    字段n 字段n类型[COMMENT 字段n注释]
    )[COMMMENT 表注释];
    
    DDL-表操作-数据类型
    数值类型

    double(4,1)

    第一个参数:表示数据的整体长度

    第二个参数:有几位小数

    字符串类型

    char:性能好

    varchar:性能比char差一些

    日期时间类型
    DDL-表操作-修改
    在表结构中添加字段
    ALTER TABLEB表名ADD 字段名 类型(长度)[COMMENT注释][约束];
    
    修改数据类型
    ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
    
    修改字段名和字段类型
    ALTER TABLE 表名 CHANGE 旧字段名  新字段名 类型(长度)[COMMENT 注释][约束];
    
    删除字段
    ALTER TABLE 表名 DROP 字段名;
    
    修改表名
    ALTER TABLE 表名 RENAME TO 新表名;
    
    DDL-表操作删除

    删除表

    DROP TABLE [IF EXISTS] 表名;
    

    删除指定表,并重新创建该表

    TRUNCATE TABLE 表名;
    

    在删除表时,表中的数据也会被删除。

    MySQL图形化界面工具

    DML

    DML-添加数据

    1.给指定字段添加数据

    INSERT INTO 表名(字段名1,字段名2,....) VALUES(值1,值2,....);
    

    2.给全部字段添加数据

    INSERT INTO 表名 VALUES (值1,值2,....);
    

    3.批量添加数据

    INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
    
    INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
    
    DML-修改数据
    UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,....[WHERE 条件];
    

    ==修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。==

    DML-删除数据
    DELETE FROM 表名 [WHERE 条件];
    

    DQL(数据查询语言)

    基本查询

    1.查询多个字段

    SELECT 字段1,字段2,...FROM 表名;
    
    SELECT * FROM 表名;
    

    ==尽量不要使用*去查询全部字段==

    2.设置别名

    SELECT 字段1[AS 别名1],字段2[AS 别名2]...FROM 表名;
    

    作用:

    原本的==workaddress==变成了==工作地址==

    起别名as可省略。

    3.去除重复记录

    SELECT DISTINCT 字段列表 FROM 表名;
    
    条件查询
    SELECT 字段列表 FROM 表名 WHERE 条件列表;
    
    聚合函数
    介绍

    将一列数据作为一个整体,进行纵向计算。

    常见聚合函数
    函数 功能
    count 统计数量
    max 最大值
    min 最小值
    avg 平均值
    sum 求和
    语法
    SELECT 聚合函数(字段列表) FROM 表名;
    

    ==所有的null值不参与聚合函数运算==

    分组查询
    SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
    

    where与having区别

    执行时机不同:where是分组之前进行过滤,不满足分组条件,不参与分组;而having是分组之后对结果进行过滤。

    判断条件不同:where不能对聚合函数进行判断,而having可以。

    执行顺序:where > 聚合函数 > having

    分组之后:查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

    排序查询
    SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
    

    排序方式

    ASC:升序(默认值)

    DESC:降序

    ==如果是多字段排序,当第一个字段相同时,才会根据第二个字段进行排序==

    分页查询
    SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
    

    注意:

    1.起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。

    2.分页查询是数据库的方言,不同的数据库有不同的实现

    3.如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10;

    DQL的执行顺序

    DCL

    DCL:用户管理数据库、用户、控制数据库的访问、权限。

    查询用户
    USE mysql;
    SELECT * FROM user;
    
    创建用户
    CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    
    修改用户密码
    ALTER USER '用户名'@'主机名' IDENTIFIDE WITH mysql_native_password BY '新密码'; 
    

    删除用户

    DROP USER '用户名'@'主机名';
    
    DCL-权限控制
    权限 说明
    ALL、ALL PRIVILEGES 所有权限
    SELECT 查询数据
    INSERT 插入数据
    UPDATE 修改数据
    DELETE 删除数据
    ALTER 修改表
    DROP 删除数据库/表/视图
    CREATE 创建数据库/表
    查询权限
    SHOW GRANTS FOR '用户名'@'主机名';
    

    授予权限

    GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
    
    撤销权限
    REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
    

    ==多个权限之间,使用逗号分隔==

    ==授权时,数据库名和表名可以使用*进行通配,代表所有。==

    函数

    函数:是指一段可以直接被另一段程序调用的程序或代码。

    字符串函数
    substring()
    

    ==空格也算一个字符==

    数值函数
    日期函数
    流程控制函数

    约束

    约束是作用于表中字段上的规则,用于限制存储在表中的数据

    目的:保证数据库中数据的正确、有效性和完整性

    ==约束是作用于表中字段上的,可以在建表/修改表的时候添加约束。==

    多表查询

    指从多张表中进行查询数据

    笛卡尔积

    笛卡尔积:指在数学中,两个集合A集合和B集合的所有组合情况(在多表查询时,需要消除无效的笛卡尔积)。

    ==清除笛卡尔积的实质就是找到他们之间的连接条件==

    多表查询的分类

    连接查询
    内连接:相当于查询A,B交集部分数据。

    隐式内连接

    显式内连接

    外连接:

    左外连接:查询左表所有数据,以及两张表交集部分数据

    ==相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据==

    右外连接:查询右表所有数据,以及两张表交集部分数据

    自连接:当前表与自身的连接查询,自连接必须使用表别名

    ==自连接查询,可以是内连接查询,也可以是外连接查询。==

    联合查询

    对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

    SELECT 字段列表 FROM 表A ...
    UNION[ALL]
    SELECT 字段列表 FROM 表B ...
    

    ==对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。==

    ==union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。==

    子查询

    SQL语句中嵌套SELECT语句,成为子查询。

    根据查询结果不同,分为:

    1.标量子查询(子查询结果为单个值)

    子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式

    常用的操作符:= <> > >= < <=

    2.列子查询(子查询结果为一列)

    常用操作符:IN, NOT IN,ANY,SOME,ALL

    3.行子查询(子查询结果为一行)

    常用操作符:=、<>、IN、NOT IN

    4.表子查询(子查询结果为多行多列)

    常用操作符:IN

    事务

    事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

    事务操作

    查看/设置事务提交方式

    SELECT @@autocommit;
    SET @@autocommit=0;
    

    提交事务

    COMMIT;
    

    回滚事务

    ROLLBACK
    

    开启事务

    START TRANSACTION 或 BEGIN
    

    提交事务

    COMMIT;
    

    回滚事务

    ROLLBACK
    

    事务的四大特性

    原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

    一致性:事务完成时,必须使所有的数据都保持一致状态。

    隔离性:数据库系统提供的隔离机制,保证事务在不受外部并法操作影响的独立环境下运行。

    持久性:事务一旦提交或回滚,他对数据库中的数据的改变就是永久的。

    并发事务问题

    事务的隔离级别

    ==从上往下隔离级别越来越高==

    相关文章

      网友评论

          本文标题:MySql总结

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