数据库MySQL详解

全 最详细MySQL教程,2021.1再次更新70%的内容,2021.1再更花了我连续半个月时间,此时使用MySQL 8.0 + Navicat 15图形化界面演示,欢迎大家一键三连 重点更新第7、8、10、11、13章,应付大学考试、考研复试、求职笔试应该说是完全足够的

后续几个月一直在更新MySQL专栏,也是我的读书笔记,都是MySQL原理和底层一点的东西,可能比一般的面试文都深入,详情见这里MySQL专栏

目录

第1章 数据库

1.1 数据库概述

1.2 数据库表

1.3 表数据

第2章 MySql数据库

2.1 MySql安装

2.2 登录MySQL数据库

2.3 SQLyog(MySQL图形化开发工具,我个人用的Navicat)

2.4 MySQL配置文件

第3章 SQL语句

3.1 SQL语句

3.2 SQL通用语法

3.3 数据库操作:database

3.4 表结构相关语句

3.4.1 创建表

3.4.2 查看表

3.4.3 删除表

3.4.4 修改表结构格式(实际开发最常用)

3.5 DOS操作数据乱码解决

第4章 字段属性

4.1 主键

4.1.1增加主键

4.1.2 主键约束

4.1.3 更新主键 & 删除主键

4.1.4 主键分类

4.2 自动增长

4.2.1 新增自增长

4.2.2 自增长使用

4.2.3 修改自增长

4.2.4 删除自增长

4.3 唯一键

4.3.1 增加唯一键

4.3.2 唯一键约束

4.3.3 更新唯一键 & 删除唯一键

4.4 外键

4.4.1 增加外键

4.4.2 修改外键&删除外键

4.4.3 外键作用

4.4.4 外键条件

4.4.5 外键约束

4.4.6 创建外键约束的要求

4.4.7 外键约束的闭环问题

4.5 索引

4.5.1 创建索引

4.5.2 添加索引

4.5.3 查询索引

4.5.4 删除索引

4.5.5 索引的使用原则

4.5.6 索引的意义

4.5.7 MySQL索引原理图解、B+树应用场景大全、索引优化、索引成本计算等

第5章 关系

5.1 一对一

5.2 一对多

5.3多对多

第6章 范式

6.1 1NF

6.2 2NF

6.3 3NF

6.4 逆规范化

第7章 数据高级操作

7.1 新增数据

7.1.1 IGNORE关键字

7.1.2 主键冲突

7.1.3 蠕虫复制

7.2 更新数据

7.2.1 UPDATE语句中的内连接

7.2.2 UPDATE语句中的外连接

7.3 删除数据

7.3.1 DELETE语句中的内连接

7.3.2 DELETE语句中的外连接

7.3.3 快速删除数据表全部记录

7.4 查询数据

7.4.1 Select语句

7.4.2 去重查询

7.4.3 字段别名

7.4.4 数据源

7.4.5 Where子句

7.4.6 聚合函数

7.4.7 Group by子句

7.4.8 Having子句

7.4.9 Order by子句

7.4.10 Limit子句

7.4.11 select语句中各关键字的先后顺序

第8章 连接查询

8.1 连接查询分类

8.2 交叉连接

8.3 内连接

8.4 外连接

8.5 自然连接

8.6 子查询

8.6.1 子查询分类

8.6.2 单行子查询和多行子查询

8.6.3 WHERE子句中的多行子查询

8.6.4 子查询的EXISTS关键字

第9章 视图

9.1 创建视图

9.2 查看视图

9.3 使用视图

9.4 修改视图

9.5 删除视图

9.6 视图意义

9.7 视图数据操作

9.7.1 新增数据

9.7.2 删除数据

9.7.3 更新数据

9.8 视图算法

第10章 数据备份与还原

10.1 数据表备份

10.2 单表数据备份

10.3 SQL备份与还原

10.4 增量备份

10.5 大文件备份和还原(图形化操作,推荐!)

第11章 事务安全

11.1 事务操作

11.2 自动事务处理

11.3 事务原理

11.4 回滚点

11.5 事务ACID属性

11.6 事务的隔离级别

11.6.1 read uncommitted

11.6.2 read committed

11.6.3 repeatable read

11.6.4 serializable

第12章 触发器

12.1 创建触发器

12.2 查看触发器

12.3 使用触发器

12.4 修改触发器&删除触发器

12.5 触发器记录

第13章 函数

13.1 数字函数

13.2 日期函数

13.2.1 获取系统时间函数

13.2.2 日期格式化函数

13.2.3 日期偏移计算

13.2.4 计算日期之间相隔的天数

13.3 字符函数

13.4 条件函数

13.4.1 简单条件判断

13.4.2 复杂条件判断

13.5 自定义函数

13.5.1 创建函数

13.5.2 查看函数

13.5.3 修改函数&删除函数

13.5.4 函数参数

13.5.5 作用域

第14章 存储过程

14.1 创建过程

14.2 查看过程

14.3 调用过程

14.4 修改过程&删除过程

14.5 过程参数


第1章 数据库

1.1 数据库概述

什么是数据库

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

什么是数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

常见的数据库管理系统

MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。

Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。

DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.

SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

SyBase :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

SQLite : 嵌入式的小型数据库,应用在手机端。

Java相关的数据库:MYSQL,Oracle.

这里使用MySQL数据库。MySQL中可以有多个数据库,数据库是真正存储数据的地方。

