本文目录一览:
MySQL数据库的介绍
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
mysql使用教程?
MySQL数据库使用教程介绍
完整 MySQL 操作详见:[MySQL攻略]MySQL数据库使用教程介绍
什么叫MySQL数据库?
数据库(Database)是依照算法设计来机构、储存和管理数据信息的仓库。每一个数据库都具有一个或多个API用以创建,访问,管理,检索和拷贝存储的数据信息。
如今大家用的大多数是关系型数据库管理系统(RDBMS)来储存和管理大量数据。所谓关系型数据库,就是以关系模型为基础的数据库,凭借结合集合代数等数学概念来对数据库中的数据进行处理。
MySQL是时下最热门的关系型数据库管理系统之一,本教程将会讲解MySQL的基础知识,并帮助大家熟练应用MySQL数据库。
MySQL教程-RDBMS专业术语
在开始学习MySQL数据库前,使我们先掌握下RDBMS的一些专业术语:
数据库:数据库是一些关系表的结合。
数据表:数据的矩阵。在一个数据库中的表看上去像一个简易的excel表。
列:一列(数据元素)包括了同类型的数据。
行:一行(元组/纪录)是一组有关的数据。
冗余:储存二倍数据,性能会有所损失,但信息安全性有所提高。
主键:主键是唯一的。一个数据表中只有包含一个主键。
外键:用于关联两个表。
索引:用数据库索引可快速访问数据表中的特定信息。索引是对数据库表格中一列或多列的值作排列的一种构造方式。类似书本的目录。
MySQL教程-基础操作
进到数据库:mysql -uroot -p,登陆密码立即回车键
退出数据库:quit或是exit
查询版本号:select version();
获取当前时间:select now();
扛得住的MySQL数据库架构
数据库优化是系统工程,性能的提升靠整体。本课程将面面俱到的讲解提升数据库性能的各种因素,让你在最短的时间从小白到资深,将数据库整体架构了然于胸
第1章 实例和故事 试看7 节 | 50分钟
决定电商11大促成败的各个关键因素。
收起列表
视频:1-1 什么决定了电商双11大促的成败 (04:04)试看
视频:1-2 在双11大促中的数据库服务器 (06:03)
视频:1-3 在大促中什么影响了数据库性能 (07:55)
视频:1-4 大表带来的问题 (14:13)
视频:1-5 大事务带来的问题 (17:27)
作业:1-6 【讨论题】在日常工作中如何应对高并发大数据量对数据库性能挑战
作业:1-7 【讨论题】在MySQL中事务的作用是什么?
第2章 什么影响了MySQL性能 试看30 节 | 210分钟
详细介绍影响性能各个因素,包括硬件、操作系统等等。
收起列表
视频:2-1 影响性能的几个方面 (04:08)试看
视频:2-2 CPU资源和可用内存大小 (10:54)
视频:2-3 磁盘的配置和选择 (04:44)
视频:2-4 使用RAID增加传统机器硬盘的性能 (11:30)
视频:2-5 使用固态存储SSD或PCIe卡 (08:35)
视频:2-6 使用网络存储SAN和NAS (07:16)
视频:2-7 总结:服务器硬件对性能的影响 (03:27)
视频:2-8 操作系统对性能的影响-MySQL适合的操作系统 (03:50)
视频:2-9 CentOS系统参数优化 (11:43)
视频:2-10 文件系统对性能的影响 (03:29)
视频:2-11 MySQL体系结构 (05:29)
视频:2-12 MySQL常用存储引擎之MyISAM (13:23)
视频:2-13 MySQL常用存储引擎之Innodb (10:44)
视频:2-14 Innodb存储引擎的特性(1) (15:24)
视频:2-15 Innodb存储引擎的特性(2) (08:44)
视频:2-16 MySQL常用存储引擎之CSV (09:19)
视频:2-17 MySQL常用存储引擎之Archive (06:08)
视频:2-18 MySQL常用存储引擎之Memory (10:40)
视频:2-19 MySQL常用存储引擎之Federated (11:21)
视频:2-20 如何选择存储引擎 (04:33)
视频:2-21 MySQL服务器参数介绍 (08:04)
视频:2-22 内存配置相关参数 (09:24)
视频:2-23 IO相关配置参数 (10:01)
视频:2-24 安全相关配置参数 (06:13)
视频:2-25 其它常用配置参数 (03:41)
视频:2-26 数据库设计对性能的影响 (04:36)
视频:2-27 总结 (01:32)
作业:2-28 【讨论题】你会如何配置公司的数据库服务器硬件?
作业:2-29 【讨论题】你认为对数据库性能影响最大的因素是什么
作业:2-30 【讨论题】做为电商的DBA,建议开发选哪种MySQL存储引擎
第3章 MySQL基准测试8 节 | 65分钟
了解基准测试,MySQL基准测试工具介绍及实例演示。
收起列表
视频:3-1 什么是基准测试 (02:20)
视频:3-2 如何进行基准测试 (09:00)
视频:3-3 基准测试演示实例 (11:18)
视频:3-4 Mysql基准测试工具之mysqlslap (13:30)
视频:3-5 Mysql基准测试工具之sysbench (11:07)
视频:3-6 sysbench基准测试演示实例 (17:11)
作业:3-7 【讨论题】MySQL基准测试是否可以体现出业务系统的真实性能
作业:3-8 【实操题】参数不同取值对性能的影响
第4章 MySQL数据库结构优化14 节 | 85分钟
详细介绍数据库结构设计、范式和反范式设计、物理设计等等。
收起列表
视频:4-1 数据库结构优化介绍 (06:52)
视频:4-2 数据库结构设计 (14:49)
视频:4-3 需求分析及逻辑设计 (11:00)
视频:4-4 需求分析及逻辑设计-反范式化设计 (06:44)
视频:4-5 范式化设计和反范式化设计优缺点 (04:06)
视频:4-6 物理设计介绍 (05:17)
视频:4-7 物理设计-数据类型的选择 (18:59)
视频:4-8 物理设计-如何存储日期类型 (13:37)
视频:4-9 物理设计-总结 (02:37)
图文:4-10 说明MyISAM和Innodb存储引擎的5点不同
作业:4-11 【讨论题】判断表结构是否符合第三范式要求?如不满足要如何修改
作业:4-12 【实操题】请设计一个电商订单系统的数据库结构
作业:4-13 【讨论题】以下那个字段适合作为Innodb表的主建使用
作业:4-14 【讨论题】请为下表中的字段选择合适的数据类型
第5章 MySQL高可用架构设计 试看24 节 | 249分钟
详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等。
收起列表
视频:5-1 mysql复制功能介绍 (04:58)
视频:5-2 mysql二进制日志 (22:05)
视频:5-3 mysql二进制日志格式对复制的影响 (09:37)
视频:5-4 mysql复制工作方式 (03:08)
视频:5-5 基于日志点的复制 (20:06)
视频:5-6 基于GTID的复制 (22:32)
视频:5-7 MySQL复制拓扑 (13:58)
视频:5-8 MySQL复制性能优化 (09:23)
视频:5-9 MySQL复制常见问题处理 (08:31)
视频:5-10 什么是高可用架构 (14:09)
视频:5-11 MMM架构介绍 (08:09)
视频:5-12 MMM架构实例演示(上) (09:16)试看
视频:5-13 MMM架构实例演示(下) (18:55)
视频:5-14 MMM架构的优缺点 (08:01)
视频:5-15 MHA架构介绍 (10:02)
视频:5-16 MHA架构实例演示(1) (13:11)
视频:5-17 MHA架构实例演示(2) (16:54)
视频:5-18 MHA架构优缺点 (05:14)
视频:5-19 读写分离和负载均衡介绍 (11:42)
视频:5-20 MaxScale实例演示 (18:25)
作业:5-21 【讨论题】MySQL主从复制为什么会有延迟,延迟又是如何产生
作业:5-22 【实操题】请为某互联网项目设计99.99%MySQL架构
作业:5-23 【讨论题】如何给一个已经存在的主从复制集群新增一个从节点
作业:5-24 【讨论题】给你三台数据库服务器,你如何设计它的高可用架构
第6章 数据库索引优化8 节 | 65分钟
介绍BTree索引和Hash索引,详细介绍索引的优化策略等等。
收起列表
视频:6-1 Btree索引和Hash索引 (20:09)
视频:6-2 安装演示数据库 (01:19)
视频:6-3 索引优化策略(上) (17:33)
视频:6-4 索引优化策略(中) (13:02)
视频:6-5 索引优化策略(下) (12:30)
作业:6-6 【讨论题】一列上建立了索引,查询时就一定会用到这个索引吗
作业:6-7 【讨论题】在定义联合索引时为什么需要注意联合索引中的顺序
作业:6-8 【实操题】SQL建立索引,你会考虑那些因素
第7章 SQL查询优化9 节 | 62分钟
详细介绍慢查询日志及示例演示,MySQL查询优化器介绍及特定SQL的查询优化等。
收起列表
视频:7-1 获取有性能问题SQL的三种方法 (05:14)
视频:7-2 慢查询日志介绍 (08:57)
视频:7-3 慢查询日志实例 (08:27)
视频:7-4 实时获取性能问题SQL (02:21)
视频:7-5 SQL的解析预处理及生成执行计划 (16:02)
视频:7-6 如何确定查询处理各个阶段所消耗的时间 (09:35)
视频:7-7 特定SQL的查询优化 (10:34)
作业:7-8 【讨论题】如何跟据需要对一个大表中的数据进行删除或更新
作业:7-9 【讨论题】如何获取需要优化的SQL查询
第8章 数据库的分库分表5 节 | 48分钟
详细介绍数据库分库分表的实现原理及演示案例等。
收起列表
视频:8-1 数据库分库分表的几种方式 (04:34)
视频:8-2 数据库分片前的准备 (13:53)
视频:8-3 数据库分片演示(上) (11:40)
视频:8-4 数据库分片演示(下) (17:02)
作业:8-5 【讨论题】对于大表来说我们一定要进行分库分表吗
第9章 数据库监控7 节 | 29分钟
介绍数据库可用性监控、性能监控、MySQL主从复制监控等
收起列表
视频:9-1 数据库监控介绍 (04:46)
视频:9-2 数据库可用性监控 (07:20)
视频:9-3 数据库性能监控 (09:39)
视频:9-4 MySQL主从复制监控 (06:16)
作业:9-5 【讨论题】QPS是否可以真实的反映出数据库的负载情况
作业:9-6 【讨论题】如何正确评估数据库的当前负载状况
作业:9-7 【实操题】开发一个简单监控脚本,监控mySQL数据库阻塞情况
MySQL数据库基础+ 数据库的基本操作?
需要用的资料以链接的形式给需要的同学。
我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw
图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs
开始我的MySQL之旅吧 始于2016.12.04
--WH
一、数据库的安装
这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(MySQL安装教程)去看,就能够安装完好。
安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去百度搜教程。
二、数据库的基本操作
1、开启mysql服务命令
net start mysql
2、进入mysql的两种方式
明文进入:mysql -uroot -proot格式:mysql -u帐号 -p密码
密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。
3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)
前面四个数据库是mysql中自带的,也就是必须的.
SHOW DATABASES;
4、创建名为test_1的数据库
格式:CREATE DATABASE 数据库名
CREATE DATABASE test_1;
5、删除名为test_1的数据库
格式:DROP DATABASE 数据库名
DROP DATABASE test_1;
总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库
三、数据表的基本操作
数据表和数据库还有Mysql三者的关系
mysql中保存了很多数据库、一个数据库中可以保存很多表。
对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)
前提:表是在数据库下的,所以要先确实使用哪个数据库。
USE test_1;
1、创建数据表
格式:CREATE TABLE 数据表名(
字段名1数据类型[列级别约束条件],
字段名2数据类型[列级别约束条件],
字段名3数据类型[列级别约束条件]
);
注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。
解释:
1、[]中括号中的内容表示可以有可以没有,
2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横
3、约束条件后面会讲到
1.1、创建没有约束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注释:SHOW TABLES 查询数据库底下的所有表。
1.2、创建有约束的student表
六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加
1.2.1:主键约束
PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。
一般被主键约束了的字段度习惯性的称该字段为该表的主键
单字段主键约束
两种方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
); PRIMARY KEY(id) );
多字段主键约束(复合主键)
这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY, nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外键约束
什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。
外键约束的特点:
1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。
2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。
3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。
注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。
格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES 主表名(主键字段)
英文解释:CONSTRAINT:约束REFERENCES:参考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id
1.2.3:非空约束
NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一约束
UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是说在插入的记录中,每条记录的name值不能是一样的。
1.2.5:默认约束
Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自动增加
AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查询表结构
2.1、查看表基本结构语句
格式1:DESCRIBE 表名/DESC 表名这两个的功能是一样的,简写了单词describe
DESCRIBE student;
2.2、查看创建表的语句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
这样显示的格式很不好,看不清楚,所以有了下面这个语句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改数据表
修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER
3.1、修改表名
格式:ALTER TABLE旧表名 RENAME[TO]新表名;
将student表名改为student1(改完后在改回来)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的字段名
格式:ALTER TABLE表名 CHANGE旧字段名新字段名新数据类型
将student表中的name字段名改为 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的数据类型
格式:ALTER TABLE表名 MODIFY字段名数据类型
ALTER TABLE student MODIFY username VARCHAR(20);
解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。
3.4、修改字段的排列位置
方式1:ALTER TABLE表名 MODIFY字段1数据类型 FIRST|AFTER字段2
解释:将字段1的位置放到第一,或者放到指定字段2的后面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE表名 CHANGE字段1字段2数据类型 FIRST|AFTER字段3
解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
总结
CHANGE和MODIFY的区别?
原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。
3.5、添加字段
格式:ALTER TABLE表名称 ADD新字段名数据类型[约束条件][FIRST|AFTER已存在的表名]
解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、删除字段
格式:ALTER TABLE表名称 DROP字段名;
ALTER TABLE student DROP sex;
3.7、删除表的外键约束
格式:ALTER TABLE表名称 DROP FOREIGN KEY外键约束名
注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。
3.8、更改表的存储引擎
格式:ALTER TABLE表名 ENGINE=更改后的存储引擎名
这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。
4、删除表
4.1、删除无关联表
格式:DROP TABLE表名;
ALTER TABLE student;
4.2、删除被其他表关联的主表
这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法
1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除
2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。