MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传)
Posted Maynor学长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传)相关的知识,希望对你有一定的参考价值。
文章目录
- MySQL数据库笔记
- 第一部分 MySQL基础篇
- 第01章 数据库概述
- 第02章 MySQL环境搭建(略)
- 第03章 基本的SELECT语句
- 第04章 运算符
- 第05章 排序与分页
- 第06章 多表查询
- 第07章 单行函数
- 第08章 聚合函数
- 第09章 子查询
- 第10章 创建和管理表
- 第11章 数据处理之增删改
- 第12章 MySQL数据类型精讲
- 第13章 约束
- 第14章 视图
- 第15章 存储过程与函数
- 第16章 变量、流程控制与游标
- 第17章 触发器
- 第18章 MySQL8其它新特性
- 第二部分 MySQL高级特性篇
- 第01章 Linux下MySQL的安装与使用
- 第02章 MySQL的数据目录
- 第03章 用户与权限管理
- 第04章 逻辑架构
- 第05章 存储引擎
- 第06章 索引的数据结构
- 第07章 InnoDB数据存储结构
- 第08章 索引的创建与设计原则
- 第09章 性能分析工具的使用
- 第10章 索引优化与查询优化
- 第11章 数据库的设计规范
- 第12章 数据库其它调优策略
- 第13章 事务基础知识
- 第14章 MySQL事务日志
- 第15章 锁
- 第16章 多版本并发控制
- 第17章 其它数据库日志
- 第18章 主从复制
- 第19章 数据库备份与恢复
mysql数据库笔记
第一部分 MySQL基础篇
第01章 数据库概述
1. 为什么要使用数据库
- 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以“固化”,而持久化的实现过程大多通过各种关系数据库来完成。
- 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
2. 数据库与数据库管理系统
2.1 数据库的相关概念
-
DB:数据库(Database)
- 即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
-
DBMS:数据库管理系统(Database Management System)
- 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
-
SQL:结构化查询语言(Structured Query Language)
- 专门用来与数据库通信的语言。
3. RDBMS与非RDBMS
3.1 关系型数据库(RDBMS)
3.1.1 实质
- 这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。
- 关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库(database)。
- SQL就是关系型数据库的查询语言。
3.1.2 优势
- 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持使得对于安全性能很高的数据访问要求得以实现。
3.2 非关系型数据库(非RDBMS)
3.2.1 介绍
非关系型数据库,可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。
4. 关系型数据库设计规则
- 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
- 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计。
4.1 表、记录、字段
- E-R(entity-relationship,实体-联系)模型中有三个主要概念是:实体集、属性、联系集。
- 一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。
4.2 表的关联关系
- 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
- 四种:一对一关联、一对多关联、多对多关联、自我引用
第02章 MySQL环境搭建(略)
1. MySQL演示使用
1.1 MySQL的编码设置
MySQL5.7中
问题再现:命令行操作sql乱码问题
mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\\xD5\\xC5\\xC8\\xFD' for column 'sname' at row 1
问题解决
步骤1:查看编码命令
show variables like 'character_%';
show variables like 'collation_%';
步骤2:修改mysql的数据目录下的my.ini配置文件
default-character-set=utf8 #默认字符集 [mysqld]
# 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci
步骤3:重启服务
步骤4:查看编码命令
show variables like 'character_%';
show variables like 'collation_%';
MySQL8.0中
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码改为utf8mb4,从而避免了上述的乱码问题。
问题1:root用户密码忘记,重置的操作
1: 通过任务管理器或者服务管理,关掉mysqld(服务进程)
2: 通过命令行+特殊参数开启mysqld mysqld – defaults-file=“D:\\ProgramFiles\\mysql\\MySQLServer5.7Data\\my.ini” --skip-grant-tables
3: 此时,mysqld服务进程已经打开。并且不需要权限检查
4: mysql -uroot 无密码登陆服务器。另启动一个客户端进行
5: 修改权限表 (1) use mysql; (2)update user set authentication_string=password(‘新密码’) where user=‘root’ and Host=‘localhost’; (3)flush privileges;
6: 通过任务管理器,关掉mysqld服务进程。
7: 再次通过服务管理,打开mysql服务。
8: 即可用修改后的新密码登陆。
问题2:mysql命令报“不是内部或外部命令”
如果输入mysql命令报“不是内部或外部命令”,把mysql安装目录的bin目录配置到环境变量path中。
问题3: No database selected
解决方案一:就是使用“USE 数据库名;”语句,这样接下来的语句就默认针对这个数据库进行操作
解决方案二:就是所有的表对象前面都加上“数据库.”
问题4:命令行客户端的字符集问题
mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\\xD5\\xC5\\xC8\\xFD' for column 'sname' at row 1
查看所有字符集:SHOW VARIABLES LIKE 'character_set_%';
解决方案,设置当前连接的客户端字符集 SET NAMES GBK;
问题5:修改数据库和表的字符编码
修改编码:
(1)先停止服务,(2)修改my.ini文件(3)重新启动服务
说明:
如果是在修改my.ini之前建的库和表,那么库和表的编码还是原来的Latin1,要么删了重建,要么使用alter语句修改编码。
mysql> create database 0728db charset Latin1;
Query OK, 1 row affected (0.00 sec)
mysql> use 0728db;
Database changed
mysql> show create table student\\G
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` ( `id` int(11) NOT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
mysql> alter table student charset utf8; #修改表字符编码为UTF8
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table student\\G
**********************以上是关于MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传)的主要内容,如果未能解决你的问题,请参考以下文章