数据库与数据库管理系统的关系

1.2 数据库表

数据库中以表为组织单位存储数据。

表类似我们的Java类,每个字段都有对应的数据类型。

那么用我们熟悉的java程序来与关系型数据对比,就会发现以下对应关系。

类———-表

类中属性———-表中字段

对象———-记录

1.3 表数据

根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录。

表记录与java类对象的对应关系

第2章 MySql数据库

2.1 MySql安装

安装

自行百度

安装后,MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停止。

也可以在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理运行cmd命令窗口)

2.2 登录MySQL数据库

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账 ,使用安装时设置的密码即可登录。

格式1:cmd>  mysql –u用户名 –p密码

例如:mysql -uroot –proot

格式2:cmd>  mysql –host=ip地址 –user=用户名 –password=密码

例如:mysql –host=127.0.0.1  –user=root –password=root

2.3 SQLyog(MySQL图形化开发工具,我个人用的Navicat)

安装:

提供的SQLyog软件为免安装版,可直接使用。【其实我建议使用Navicat,具体怎么破解得百度,公司都用的这个,学习阶段用SQLyog也没关系】

使用:

输入用户名、密码,点击连接按钮,进行访问MySQL数据库进行操作

在Query窗口中,输入SQL代码,选中要执行的SQL代码,按F8键运行,或按执行按钮运行。

2.4 MySQL配置文件

看到你的C:ProgramDataMySQLMySQL Server 8.0目录,注意ProgramData是隐藏目录,你需要设置查看隐藏文件才能看得到。

发现下面有个my.ini,这就是MySQL数据库的配置文件,比如字符集、端口 、目录地址等信息都可以在这里配置。

从大体上我们可以看到,my.ini里面有3个部分。

[client]和[mysql]是客户端配置信息,[mysqld]是数据库配置信息

提示:[mysql]中默认no-beep表示当数据库发生错误的时候,不要让主板发出蜂鸣器的声音

[mysqld]大致说明如下(已去掉默认注释,不然篇幅太长)

第3章 SQL语句

数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

创建数据库、创建数据表、向数据表中添加一条条数据信息均需要使用SQL语句。

3.1 SQL语句

SQL分类:

数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等

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

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

3.2 SQL通用语法

1.SQL语句可以单行或多行书写,以分 结尾

2.可使用空格和缩进来增强语句的可读性

3.MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。

4.同样可以使用/**/的方式完成注释

5.MySQL中的我们常使用的数据类型如下

详细的数据类型如下

分类

类型名称

说明

整数类型

tinyInt

很小的整数,1字节

smallint

小的整数,2字节

mediumint

中等大小的整数,3字节

int(integer)

普通大小的整数,4字节

bigint 大整数,8字节

小数类型

float

单精度浮点数,4字节

double

双精度浮点数,8字节

decimal(m,d)

压缩严格的定点数, m表示数字总位数,d表示保留到小数点后d位,不足部分就添0,如果不设置m、d,默认保存精度是整型

日期类型

year

年份 YYYY  1901~2155,1字节

time

时间 HH:MM:SS  -838:59:59~838:59:59,3字节

date

日期 YYYY-MM-DD 1000-01-01~9999-12-3,3字节

datetime

日期时间 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59,8字节

timestamp

时间戳 YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC,4字节

文本、二进制类型

CHAR(M)

M为0~255之间的整数,固定长度为M,不足后面补全空格

VARCHAR(M)

M为0~65535之间的整数

TINYBLOB

允许长度0~255字节

BLOB

允许长度0~65535字节

MEDIUMBLOB

允许长度0~167772150字节

LONGBLOB

允许长度0~4294967295字节

TINYTEXT

允许长度0~255字节(0 ~ 2^8 – 1)

TEXT

允许长度0~65535字节(0 ~ 2^16 – 1)

MEDIUMTEXT

允许长度0~167772150字节(2^24 – 1)

LONGTEXT

允许长度0~4294967295字节(2^32 – 1)

VARBINARY(M)

允许长度0~M个字节的变长字节字符串

BINARY(M)

允许长度0~M个字节的定长字节字符串

需要注意的是:

> BOOLEAN在数据库保存的是tinyInt类型,false为0,true就是1

> char是定长,varchar是变长,char存储时,如果字符数没有达到定义的位数,后面会用空格填充到指定长度,而varchar没达到定义位数则不会填充,按实际长度存储。

> char长度固定,char存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。

3.3 数据库操作:database

创建数据库

格式:

create database 数据库名;

create database 数据库名 character set 字符集;

例如:

#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8

#创建数据库 并指定数据库中数据的编码

  

#如果创建之后 修改数据库编码

查看数据库

查看数据库MySQL服务器中的所有的数据库:

查看某个数据库的定义的信息:

show create database 数据库名;

例如:

删除数据库

drop database 数据库名称;

例如:

其他的数据库操作命令

切换数据库:

格式:use 数据库名;

例如:

查看正在使用的数据库:

 图形化结果类似于下图

 

3.4 表结构相关语句

3.4.1 创建表

格式:

create table 表名(
   字段名 类型(长度) 约束,
   字段名 类型(长度) 约束
);

例如:

创建分类表


  1. CREATE TABLE sort (
  2.   sid INT, #分类ID
  3. 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月8日
下一篇 2022年7月8日

相关推荐