MySQl数据库设计。

MySQl数据库设计

去重:
GROUP BY name;

查询db_source 的值大于2的

select * from dept group by db_source HAVING count(db_source)>2
为什么需要设计数据库?

节省数据的存储空间

能够保存数据的完整性

方便进行数据库应用系统的开发

ER图?

实体之间的关系、属性、

第一范式

第一范式的目标是确保每列的原子性

第二范式

要求每个表只能做一件事

第三范式

如果 关系满足2NF,要求表中的各列和主键有直接关系,不能间接相关

建表要满足范式。

第二章初识mysql
MySQL的优势?

1.运行速度快
2.使用成本低
3.可移植性强
4.适用用户广

mysql的运行机制

[

mysql的配置

使用配置向导配置

默认字符集utf8

将bin目录写入环境变量

root密码设置

utf8:一种unicode编码,解决国际上字符不统一的多字节编码,通用性强

mysql的安装目录

my.ini:记录mysql配置信息,可修改配置内容,如端口号,字符集等

命令行连接和关闭mysql

net start mysql

net stop mysql

语法

mysql –h服务器主机地址 –u 用户名 –p密码

本机连接:mysql -u root -p

数据库的相关语法
创建数据库

create database 数据库名;

查看数据库

show databases;

使用数据库

use 数据库名;

删除数据库

drop database 数据库名;

结构化查询语言
mysql数据类型-数值类型

UNSIGNED属性标识为无符号数
ZEROFILL属性宽度(位数)不足以0填充,默认为无符号数

mysql数据类型----字符串、日期类型
表的相关语法
查看表是否存在

show tables;

查看表描述

desc 表名;

删除表

DROP TABLE [IF EXISTS] 表名;

在删除表之前,先使用IF EXISTS语句验证表是否存在 (IF EXISTS)如果存在的意思

mysql的存储引擎
存储引擎的类型

MyISAM、InnoDB 、Memory、CSV等9种

MyISAM与InnoDB类型主要区别
适用场合

使用MyISAM: 不需事务,空间小,以查询访问为主
使用InnoDB: 多删除、更新操作,安全性高,事务处理及并发控制

查看当前默认存储引擎

SHOW VARIABLES LIKE ‘storage_engine%’;

修改存储引擎修改my.ini配置文件

default-storage-engine= InnoDB

设置表的存储引擎

CREATE TABLE 表名(
#省略代码
)ENGINE=存储引擎;

mysql系统帮助

help 查询内容;

总结:
第三章高级查询一
修改表
修改表名

Alter table 旧表名 rename [to] 新表名;

添加字段

Alter table 表名 add 字段名 数据类型 属性;

修改字段

alter table 表名 change 原字段名 新字段名 数据类型 属性;

删除字段

alter table 表名 drop 字段名

添加主键

alter table 表名 add constraint 主键名 primary key 表名(主键字段)

添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)
REFERENCES 关联表名(关联字段);

DML语句-----
插入多条数据记录

insert into 表名(字段名列表) values (值列表1,值列表2,…)

将查询结果插入新表

create table 新表(

​ select * from 原表;

更新数据记录

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

删除数据记录

delete from 表名 [where条件];支持事物回滚

truncate table 表名;执行速度比delete快

DQL语句

Limit[索引,行数]

常用函数-----聚合函数
常用函数----字符串函数
常用函数——时间日期函数
常用函数——数学函数
模糊查询

select * from 表名 where 字段名 CONCAT (‘%’,‘查询关键字’,‘%’)

包含查询

select * from 表名 where 字段名 in (查询条件1,条件2,…)

什么是子查询?

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询

子查询和表连接

子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
表连接更适合于查看多表的数据

子查询语法

select * from 表名 where exists(子查询);

第五章 事务、视图、索引、备份和恢复
1、事务的特性
事务必须具备以下四个属性,简称ACID属性
  • 原子性(Atomicity)

    事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行

  • 一致性(Consistency)

    当事务完成时,数据必须处于一致状态

  • 隔离性(lsolation)

    并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务

  • 持久性(Durability)

    事务完成后,它对数据库的修改被永久保持

2、如何创建事务
MySql中支持事务的存储引擎有innoDB和BDB
开始事务

begin或start transaction;

提交事务

commit;

回滚(撤销)事务

rollback;

3、自动关闭和开启事务
默认情况下,每条单独的SQL语句视为一个事务。
关闭默认提交状态后,可手动开启、关闭事务
关闭/开启自动提交状态

set autocommit=0|1;

值为0:关闭自动提交

值为1:开启自动提交

4、视图的用图
  • 筛选表中的行
  • 防止未经许可的用户访问敏感数据
  • 降低数据库的复杂程度
  • 将多个物理数据库抽象为一个逻辑数据库
使用sql语句创建视图

create view view_name as <select 语句>

使用sql语句删除视图

drop view if exists view_name

使用sql语句查看视图

select 字段1,字段2,… from view_name

5、如何创建/删除索引
创建索引

唯一索引、全文索引或空间索引,可选

create [unique|fulltext|spatial] index index_name on table_name (column_name[length]…)

删除索引

删除表时,该表的所有索引同时会被删除

drop index index_name on table_name

查看索引

show index from table_name;

使用mysqldump命令备份数据库

mysqldump命令——MySQL一个常用的备份工具

将CREATE和INSERT INTO语句保存到文本文件
属于DOS命令使用mysqldump命令备份数据库

常用参数
6、mysql8的数据库驱动
7、mybatis-plus

2、需要dao接口继承baseMapper,添加注解Mapper或者Repository

3、在主启动类加上@MapperScan(“com.zhang”)注解

配置日志
主键id注解
自动填充时间
方式一:数据库

1.在表中新增字段create_time,update_time

方式二:代码级别

1.在实体类上时间属性添加@TableField(fill=fieldFill.insert)和@TableField(fill=fieldFill.update)

测试一下MP的乐观锁插件

1、给数据库添加version字段,默认值为1

2、实体类对应相同字段

3、添加@version注解

4、写个配置类

5.多线程下一定要加锁

分页插件:在狂神mybatis-plus中第10节有更简单的配置

分页插件:优先推荐:https://www.bilibili.com/video/BV1y7411y7am?p=14

@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}
逻辑删除

1.在表中增加逻辑删除字段deldted

2.在实体类写对应的属性和增加@TableLogic逻辑注解

3.配置

4.执行操作:走的是更新操作,而不是删除

5.记录依旧在数据局,就是逻辑删除字段变了

6.查询的时候会自动过滤这句数据操作

性能分析插件

作用:性能分析拦截器,用于输出每条sql语句及其执行时间

条件构造器:wrapper
代码自动生成器:

1.狂神说:mybatis-plus最后一节

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值