JavaWeb学习——MySQL数据库

目录

1.课程介绍

2.概述

2.1安装配置

2.2数据模型&SQL简介

3.DDL

3.1数据库操作

3.2图形化工具

3.3表结构操作

3.3.1创建

3.3.2数据类型

3.3.3创建案例

3.3.4查询&修改&删除

4.DML

4.1添加数据insert

4.2修改数据update

4.3删除数据delete

5.DQL

5.1基本查询

5.2条件查询

5.3聚合函数

5.4分组查询

5.5排序查询

5.6分页查询

5.7案例

6.多表设计

6.1一对多

6.2一对多外键

6.3一对一&多对多

6.4案例--关系分析

6.5案例--表结构

7.多表查询

7.1概述

7.2内连接

7.3外连接

7.4子查询(标量、列)

7.5子查询(行、表)

7.6案例1

7.7案例2

8.事务

8.1介绍与操作

8.2四大特性

9.索引

9.1介绍

9.2结构

9.3操作语法


1.课程介绍

数据库:DataBase (DB),是存储和管理数据的仓库。
数据库管理系统:DataBase Management System (DBMS),操纵和管理数据库的大型软件。
SQL: Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

数据库产品:

学习路线: 

2.概述

2.1安装配置

官网下载地址: https://dev.mysql.com/downloads/mysql/

安装步骤,参考资料中提供的《MySQL安装文档》
MySQL连接语法:mysql -u用户名 -p密码[ -h数据库服务器IP地址-P端口号]

MySQL企业开发使用方式:我们可以在VMware上安装MySQL,让虚拟机充当服务器,连接上虚拟机上的数据库并操作。

 

2.2数据模型&SQL简介

关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
特点:1.使用表存储数据,格式统一,便于维护

          2.使用SQL语言操作,标准统一,使用方便,可用于复杂查询

SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。
通用语法:
①SQL语句可以单行或多行书写,以分号结尾。

②SQL语句可以使用空格/缩进来增强语句的可读性。

③MySQL数据库的SQL语句不区分大小写。
注释:1.单行注释:-- 注释内容或#注释内容(MySQL特有)         2.多行注释:/*注释内容*/

3.DDL(数据定义语言,定义数据库对象)

3.1数据库操作

 DDL英文全称是Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)。

3.2图形化工具

由于在命令行操作无提示信息,操作繁琐,无历史记录,所以使用图形化工具

3.3表结构操作
3.3.1创建

3.3.2数据类型

3.3.3创建案例

3.3.4查询&修改&删除

4.DML(数据操作语言,增删改数据库表中的数据)

4.1添加数据insert

 

4.2修改数据update

 

4.3删除数据delete

 

 

5.DQL(数据查询语言,查询数据库表中的记录)

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
关键字:SELECT

 

5.1基本查询

 

5.2条件查询

 

5.3聚合函数

 

5.4分组查询

 

5.5排序查询

 

5.6分页查询

 

5.7案例

 

 

6.多表设计

6.1一对多

 

 

6.2一对多外键

多表问题分析

现象:部门数据可以直接删除,然而还有部分员工归属于该部门下,此时就出现了数据的不完整、不一致问题。

问题分析:目前上述的两张表,在数据库层面,并未建立关联,所以是无法保证数据的一致性和完整性的。(使用外键)

 

6.3一对一&多对多

 

 

6.4案例--关系分析与表结构

 

 

 

 

7.多表查询

7.1概述

7.2内连接

 

7.3外连接 

7.4子查询

概述:

  • 介绍:SQL语句中嵌套select语句,称为嵌套查询,又称子查询
  • 形式: select * from t1 where column1 = ( select column1 from t2 ...);
  • 子查询外部的语句可以是insert / update / delete / select的任何一个,最常见的是select

分类:

  • 标量子查询:子查询返回的结果为单个值
  • 列子查询:子查询返回的结果为一列
  • 行子查询:子查询返回的结果为一行
  • 表子查询:子查询返回的结果为多行多列
     

①标量、列子查询

②行、表子查询

 

 

7.5案例

1.查询价格低于10元的菜品的名称、价格及其菜品的分类名称

select d.name, price, c.name
from dish d
         join category c on d.category_id = c.id
where price < 10;


2.查询所有价格在10元(含)到50元(含)之间且状态为"起售"的菜品名称、价格及其分类名称

select d.name, d.price, c.name
from dish d
         left join category c on d.category_id = c.id
where (price between 10 and 50)
  and d.status = 1;

3.查询每个分类下最贵的菜品,展示出分类的名称、最贵的菜品的价格.

select c.name, max(d.price)
from dish d
         join category c on d.category_id = c.id
group by c.name;


4.查询各个分类下菜品状态为"起售",并且该分类下菜品总数量大于等于3的分类名称

select c.name,count(d.id)
from dish d
         join category c on c.id = d.category_id
where d.status = 1
group by c.name
having count(d.id) >= 3;


5.查询出"商务套餐A"中包含了哪些菜品(展示出套餐名称、价格,包含的菜品名称、价格份数)

select s.name, s.price, d.name, d.price, sd.copies
from dish d
         join setmeal_dish sd
         join setmeal s  on d.id = sd.dish_id
    and sd.setmeal_id = s.id
where s.name = '商务套餐A';


6.查询出低于菜品平均价格的菜品信息(展示出菜品名称、菜品价格)

select d.name,d.price from dish d where d.price < (select avg(d.price) from dish d)

 

 

8.事务

8.1介绍与操作

概念

  • 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

注意事项

  • 默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。所以才会导致上面出现数据不一致的效果。

 所以我们需要进行事务控制,把一组操作变成一个事务。

 在一组操作之前需要开启事务,再选中SQL语句执行事务操作,如果没有提交事务,在表中可以看到数据是不会真正删除的,窗口之间是相互隔离的,但是在执行事务窗口中查询是可以看到数据已经发生了变化。只有提交了事务才能真正的进行修改。

如果一个事务的有操作发生了错误,正确操作已经执行错误操作还未执行,导致数据不一致,可以使用rollback回滚事务,使得数据变会原来的样子。

8.2四大特性

四大特性(ACID):

  • 原子性Atomicity:事务是不可分割的最小单元,要么全部成功,要么全部失败
  • 一致性Consistency:事务完成时,必须使所有的数据都保持—致状态
  • 隔离性lsolation:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性Durability:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

9.索引

9.1介绍

概念:索引( index)是帮助数据库高效获取数据的数据结构。

优点:

  • 提高数据查询的效率,降低数据库的lo成本。
  • 通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。

缺点:

  • 索引会占用存储空间。
  • 索引大大提高了查询效率,同时却也降低了insert、update. delete的效率
     
9.2结构

 

9.3操作语法

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ustinian.488

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值