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可以。

浙公网安备 33010602011771号