MySQL(1)

数据库

  • 基础篇

    • MYSQL概述

    • SQL

    • 函数

    • 约束

    • 多表查询

    • 事务

  • 进阶篇

    • 存储索引

    • 索引

    • SQL优化

    • 试图/存储过程/触发器

    • InnoDB核心

    • MySQL管理

  • 运维篇

    • 日志

    • 主从复制

    • 分库本表

    • 读写分离

基础篇

MySQL

  • 数据库概念:存储数据的仓库,数据是有组织的进行存储(DataBase,DB)

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

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

主流的关系型数据库管理系统

  • Oracle

  • MySQL

  • SQL Server

  • PostgreSQL

注:SQL来统一操作这些数据库管理系统

注:SQL是操作关系型数据库的编程语言,是统一标准

启动和停止

在命令行里输入

net start mysql80

net stop mysql80

注:mysql默认开机自启

客户端连接

方式一:在开始菜单里找到mysql,然后登录

方式二:mysql -u root -p

注:在任意环境中都想使用该指令,就需要配置环境

数据模型

  • 关系型数据库(RDBMS)

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

    • 特点:使用表存储数据,格式统一,便于维护

    • 使用SQL语言操作,标准统一,使用方便

SQL

  • SQL通用语法

  • SQL分类

  • DDL

  • DML

  • DQL

  • DCL

SQL通用语句

  1. SQL语句可以单行或多行书写,以分号结束

  2. SQL语句可以使用空格/缩进 来增强语句的可读性

  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

  4. 单行注释 -- 或 #

  5. 多行注释 /**/

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 如果不存在

    注:这里的字符集,推荐使用utf8mb4

  • 删除 drop database[if exists] 数据库名;

    • 使用 use 数据库名;
  • 查询当前库的所有表 show tables;

  • 查询表结构 desc 表名;

  • 查询指定表的建表语句 show create table 表名;

  • 创建表

    create table 表名(

    字段1 字段1类型[comment 字段1注释],

    字段2 字段2类型[comment 字段2注释],

    字段3 字段3类型[comment 字段3注释]

    )[commment 表注释];

注:在sql中字符串是varchar(size)

sql 复制代码
    create table user(
        id int comment'编号',
        mame varchar(10) comment '姓名',
        age int comment '年龄',
        gender varchar(1) comment '性别'
    )comment '用户表';

DDL 文件中的数据类型

  • 数值类型

  • 字符串类型

    • varchar性能低

    • char 性能好

  • 日期

    • date -----> YYYY-MM-DD

    • time ------> HH : MM :SS

    • datetime -> YYYY-MM-DD HH:MM:SS

DDL-表操作-修改

  • 添加字段 alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

  • 修改字段

    • 修改数据类型

      • alter table 表名 modify 字段名 新数据类型
    • 修改字段名和字段类型

      • alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束]
  • 删除字段

    • alter table 表面 drop 字段名;
  • 修改表名

    • alter table 表名 rename to 新表名;
  • 删除表

    • drop table[if exists] 表名;

    • truncate table 表名;

      • 删除表中的数据,表的格式会被保存

MySQL图形化工具

DataGrip ---> 里面可以操作SQL语句

DML

  • 添加数据(insert)

  • 修改数据(update)

  • 删除数据(delete)

  • 给指定字段添加数据

    • insert into 表名(字段1,字段2)values(值1,值2);
  • 给全部字段添加数据

    • insert into 表名 values(值1,值2);
  • 批量添加数据

    • insert into 表名(字段名1,字段名2)values(值1,值2),(值1,值2),(值1,值2);

    • insert into 表名(值1,值2),(值1,值2),(值1,值2);

注:

  1. 插入数据时,指定的字段顺序需要与值的顺序是一一对应的

  2. 字符串和日期型数据应该包含在引号中

  3. 插入的数据大小,应该在字段的规定范围内

修改数据

update 表名 set 字段1 = 值1 ,字段2 = 值2,[where 条件];

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

update employee set name 'itheima' where id = 1;

删除语句

delete from 表名 [where 条件]

注:

  1. delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

  2. delete 语句不能删除某一个字段的值(可以使用update)

DQL

涉及关键字,select

  • 基本查询

  • 条件查询

  • 聚合函数

  • 分组查询

  • 排序查询

  • 分页查询

基本查询

  • 查询多个字段

    • select 字段1,字段2 frrom 表名;

    • select * from 表名;

  • 设置别名

    • select 字段1[as 别名],字段2[别名2] from 表名
  • 去除重复记录

    • selsect distinct 字段列表 from 表名;

条件查询

语法:select 字段列表 from 表名 where 条件列表;

注:in(...) 只要满足其一

注:like '____' 查询为两个字符的信息

注:like'%x'; -----> 只要保证最后一个字符是x就行

聚合函数

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

常见聚合函数

  • count 统计数量

  • max 最大值

  • min 最小值

  • avg 平均值

  • sum 求和

语法:

select 聚合函数(字段列表) from 表名 where 条件列表;

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

分组查询

语法:

select 字段列表 from 表名[where 条件] group by 分组字段名[having 分组后过滤条件];

where 和 having 区别

  • 执行时机不同

    • where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
  • 判断条件不同

    • 判断条件不同:where不能对聚合函数进行判断,而having可以
相关推荐
CPU NULL1 小时前
新版IDEA创建数据库表
java·数据库·spring boot·sql·学习·mysql·intellij-idea
J不A秃V头A2 小时前
MySQL 中开启二进制日志(Binlog)
数据库·mysql
V+zmm101345 小时前
食堂订餐小程序ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
lingllllove5 小时前
解决MySQL删除/var/lib/mysql下的所有文件后无法启动的问题
数据库·mysql·adb
Zda天天爱打卡5 小时前
【趣学SQL】第四章:高级 SQL 功能 4.1 触发器与存储过程——数据库的“自动机器人“和“万能工具箱“
数据库·sql·oracle
小Tomkk8 小时前
oracle 分区表介绍
数据库·oracle
yaoxin5211238 小时前
第七章 C - D 开头的术语
数据库·oracle
跳跳的向阳花8 小时前
06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等
数据库·redis·缓存
ChinaRainbowSea8 小时前
三. Redis 基本指令(Redis 快速入门-03)
java·数据库·redis·缓存·bootstrap·nosql
我是唐青枫8 小时前
Mac 上如何同时运行多个MySQL版本?
mysql·macos·adb