Mysql

130 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

JavaWeb介绍

Web: World Wide Web(www),即全球广域网,也称为万维网。JavaWeb:是用Java技术来解决web互联网领域的技术栈

image.png

数据库基本概念

关系型数据库

关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库

优点

1.都是使用表结构,格式一致,易于维护。

2.使用通用的SQL语言操作,使用方便,可用于复杂查询

3.数据存储在磁盘中,安全。

SQL

英文: Structured Query Language,简称SQL

结构化查询语言,一门操作关系型数据库的编程语言

定义操作所有关系型数据库的统一标准

·对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  3. 注释

单行注释:--注释内容或#注释内容(MySQL特有)

多行注释:/注释/、

SQL分类

DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等

DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改

DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)

DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

数据库的操作

image.png

DDL--操作数据库,表,列等

创建:

image.png 查询:

查询当前数据库下所有表名称 SHOW TABLES;

查询表结构 DESC表名称;

修改:

image.png 删除:

1.删除表 DROP TABLE 表名; 2.删除表时判断表是否存在 DROP TABLE IF EXISTS表名;

DML:对表中的数据进行增删改

添加:

image.png 修改:

image.png 删除:

image.png

DQL()

image.png

基础查询

1.去除重复记录

SELECT DISTINCT 列名 FROM 表名;

2.起别名

SELECT 列名 AS 别名 FROM 表名;

条件查询(WHERE)

SELECT 列名 FROM 表名 WHERE 条件列表;

image.png BETWEEN:在两者之间

image.png null的比较只能使用is 或者 is not

模糊查询

_表示占了一个位置,%表示0个或多个字符

image.png

分组查询(GROUP BY)

聚合函数

image.png

image.png

image.png

排序查询(ORDER BY)

image.png where和having区别: 1.执行时机不一样: where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

2.可判断的条件不一样: where不能对聚合函数进行判断,having可以。

分页查询(LIMIT)

image.png

约束

约束是作用于表中列上的规则,用于限制加入表的数据

约束的存在保证了数据库中数据的正确性、有效性和完整性

约束的分类

image.png 自动增长: auto increment:当列是数字类型并且唯一约束

外键约束

外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

语法

1.添加约束

image.png 创建表时添加外键约束:

image.png

数据库设计

1.软件的研发步骤

需求分析

设计

编码

测试

安装部署

2.数据库设计概念

数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS 为这个业务系统构造出最优的数据存储模型。 建立数据库中的表结构以及表与表之间的关联关系的过程。

3.数据库设计的步骤

1.需求分析(数据是什么?数据具有哪些属性?数据与属性的特点是什么) 2.逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)

3.物理设计(根据数据库自身的特点把逻辑设计转换为物理设计) 4.维护设计(1.对新的需求进行建表;2表优化)

表关系

一对一:

如:用户和用户详情

一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能

实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)

一对多(多对一):

部门和员工

一个部门对应多个员工,一个员工对应一个部门

实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

image.png

image.png 多对多:

商品和订单

一个商品对应多个订单,一个订单包含多个商品

实现方式:在多的一方建立外键,指向一的一方的主键

多表查询

多表查询:从多张表查询数据

√连接查询 ​ 内连接:相当于查询AB交集数据

外连接: ​ 左外连接:相当于查询A表所有数据和交集部分数据

右外连接:相当于查询B表所有数据和交集部分数据 ​ √子查询

内连接

内连接查询语法

image.png 隐式内连接:

image.png 显式内连接:

image.png 与上述结果相同

外连接查询语法

image.png

image.png

子查询(关键)

1.子查询概念: 查询中嵌套查询,称嵌套查询为子查询☆

2.子查询根据查询结果不同,作用不同:

image.png 单行单列

image.png 多行单列

image.png 多行多列

image.png 如果子查询查出来的结果是多行多列的,可以将查询结果当成一个虚拟表,放在from后面,此时就相当于多表查询

事务

事务简介:

1.数据库的事务(Transaction)是一种机制、一个操作序列 包含了一组数据库操作命令

2.事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败

3.事务是一个不可分割的工作逻辑单元

开启事务:START TRANSACTION; 或者BEGIN;

提交事务:COMMIT;

回滚事务:ROLLBACK;

事务四大特征(ACID)

·原子性(Atomicity) :事务是不可分割的最小操作单位, 要么同时成功,要么同时失败 ·一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态 ·隔离性(lsolation) :多个事务之间,操作的可见性 ·持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的