day03-mysql

01_数据库概述(了解)

1.1_引入

问题 :为什么要使用数据库不用 XML 或者文件呢?
举个例子: 有100W 条数据,我们可以将他们保存在一个 txt 或者 xml 文档中.但如果想从这些数据中找到某一条数据,只能通过线性搜索,从头到尾去找,效率很低.那我们能不能使用一种快捷高效的方式来组织这些数据,提高查询效率呢? 使用 数据库,就能大大的提高数据的操作效率.

1.2_相关概述

1.2.1_数据库(DataBase:DB)
数据库是按照数据结构来组织、存储和管理数据的仓库。 > 存储和管理数据的仓库.(说白了,数据
库还是一些文件,只是这些文件使用了对应的数据结构来组织数据的).
1.2.2_数据库管理系统 DBMS
DBMS (Database Management System):专门用于管理数据库的计算机系统软件
数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。我们一般说的数据库,就是指的DBMS(数据库服务器:管理多个数据库文件的软件)
在这里插入图片描述

1.2.3_数据库应用系统
DataBase Application System:使用数据库技术的系统;基本上所有的信息管理系统都是数据库应用系统。因为基本上需要用到数据库。

02_数据库技术发展历程(了解)

2.1_数据库发展流程

1.层次数据库和网状数据库技术阶段;使用指针来表示数据之间的联系。
2.关系数据库技术阶段(表,使用表这种关系将数据组织起来的);
经典的里程碑阶段。代表 DBMS: Oracle、DB2、MySQL、SQL Server等。
3.非关系数据库技术阶段
随着大数据的不断发展,关系型数据库在数据模型,性能,拓展伸缩性上存在一个的缺点,所以非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。
非关系型数据库分类:
ORDBMS:面向对象数据库技术。
NoSQL not only sql:结构化数据库技术。

2.2_出色的 NoSQL 数据库

键值存储数据库:Oracle BDB,Redis,BeansDB
列式储数数据库:HBase,Cassandra,Riak文档型数据库:MongoDB,CouchDB
图形数据库:Neo4J,InfoGrid,Infinite Graph

2.3_常见的关系数据库

数据库系统 所属公司
Oracle Oracle
DB2 IBM
SQL Server MS
MySQL AB–>SUN–>Oracle

Oracle : 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域,但是价格昂贵。 DB2 :速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域,但是价格昂贵。 SQL Server : 全面,效率高,界面友好,操作容易,但是不跨平台。适用于中小型企业领域。 MySQL : 开源,体积小,速度快。适用于中小型企业领域。

03_SQL 介绍(掌握)

3.1_SQL 概述

人和人交流需要语言,人和数据库交流也需要语言,而这个专门特定为程序员和数据库打交道的语言就是 SQL 语言。

SQL:结构化查询语言(Structured Query Language)。是关系型数据库标准语言。特点:简单,灵活,功能强大。

3.2_SQL包含的 6 个部分

一:数据查询语言(DQL):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有 WHERE,ORDER BY, GROUP BY和HAVING。这些 DQL 保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML):
其语句包括动词 INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION, COMMIT和ROLLBACK。
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词 CREATE 和 DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

3.3_书写规则

1.数据库中,SQL 语句大小写不敏感. 如: select SELECT. SeleCt,为了提高可读性,一般关键字大写,其他小写.
2.SQL 语句可单行或多行书写,用分号来分辨是否结束; select
3.合理利用空格和缩进使程序易读

04_表的概述(理解)

4.1_什么是表(table)

我们说 MySQL 是一种关系型数据库。关系数据库最重要的概念就是表。表具有固定的列数和任意的行数,在数学上称为“关系”。
注意: 表定义完,表的结构就固定.学生表(Student):

id name age
10 小狼 5
20 小马 5

二维表是 同类实体 的各种 属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;
表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段。行: 表示一个实体,一条记录
列: 字段,数据项

4.2_表和对象的关系(ORM)

定义表就确定好结构能存那些属性的值好比定义了类就确定了有哪些属性
在这里插入图片描述

在开发中,我们需要将表中的数据查询出来保存到内存中,或者把内存中的数据保存到数据库中,此时就需要将数据表的数据和Java中的对象进行映射关联起来。
这种映射关联就称为 ORM 思想。
ORM: Oject Reraltional Mapping : 对象表的映射

在这里插入图片描述

05_MySQL 安装

MySQL安装过程中注意

MySQL 的默认端口是:3306数据库默认字符集就是 utf8设置密码 : admin
配置停在某个步骤,卡死掉-> 强制关闭(ztrl+shift+esc) ->重新执行配置(MySQL安装路径下/bin/MySQLInstanceConfig.exe)
数据库操作流程(重点):
1.保证服务器是开启状态(如果是作为一个系统服务,不需要管).
2.身份验证:通过账号,密码,数据库地址,端口等等连接数据库
3.在数据库中选择一个数据库文件.
4.选择某一张表.
5.操作表中的数据.
验证安装成功 -> win -> 输入mysql -> MySQL 自带的客户端-> 输入密码 ->看到 mysql> 说明安装成功

