一.MySQL相关概念
数据库:管理数据的仓库
数据库管理系统:管理数据库的软件
关系型数据库:数据库中存储着二维表,并且这些二维表之间有关联
SQL:用来管理关系型数据库的标准化语言
目前主流的数据库:Orecal ,MySQL (当前时间2024.7.17)
二.MySQL的使用
1.MySQL的语句分为:DDL,DML,DQL
1)DDL能够定义和管理数据库结构,是数据定义语言
语法:
创建库 | create database 库名; |
创建表 | create table [if not exits] 表名(字段名 字段类型 ..... )comment '表名备注' |
删除库 | drop database [if exits]库名; |
删除表 | drop table [if exits] 表名; |
修改表 | alter table 表名 add column 字段名 字段类型; |
删除表数据但是保留结构 | truncate table 表名 ; 写在这里是因为truncate table 本质是删除表再创建表来删除数据,过程也会改变数据表结构 |
2)DML对数据库中的数据进行增删改操作,是数据操作语言
语法:
添加数据 | insert into 表名(字段列表) value (字段列表对应的数据们); |
删除数据 | delete from 表名 where 条件语句 |
修改数据 | updata 表名 set 字段名 = '要修改的值' [where 约束条件] where 不写会警告,但不影响执行 |
3)DQL能查询数据库表中的数据,是数据查询语言
分类:查询分为单表查询 和多表查询
单表查询是在一个表中根据需求进行查询
select | 查询的字段列表 |
from | 数据来源的表 |
where | 数据的查询条件筛选 |
group by | 根据什么字段分组 |
having | 分组后的查询条件再筛选 |
order by | 根据什么字段排序 desc 是降序 默认是asc升序 |
limit | 分页 两个参数,第一参数是起始索引从0开始,第二个参数是每页多少数据 |
执行顺序依次是
from -> where -> group by -> having -> select -> order by -> limit
多表查询是通过笛卡尔积的方式与多张表连接查询
笛卡尔积 生成一个新表 字段名数有 两个表的字段名数相乘 通过连接条件筛选出 正确的数据
多表查询分为连接查询和子查询 ,连接查询又有内连接和外连接
内连接就是 通过 from 表1 inner join 表2 on 连接条件 连接 生成一个更大的虚拟表
外连接 分为 左外连接 和 右外连接
左外连接 是 from 表 1 left join 表2 on 连接条件
右外连接 是 from 表1 right join 表2 on 连接条件
外连接与内连接的 区别 :
语法 不同 : 👆
范围不同:内连接是取两个表交集的部分 ,比如 有个部门里面有很多员工 ,员工表里有部门表的外键,就可以通过外键 与 部门表连接,这样就能生成一个更大的虚拟表 ,但是如果有员工刚入公司,没有分配部门 ,那么这个员工就会在员工表中也在交集之外,这个内连接的表中没有他的信息,同理 ,一个部门刚刚成立 也没有员工 ,就会在交集之外
但是如果想要展示所有的员工或者 部门怎么办? 这时候就要考虑 外连接了
外连接在生成的虚拟表中会保留交集和外连接一侧的所有数据, 另外左外 和右外连接 的本质是一样的 就是 表1 表2的位置不同,如果表1是员工表,你想要展示所有的员工,包括没有部门的员工,那么就左连接 ,员工表在左 ,或者右连接 ,员工表在右
子查询就是在查询的SQL语句中再次插入一个新的查询语句(select ... from ...),可以存在在 select 后面的 字段列表里 ,可以在条件语句里参与大小比较
二.事务
事务:事务是一组sql操作的集合,要么都成功,要么都失败,是不可分割的整体
默认是自动事务,每执行一次DML语句都对应一个事务的完成, 开启事务 ->DML语句 -> 提交事务/回滚事务
三.索引