Mysql

MYSQL

Mysql是一种用于存储和管理数据的仓库,我们在项目开发中,需要将数据存储到数据库中,然后 通过前后端交互的形式来给前端页面来渲染后端数据,页面呈现的数据都是来自于数据库

数据库分为关系型数据库和非关系型数据库,我们今天来学校关系数据库中的常用的数据库Mysql。

SQL简介

SQL是结构化查询语言,是一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准

SQL分为四大类

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

在数据库中操作表无非

增 删 改 查

数据库操作

查询数据库

  • 查询所有数据库
show databases;

创建数据库

  • 创建数据库

    create database [if not exists] 数据库名 [default charset utf8mb4];
    

    创建数据库时,可以不指定字符集。因为在Mysql8版本之后,默认的字符集就是utf8mb4.

使用数据库

如果想要使用数据库,需要进入数据库下

use 数据库名

删除数据库

删库跑路(不是

drop database [if exists] 数据库名;

如果删除一个不存在的数据库,会报错

此时可以加入 if exists,如果数据库存在,则删库,如果不存在,则不执行删库跑路操作

数据库图形化工具

我们在进行项目开发时,原生数据库操作繁琐,影响开发效率(摸鱼),在项目开发中摸鱼,一般我们要使用现成的管理工具来操作数据库。

目前主流的Mysql图形化界面工具我推荐

Navicat 图形化操作,操作简单

IDEA 已经集成了数据库图形化功能,可以在后端开发时进行查看

创建表

上案例

create table tb_user (
    id int comment 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '用户表';

创建表的语法为

create table  表名(
	字段1  字段1类型 [约束]  [comment  字段1注释 ],
	字段2  字段2类型 [约束]  [comment  字段2注释 ],
	......
	字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

约束

约束实际上就是给表上的字段来进行规则上的约束,限制存储在表中的数据

其作用是为了保证数据库当前数据的正确性,有效性和完整性

约束 描述 关键字
非空约束 限制该字段值不能为null not null
唯一约束 保证字段的所有数据都是唯一、不重复的 unique
主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key

表设计

  • 基于需求文档和页面原则,确定原型字段(类型,长度限制,约束)
  • 再增加表设计所需要的业务基础字段(id,create_time,update_time)

create_time:记录的是当前这条数据插入的时间

update_time:记录当前这条数据最后更新的时间

查询表

注意在开发中,我们一般会在图形化界面进行操作

  • 查询当前数据库中所有表
show tables;
  • 查看指定表结构
desc 表名;
  • 查询指定表的建表语句
show create table 表名;

修改表结构

  • 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]
  • 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度)
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束]

删除

  • 删除表语法
drop table [if exists] 表名;

if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作

表操作

增加(insert)

insert语法:

  • 向指定字段添加数据
insert into 表名 (字段名1,字段名2....) valuse (值1,值2...)
  • 全部字段添加数据

    insert into 表名 values (值1, 值2, ...);
    
  • 批量添加数据(指定字段)

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

    insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
    

删除(delete)

delete语法

delete from 表名 [where 条件];

where条件语句可以有也可以没有,如果没有条件,将会删除整个表的所有数据

修改(update)

update语法

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

当修改语句没有where语句时,会修改整张表的所有数据

查询(select)

基本查询

  • 查询多个字段

    select 字段1, 字段2, 字段3 from  表名;
    
  • 查询所有字段(通配符)

    select *  from  表名;
    
  • 设置别名

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

    select distinct 字段列表 from  表名;
    

条件查询

select  字段列表  from   表名   where   条件列表 ; -- 条件列表:意味着可以有多个条件

构造条件的运算符分为两类

  • 比较运算符
  • 逻辑运算符
比较运算符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或 != 不等于
between ... and ... 在某个范围之内(含最小、最大值)
in(...) 在in之后的列表中的值,多选一
like 占位符 模糊匹配(_匹配单个字符, %匹配任意个字符)
is null 是null

聚合函数

select 聚合函数(字段列表) from 表名

常用聚合函数:

函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

分组查询

分组:按照某一列或者某几列,把相同的数据进行合并输出

语法:

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

where与having区别(面试题)

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。
posted @ 2023-12-03 19:35  奕帆卷卷  阅读(22)  评论(0)    收藏  举报