javaweb06-Mysql数据库

Mysql

一、概述

1.1 数据模型

关系型数据库RDBMS,由多张二维表组成的数据库

1.2 SQL

  • DDL:数据定义语言
  • DML:数据操作语言
  • DQL:数据查询语言
  • DCL:数据控制语言,创建用户,控制数据库访问权限

二、sql语句

2.1 DDL

2.1.1 查询:

  • show databases;
  • select database();

2.1.2 创建:

  • create database;

2.1.3 删除:

  • drop database;

2.1.4 约束:

  • 非空约束:not null
  • 唯一约束:unique
  • 主键约束:非空且唯一,primary key,(auto_increment自增)
  • 默认约束:default
  • 外键约束:foreign key

2.1.5 数据类型

  • 数值类型:int、decimal
  • 字符串类型:char(定长字符串)、varchar(变长字符串)
  • 日期时间类型:date、 datetime

2.2 DML

2.2.1 添加数据:insert

insert into table_name (字段名) values (字段值列表)

2.2.2 修改数据:update

update table_name set 字段名 = 字段值 [where 条件]

2.2.3 删除数据:delete

delete from table_name [where 条件]

2.3 DQL

查询数据库中的记录

2.3.1 分组查询

  • 聚合函数:将一列数据作为一个整体,进行纵向计算

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

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

2.3.2 排序查询

order by

asc:升序(默认)

desc:降序

2.3.3 分页查询

limit (起始索引,每页展示记录数)

起始索引 = (页码 - 1)* 每页展示记录数

三、多表设计

3.1 一对多

解决多表之间数据不一致性

外键约束

3.2 一对一

任意一方加入外键,关联另一表中的主键,并且添加unique约束

3.3 多对多

建立第三张表,包含两张表的主键

四、多表查询

4.1 概述

从多张表中查询数据:笛卡尔积

分类:

  • 连接查询
    • 内连接
    • 外连接
  • 子查询(嵌套查询)

4.2 内连接

隐式内连接:逗号分隔,where条件

显示内连接:join……on条件

起别名

弊:无关联的数据查询不到

4.3 外连接

左外连接:显示左表的全部数据

右外连接:显示右表的全部数据

4.4 子查询

4.4.1 标量子查询

子查询返回的结果是单个的值,单行单列。

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

4.4.2 列子查询

子查询返回的是一列数据

常用操作符:in,not in

4.4.3 行子查询

合并多个条件

4.4.4 表子查询

将子查询返回的结果,作为一张临时表,进行连接查询等操作

五、事务

5.1 概述

事务是一组操作的集合,这些操作要么同时成功,要么同时失败。

  • 开启事务:start transaction;
  • 提交事务:commit;
  • 回滚事务:rollback;

5.2 四大特性

  • 原子性:
  • 一致性:
  • 隔离性:
  • 持久性:

六、索引

6.1 介绍

数据结构,提高执行效率

  • 优:提高查询效率、排序效率
  • 缺:降低增删改的效率

6.2 结构

B+Tree结构

多路平衡搜索树,降低树的深度

6.3 语法

  • 创建:create index 索引名 on 表名;
  • 查询:show index from 表名;
  • 删除:drop index 索引名 on 表名;

注:

  1. 添加主键时会自动创建主键索引
  2. 添加unique约束会自动创建唯一索引
posted @ 2024-03-05 10:46  forest-pan  阅读(5)  评论(0编辑  收藏  举报