06 MySQL服务&连接MySQL

如果 MySQL 服务没有启动,则不能访问 MySQL

6.1_MySQL服务(了解)

打开数据库连接之前:一定要保证MySQL服务已经开启了. net start 命令名字:开启一个服务,如:net start MySQL net stop 命令名字:关闭一个服务器,如:net stop MySQL

6.2_连接MySQL(掌握)

方式1:进入 MySQL 自带的客户端, 在命令行中输入密码;方式2:在运行(win + r || cmd 中)中输入命令
格式: mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口
mysql -uroot -padmin -h127.0.0.1 -P3306

若连接的数据库服务器在本机上,并且端口是 3306。则可以简写: mysql -uroot -padmin

6.3_Navicat for MySQL

Navicat for MySQL[1] 是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat for MySQL 基于Windows平台,为 MySQL量身订作,提供类似于 MySQL 的用管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。

07_数据库操作和存储引擎

7.1_名词介绍

数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件等。
数据库:存储数据库对象的容器。

7.2_数据库分类

1.系统数据库(系统自带的数据库):不能修改
information_schema:存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等信息。
performance_schema:存储数据库服务器性能参数信息。 mysql:存储数据库用户权限信息。
test:任何用户都可以使用的测试数据库。
2.:用户数据库(用户自定义的数据库):一般的,一个项目一个用户数据库。

数据库对象,数据库,数据库服务器关系

在这里插入图片描述

7.3_数据库操作(掌握)

1查看数据库服务器存在哪些数据库. SHOW DATABASES;
2使用指定的数据库. USE database_name;
3查看指定的数据库中有哪些数据表: SHOW TABLES;
4创建指定名称的数据库.
CREATE DATABASE database_name 5 删除数据库.
DROP DATABASE database_name

7.4_存储引擎

MySQL 中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。
通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MySQL 常用存储引擎
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。 InnoDB:支持事务,支持外键,支持行级锁定,性能较低。
InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但对比MyISAM,处理效率差,且会占用更多的磁盘空间以保留数据和索引。
注意:一个系统,特别是金融系统,没有事务是很恐怖的事情,一般都要选择 InnDB.

在这里插入图片描述

系统数据库information_schema 数据库存储的 ENGINES
在这里插入图片描述

08 MySQL 列的常用类型

列的类型,主要是用来约束这一列数据能够存储何种类型的数据.无约束即可随便存则会乱套

8.1_最常用类型(掌握)

以下是以后定义列的最常用类型,需要做数据转存,所以得有对应 Java 中的类型,

MySQL Java
INT int
BIGINT long
DECIMAL BigDecimal
DATE/DATETIME java.util.Date
VARCHAR String

8.2_整数类型(了解)

整数类型有宽度指示器,作用是指定位宽。
例:某字段类型为 INT(3),保证少于3个值,从数据库检索出来时能够自动地用 0 填充,需设置填充,默认不填充。
宽度指示器不影响列存值得范围。一般不指定位宽。

在这里插入图片描述

8.3_小数类型(了解)

FLOAT[(s,p)] 或 DOUBLE[(s,p)] : 小数类型,可存放实型和整型 ,精度 § 和范围 (s) money double(5,2): 整数和小数一共占 5 位.其中小数占2位.都不够精确。
DECIMAL : 高精度类型,金额货币优先选择。

在这里插入图片描述

8.4_字符类型(了解)

char(size) : 定长字符,0 - 255字节,size 指 N 个字符数,若插入字符数超过设定长度,会被截取并警告。
varchar(size): 变长字符,0 - 255字节,从 MySQL5 开始支持 65535 个字节,若插入字符数超过设定长度,在非严格模式下会被截取并警告。
在这里插入图片描述

一般存储大量的字符串,比如文章的纯文本,可以选用 TEXT 系列类型,这个系列都是变长的。
注意: 在 MySQL 中,字符类型必须指定长度,值要使用 单引号引起来。 相当于Java中字符串
(String,StringBuilder/StringBuffer);

在这里插入图片描述

8.5_日期类型(了解)

常用日期和时间类型: DATE、DATETIME
注意: 在 MySQL 中,日期时间值使用单引号引起来。 相当于 Java中 Date,Calender。

在这里插入图片描述

8.6_二进制类型(了解)

二进制类型主要用于存放图形、声音和影像,二进制对象,0-4GB。
开发中,我们一般存储二进制文件保存路径,所以以上的类型非特殊需求不会使用。
BIT,一般存储 0 或 1,存储是 Java 中的 boolean/Boolean 类型的值(需要使用)。
在这里插入图片描述

