华清远见重庆中心—后端基础阶段个人总结(MySQL数据库)

文章介绍了数据库的基本概念,包括数据库(DB)、数据库管理系统(DBMS)和SQL语言,强调了数据完整性和数据库设计规范,如范式。还讨论了JDBC在Java中的作用以及如何防止SQL注入。此外,文章详细阐述了SQL操作(CRUD)和数据库设计,如实体关系模型,以及事务管理和不同隔离级别的概念及其重要性。
摘要由CSDN通过智能技术生成

数据库

 

DataBase ,称为数据库,简称DB

运行在操作系统上,按照一定的数据结构,保存数据的仓库。是一个电子化的文件柜。

数据永久保存在硬盘中。

数据库管理系统

DataBase Manager System,简称DBMS

通常所说的数据库,其实是指数据库管理系统,如MySQL、SQLServer、Oracle等。

是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。

SQL

Structrue d Query Language 结构化查询语言 用于操作关系型数据库的一门语言。

可用来创建、维护数据库和数据。

操作数据库

操作数据表

创建数据表

create table 表名(
字段名1 数据类型 [字段特征],
字段名2 数据类型 [字段特征],
...
字段名n 数据类型 [字段特征]
)

修改数据表

 

 添加约束

 建表的同时添加约束

-- 创建游戏数据库gamedb
create database gamedb;
-- 切换到gamedb
use gamedb;
-- 创建游戏人物表hero
create table hero(
-- 编号id主键 非空 自增
id int not null primary key auto_increment comment '人物编号',
-- 姓名 唯一 非空
name varchar(20) unique not null,
-- 性别 默认男 非空
sex char(1) not null default '男',
-- 价格 非空
price int not null ,
-- 发布时间 可以为空
make_time date
)
-- 添加"定位"position字段
alter table hero add column position varchar(20)
-- 创建战斗表battle
create table battle(
-- id,主键字段
id int not null primary key auto_increment,
-- 出战人物编号hero_id,来自于hero表中的id字段 非空
hero_id int not null,
-- 昵称 可以为空
nick_name varchar(20),
-- 分路 不能为空
way varchar(20) not null,
-- 设置外键
foreign key(hero_id) REFERENCES hero (id)
)

删除数据表

 数据完整性

数据完整性是指数据精确可靠。不能保存无意义或无效的数据。

如不合理的年龄性别、全为空的记录、重复记录等。

为了保证保存在数据库中的数据是完整数据,就要在设计数据表的时候添加一些约束或字段特征来保证 数据的完整性

MySQL中常见的数据类型

 约束

操作数据

数据的操作,是指数据的create,修改updeta,查询read和删除delete 简称CURD

数据添加insert

添加数据的时候都是整行添加的。不能只给一个字段添加数据

如果自给某个字段添加数据实际效果时修改。

给所有字段赋值

给指定符字段赋值

 

批量添加

可以用一个insert into语句添加多条记录

 

 

数据删除delete

删除数据是删除一条或者多条记录

删除所有 

 

delete from 表名;
-- 或
truncate table 表名;

delete会保留自增列删除前的值,删除后再添加时,自动从删除前的值开始自增

truncate会重置自增列的值。删除所有数据时效率更高

如果要删除主从关系且设置了外键的表中的数据。从表中如果有数据,不能直接删除主表中相关联 的数据,先删除从表数据,再删除主表数据。

条件删除

数据查询select

查询所有字段

select * from 表名

查询指定字段

select 字段1,字段2...from 表名;

字段重命名

select 字段1 as '自定义名称',字段1 '自定义名称'... from 表名;

 

 排序

先按照book—price升序排序,如果排序过程中有相同的则把这些相同的按照publish—date按降序排序

排序默认是升序

排序规则不写或者写asc表示升序

排序跪着为desc为降序

排序是如果有条件,阿皮勋写在条件语句之后

多字段排序是,在order by之后写多个字段及排序规则,用逗号隔开,按字段顺序排序

分组 

按指定的字段进行分组,会将该字段值相同的记录归纳到同一组中。

分组通常配合统计函数使用。

如果统计函数作为条件,不能使用where, 而要使用having子句,将整个having子句放在分组之后。

group—concat()函数

 

实际业务对应的SQL操作

登录

登录通常是使用用户名和密码进行查询用户表,如果没有查询到数据,说明用户不存在或者输入有误

如果查询到数据,返回查询到的内容

注册

注册通常是是用户名和密码添加一条记录

注册时一般还会验证要注册的用户是否存在

充值

充值、消费都是将数据进行更新

删除