09_表的操作(DDL掌握)

表的操作主要是使用 DDL 来创建表和删除表等操作

9.1_创建表(掌握)

步骤 :
1.进入要建表的数据库
2.输入建表命令

建表语法:

在这里插入图片描述

例子:创建一张学生表(t_student) 有id name email age

在这里插入图片描述

注意 : 创建表时,不能使用 MySQL 的关键字,保留字.
问题: 定义一个订单表 order,order 是数据库中排序的关键字,无法直接创建成功.

在这里插入图片描述

解决:
1.尽量避免使用关键字,可以使用其他的单词或单词组合来代替
2.一般情况下,创建表的时候习惯使用 t_ 做表名的开头
3.使用反引号 `` 将表名括起来就 ok order

在这里插入图片描述

9.2_删除表(掌握)

语法:
DROP TABLE 表名;

实战
在这里插入图片描述

注意: 如果表名是数据库的关键字或保留字需要加上反引号 `

9.3表的约束(理解)

表的约束(针对于某一列):

1.非空约束:NOT NULL,不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束:UNIQUE,在该表中,该列的内容必须唯一
4.主键约束:PRIMARY KEY, 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从 1 开始,步长为 1。
6.外键约束:FOREIGN KEY,A表中的外键列. A表中的外键列的值必须参照于B表中的某一列(B表主键)
主键设计 :
1.单字段主键,单列作为主键,建议使用。
2.复合主键,使用多列充当主键,不建议。
主键分为两种 :
1.自然主键:使用有业务含义的列作为主键 (不推荐使用);
2.代理主键:使用没有业务含义的列作为主键 (推荐使用);
结论: 使用单字段的代理主键
例子:创建学生表,id为主键自增,name唯一,email不为空,age默认18
在这里插入图片描述

10DML 操作(掌握)

DML 数据操作语句,用户对表的数据多增删改操作。
所有的 DML 操作有一个受影响行,表示 SQL 执行,操作了多少行数据。

10.1_插入操纵

语法:
在这里插入图片描述

实战:
– 4.插入查询结果
INSERT INTO t_student(name,email,age) SELECT name,email,age FROM t_student

注意事项: 一次插入操作只插入一行,插入多条数据为 MySQL 特有语法

10.2_修改操纵

语法:
在这里插入图片描述

实战:
在这里插入图片描述

注意事项:
1.如果省略了 where 条件子句,则全表的数据都会被修改。
2.没有 FROM 关键字

10.3_删除操纵

语法:
在这里插入图片描述

实战:
在这里插入图片描述

注意事项:
1.FROM 不能写成 FORM
2.如果省略了 WHERE 子句,则全表的数据都会被删除

11_DQL 查询操作(掌握)

11.1_语法说明

语法
在这里插入图片描述

如果查询列表写 * 则结果列的显示顺序和创建表时的顺序一致。
在这里插入图片描述

可以自己调整顺序,在 select 后边加上要查询的列名。

11.2_导入 product.sql

直接把product.sql 拖到 navicat 的 表的显示位置 ->开始
在这里插入图片描述

实战
在这里插入图片描述

11.3_普通查询

11.3.1_消除结果重复数据
语法
在这里插入图片描述

实战
在这里插入图片描述

11.3.2_算术运算符
对 number 型数据可以使用算数操作符创建表达式(+ - * /)对 date 型数据可以使用部分算数操作符创建表达式 (+ -)
运算符优先级:
1、乘法和除法的优先级高于加法和减法
2、同级运算的顺序是从左到右
3、表达式中使用"括号"可强行改变优先级的运算顺序
实战:
在这里插入图片描述

11.3.3设置别名
语法:
在这里插入图片描述

作用:
1.改变列的标题头
2.作为计算结果的含义
3.作为列的别名
4.如果别名中使用特殊字符,或是强制大小写或有空格时都需要加单引号。
实战
在这里插入图片描述

11.3.4按格式输出
为方便用户浏览查询结果数据,有时需要设置查询结果的显示格式,可以使用 CONCAT 函数来连接字符串。
语法:
在这里插入图片描述

实战
在这里插入图片描述

11.4过滤查询

使用 WHERE 子句限定返回的记录
语法:
在这里插入图片描述

注意: WHERE子句在 FROM 子句后
11.4.1比较运算符
=, > , >= , < , <= , !=
不等于:<> 等价 !=
实战:
在这里插入图片描述

思考:where 后使用别名不行,总结: SELECT 和 WHERE 的执行顺序
查询语句的字句的执行顺序
1FROM 子句: 从哪张表中去查询数据
2WHERE 子句 : 筛选需要哪些行的数据
3SELECT 子句: 筛选要显示的列

11.4.2逻辑运算符

在这里插入图片描述

实战:
在这里插入图片描述

运算符优先级:
优先级 运算符
1所有比较运算符
2NOT
3AND
4OR

注意:括号将跨越所有优先级规则
在这里插入图片描述
在这里插入图片描述

11.4.3范围和集合
范围匹配:BETWEEN AND 运算符,一般使用在数字类型的范围上。但对于字符数据和日期类型同样可用。需要两个数据
语法:
在这里插入图片描述

实战:
SELECT * FROM product WHERE NOT salePrice BETWEEN 300 AND 400

集合查询: 使用 IN 运算符,判断列的值是否在指定的集合中。
语法:
在这里插入图片描述

实战:
在这里插入图片描述

11.4.4判空
IS NULL: 判断列的值是否为空值,非空字符串,空字符串使用==判断
语法:
在这里插入图片描述

实战:
在这里插入图片描述

结论: 使用=来判断只能判断空字符串,不能判断null 的,而使用 IS NULL 只能判断null值,不能判断空字符串
11.4.5_模糊匹配查询
模糊查询数据使用 LIKE 运算符执行通配查询通配符:
% : 表示可有零或多个任意字符
_ : 表示需要一个任意字符
语法:
在这里插入图片描述

实战:
– 查询货品名称匹配’%罗技M9_’ 的所有货品信息
SELECT * FROM product WHERE productName LIKE ‘%罗技M9_’

11.5结果排序

使用 ORDER BY 子句将查询结果进行排序
ASC : 升序,缺省。
DESC: 降序。
ORDER BY 子句出现在 SELECT 语句的最后。

排序分类:单列的排序
在这里插入图片描述

多列的排序
在这里插入图片描述

注意: 谁在前面谁先排序。
注意:如果列的别名使用 ‘’ 则按此别名进行的排序无效.

在这里插入图片描述

DQL 字句的执行顺序
1.FROM 字句 : 从哪张表中去查数据
2.WHERE 字句: 筛选需要的行数据
3.SELECT 字句: 筛选需要显示的列的数据
4.ORDER BY 字句: 排序操作

11.6MySQL 的分页查询

当前页 : currentPage
每页显示的最大记录数: pageSize = 3
语法:

第一页: SELECT * FROM product LIMIT 0, 3 0 1 2 1
第二页: SELECT * FROM product LIMIT 3, 3 3 4 5 2
第三页: SELECT * FROM product LIMIT 6, 3 6 7 8 3
第四页: SELECT * FROM product LIMIT 9, 3
beginIndex = (currentPage - 1) * pageSize
实战:
在这里插入图片描述

思考题
带有排序操作的分页查询,是先分页还是先排序先排序再分页(银行卡操作流水)
在这里插入图片描述

11.7统计函数

COUNT(*) : 统计表中有多少条记录
SUM(列) : 汇总列的总和
MAX(列) : 获取某一列的最大值 MIN(列) : 获取某一列的最小值 AVG(列) : 获取列的平均值

实战:
在这里插入图片描述

12_数据备份和恢复

忠告: 在企业修改数据库之前先备份。

MySQL自身的数据库维护:
通过 cmd 命令进入dos窗口:
1.导出:mysqldump -u账户 -p密码 数据库名称 > 脚本文件存储地址
在这里插入图片描述

2.导入:mysql -u账户 -p密码 数据库名称 < 脚本文件存储地址
在这里插入图片描述

3.导入:mysql -u账户 -p密码 数据库名称 < 脚本文件存储地址
mysql -uroot -padmin jdbcdemo < D:/jdbcdemo_bak.sql
Navicat工具的导入和导出:
Navicat工具的备份和还原: 需要工具支持的格式才可以恢复

小结
1MySQL 安装成功
2掌握 SQL 的分类以及书写规则
3理解关系型数据库表的概念,理解 ORM 思想
4掌握连接 MySQL 服务器的方法
5掌握数据库的操作 SQL 语句
6记住数据列的常用类型,已经和Java的类映射
7掌握 DDL 语句,创建表以及表中的主键设置和自动增长设置,删除表的SQL
8掌握 DML操作
9掌握 DQL 操作
重点掌握:算术运算符,设置别名,按格式输出
整个过滤查询,结果排序,MySQL 分页
10了解统计函数,掌握COUNT 函数的使用
11掌握一种数据备份和恢复的方式

学习优势:
1.包含java前后端从 0 ->1 全过程教学, 内容全面, 知识点不遗漏, 学完即可参加实际工作.
2.课程为目前项目开发常用的技术知识,向用人单位对标,学以致用。那些脱离实际,废弃不用的,太前沿的框架技术前期不建议学。
3.一起学习,打卡,一起交流,希望能营造一个和线下一样的学习环境。

需要进微信学习交流群, 或者想领取代码,文档,全套视频的同学请+v:lmm99964
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值