逻辑删除 不删除数据,只是不显示数据 

 

 JDBC

Java DataBase Connectivity Java数据库连接

用于Java程序连接不同的数据库。

实际是Java中定义的相关数据库连接时所需的接口的集合,不同的数据库对其进行了实现。

核心接口

●Connection: 用于设置连接的数据库的地址、账号、密码

●Preparedstatement: 用于预处理、执行SQL语句

●ResultSet: 用于保存查询后的数据 以上接口都来自于ava.sgl包中

SQL注入

构造SQL语句时,如果使用字符串拼接的方式构造可变字符串,可能会造成SQL注入的风险,导致执行 的不是预期的SQL语句

 

 

 数据库设计

实体关系模型

实体Entity: - 张表就是一个实体。

关系Relationship:实体与实体之间的关系。

实体关系模型也称为ER模型。

用图形表示ER模型时,这个图称为ER图。 用矩形表示实体,用椭圆形表示实体的属性,用菱形表示实体之间的关系,用直线连接各个图形。

实体之间的关系

一对一

实体A与实体B之间一对一

ER图

 

 一对多

一对多:一个实体A对应多个实体B,一个实体B不能对用多个实体A

如一个人有多辆车

多对一:多个实体对应一个实体A,多个实体A不能让对应一个实体B

 

 多对多

一个实体A可以对应多个实体B,一个实体B也可以对应多个实体A

如一个学生可以学习多门课程,一门课程可以对应多个学习它 的学生

 总结

一对一:创建各自的实体表,在任意一张表中添加另一表的主键字段,将其设置为唯一 一对多、多对一;先创建主表(一),在创建从表(多),在从表中添加主表的主键字段,外键可选 多对多:创建各自的实体表,再创建第三张表:"关系表",在关系表中添加两个实体表中的主键字段,外键 可选

 

数据库设计规范

数据库的设计规范简称为范式

范式分为第一范式1NF,第二范式2NF,第三范式3NF、bc范式BCNF、第四范式4NF和第五范式5NF共6 种

这六种范式的级别越高(第一范式到第五范式), 表示数据库设计的结构越规范。每一个高等级的范式都 包含 了低等级的范式。

通常设计数据库时,只需满足3NE即可。

 

. 第一范式1NF

数据表中的每一项都是不可分割的原子项

关系型数据库起码要满足1NE,才能创建表。关系型数据库起码要满足1NE,才能创建表。

上表中的联系方式列,可以再分为手机和QQ两列,不满足原子性,不满足1NF。根据1NF, 修改后

 

第二范式2NF

在满足第一范式的基础上,清楚部分依赖

名词解释

主键、主码、主属性

用于唯- -区分每条记录的一个字段,称为主键字段,如学号、身份证号等。

通常选择能唯一确定且几乎不会更改的字段作为主键。如果没有,自定义一个d列作为主键。

联合主键

如果一个字段不能唯一区分每条记录

完全依赖

部分依赖

视图View

视图可以当做数据库中的一个临时表,保存一些较为复杂的查询后的结果。 之后可以直接通过该视图查询数据,不需要再次编写复杂的sgl语句。 视图同时可以隐藏一些查询细节, 定制查询数据。

创建视图

 

 MySQL编程

在定义的存储过程中,可以定义变量,使用流程控制语句等。

 

 

 MySQL核心内容

SQL语句

建库,建表

修改表结构

数据完整性

单表的增删改查CURD

增加: insert into表 values(值1,值2...)

修改:updata 表 set 字段1=值,字段2 = 值...where 条件

删除: delete from 表 where 条件

查询 :select *、字段名 from 表

常用函数

统计函数

数学、时间、字符串

多表查询、嵌套查询

笛卡尔积

内连接

左右连接

数据库设计

实体关系模型、ER 图

实体间的关系

一对一

一对多,多对一

多对多

数据库的三大范式

1NF;字段不可再分

2NF:消除部分依赖

3NF:消除传递依赖

JDBC

连接mysql所需的jar文件

普通的java项目需要手动导入jar文件

maven项目需要使用依赖自动导入jar文件

MySQL连接字符串

 

事务

事务的概念和特性

A原子性

C一致性

I 隔离性

D持久性

事务并发时会出现的问题

脏读

不可重复度

幻读

事务的隔离性

read uncommitted未提交读会出现脏读、 不可重复读和幻读问题

read committed已提交读(oracle默认)不会出现脏读,会出现不可重复读和幻读问题

repeatable read可重复度(mysg|默认)不会出现脏读和不可重复读,会出现幻读问题

serializable可序列化不会出现脏读、可重复读和幻读问题,效率最

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值