第1章 初识MySQL

MySQL是一个开放源代码的数据库管理系统(DBMS),它是由MySQL AB公司开发、发布和支持的。MySQL是一个跨平台(Windows、Linux、UNIX、MacOS)的开源“关系型”数据库管理系统,广泛地应用在Internet上的中小型网站开发中。

1.1 数据库基础

  • 1.1.1 什么是数据库

1)保管数据的“仓库”;

2)数据管理的方法和技术;

  • 1.1.2 表

类似于Excel表,行记录,列字段!

  • 1.1.3 数据类型

常见的数据类型有:整数、浮点数、精确小数、二进制、日期/时间、字符串

  • 1.1.4 主键

1)主键又称为主码,用于唯一标识表中的每一条记录。

2)可定义表中一列或者多列为主键(Primary Key)

3)主键列上不能有两行相同的值,也不能为空值null

1.2 数据库技术构成

  • 1.2.1 数据库系统

数据库管理系统的3个主要组成部分

1)数据库:用于存储数据的地方

2)数据库管理系统:用于管理数据库的软件software

3)数据库应用:为了提高数据库系统的处理能力所使用的管理数据库软件的补充

数据库管理系统(DataBase Management System,DBMS)是用户创建、管理和维护数据库时使用的软件,位于操作系统和用户之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的从操作机制,维护数据库的安全性、完整性和可靠性。

  • 用户 用户 用户———— Layer5
  • 应用程序 ————Layer4
  • 数据库管理系统 ————Layer3
  • 操作系统 ————Layer2
  • 硬件————Layer1
  • 1.2.2 SQL语言

对数据库进行查询和修改操作的语言叫做SQL。(Structured Query Language)工业标准SQL-92

SQL包含如下

1)数据定义语言(DDL):DROP、CREATE、ALTER等语句

2)数据操作语言(DML):INSERT、UPDATE、DELETE语句

3)数据查询语言(DQL):SELECT语句

4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK语句

  • 1.2.3 数据库访问接口

1)ODBC(Open Database Connectivity开放数据库互连),最大优点是可以以统一的方式处理所有数据库。

2)JDBC(Java Data Base ConnectivityJava数据库连接),用于Java应用程序连接数据库的标准和方法。

3)ADO.NET,是在微软.NET框架下开发设计的一组用于和数据源进行交互的面向对象的类库。

4)PDO(PHP Data Object),为PHP访问数据库定义了一个轻量级的、一致性的接口。

针对不同的语言,MySQL提供了不同数据库的“访问连接驱动”,可登录官网下载。

1.3 什么是MySQL

MySQL是一个小型关系型数据库管理系统,与其他大象数据库管理系统(Oracle、DB2、SQL Server)相比,MySQL规模小、功能有限,但是它体积小、速度快、成本低且它提供的功能对稍微复杂的应用已经够用,这些特性使得MySQL成为世界上最受欢迎的开放源码数据库。

  • 1.3.1 客户机-服务器软件

主从式架构(Client-server-model)或客户端——服务器(Client/Server)结构简称C/S结构,是一种网络架构,通常在该网络架构下软件分为客户端(Client)和服务器(Server)

这种系统的特点是,客户端和服务器程序不在同一台计算机运行,这些客户端和服务器程序通常归属不同的计算机。

主从式架构通过不同的途径应用于很多不同类型的应用程序,比如在因特网上使用的网页。

举例:当顾客从京东上买东西的时候,电脑和网页浏览器就被当做一个客户端,同时组成当当网的电脑、数据库和应用程序就被当做服务器。

服务器端一般使用高性能的计算机,并配合使用不同类型的数据,如oracle、Sybase或者MySQL。

  • 1.3.2 MySQL版本

1)MySQL Community Server(社区版):完全免费,但官方不提供技术支持

2)MySQL Enterprise Server(企业版服务器):它能够以很高性价比为企业提供数据库仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。需付费,官方提供电话技术支持。

3)MySQL Cluster主要用于架设集群服务器,需要在社区版或者企业版的基础上使用。

Server version: 5.7.13-log MySQL Community Server (GPL)

1)第1个数字,主版本号

2)第2个数字,发行级别

3)第3个数字,是再次发行系列的版本号,随每次新分发版本递增,通常是已发行的最新版本。

4)MySQL(Current Generally Available Release)版本已经过严格标准的测试,可以保证其安全可靠的使用。

  • 1.3.3 MySQL优势

1)速度:运行速度快;

2)价格:MySQL对多数人来说是免费的;

3)容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习掌握;

4)可移植性(跨平台):Windows、Linux、UNIX、Mac OS等众多不同的系统平台上使用;

5)丰富的接口:提供了用于C、C++、Java、Perl、PHP、Python、Ruby等语言的API;

6)支持查询语言:MySQL可以利用标准的SQL语法和支持ODBC(开放式数据库连接)的应用程序;

7)安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全;

8)MySQL是网络化的,可以在因特网上的任何地方访问,提高数据共享的效率;

  • 1.3.4 MySQL5.7的新功能

1)支持JSON

  JSON(JavaScript Object Notation的缩写)是一种存储信息的格式,可以很好地替代XML。从MySQL5.7.8版本开始,MySQL将支持JSON。

2)性能和可拓展性

改进InnoDB的可拓展性和临时表的性能,从而实现更快的网络和大数据家在等操作

3)改进复制以提高可用性的性能

改进复制包括多源复制、多从线程增强、在线GTIDs和增强的半同步复制

4)性能模式提供更好的视角

5)安全

6)优化

7)GIS

1.4 MySQL工具

  • 1.4.1 MySQL命令行实用程序

1)mysqld:SQL后台程序(即MySQL服务器进程)。该程序必须运行之后,客户端才能通过连接服务器来访问数据库。

2)mysqld_safe:服务器启动脚本。

3)mysql.server:服务器启动脚本。

4)mysql_multi:服务器启动脚本,可以启动或停止系统上安装的多个服务器

  • 1.4.2 MySQL Workbench

MySQL Workbench是下一代可视化数据库设计软件,功能如下:

1)数据库设计和模型建立

2)SQL开发(取代MySQL Query Browser)

3)数据库管理(取代MySQL Administrator)

MySQL Workbench Community Edition(也叫MySQL Workbench OSS,社区版)

MySQL Workbench Standard Edition(也叫 MySQL Workbench SE,商业版)

1.5 如何学习MySQL

1)培养兴趣(兴趣是最好的老师,不论学习什么知识,兴趣都可以极大的提高学习效率)

2)夯实基础

计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深入,只有有着扎实的基础功底,才能在技术的道路上走的更快、更远。对于MySQL的学习,SQL语句就是其中最为基础的部分。

3)及时学习新知识

搜索引擎、参考他人的解决问题的思路,吸取别人的经验以及获取最新的技术资料

4)多实践操作

数据库系统具有极强的操作性,需要多动手上机操作。

第2章 MySQL的安装与配置

  Windows平台下安装MySQL,可以使用图形化的安装包,它提供了详细的安装向导,读者可一步一步地按照提示完成的MySQL的安装。

2.1 Windows平台下安装与配置MySQL5.7

  • 2.1.1 安装MySQL5.7

  Windows平台下提供两种安装方式:

1)MySQL二进制分发版(.msi安装文件)

2)免安装版.zip压缩文件

一般来讲,应当使用二进制分发版,因为该版本比其他的分发版本使用起来要简单,不需要借助其他工具来启动就可以运行MySQL。

  • 2.1.2 配置MySQL5.7

1)Development Machine(开发机器):该选项代表典型的个人用桌面工作站。假定机器上运行着多个桌面应用程序,将MySQL服务器配置成使用最少的系统资源。

2)Server Machine(服务器):该选项该表服务器,MySQL服务器可以同其他应用程序一起运行,如FTP、Email和Web服务器,MySQL服务器配置成使用适当比例的系统资源

3)Dedicated Machine(专用服务器):该选项代表只运行MySQL服务的服务器。假定没有运行其他服务程序,MySQL服务器配置成使用所有可用的系统资源。

2.2 启动服务并登录MySQL数据库

  MySQL安装完毕之后,需要启动服务器的进程,不然客户端无法连接数据库。客户端通过命令行工具登录数据库。

1)cmd-》net start mysql

2)cmd-》net stop mysql

  • 2.2.1 启动MySQL服务
  • 2.2.2 登录MySQL数据库

1)DOS窗口登录MySQL数据库

2)使用MySQL Commond Line Client登录MySQL

  • 2.2.3 配置Path环境变量

1)解决窗口闪一下消失的问题,复制mysql-default.ini,然后将副本命名为mysql.ini即可。

2.3 MySQL常用图形化管理工具

  MySQL图形化管理工具极大地方便了数据库的操作与管理,常用图形化工具介绍如下:

1)MySQL Workbench

2)phpMyAdmin

3)Navicat for MySQL

4)MySQL Dumper

5)SQLyog

2.4 Linux平台下安装与配置MySQL5.7

  Linux操作系统有众多的发行版,不同平台下需要安装不同的MySQL版本,MySQL主要支持的Linux版本有SUSE Linux enterprise Server和Red Hat&Oracle Enterprise Linux

  • 2.4.1 Linux操作系统下的MySQL版本介绍

  Linux操作系统是自由软件和开放源代码发展中最著名的例子。其诞生以后,经过全世界各地计算机爱好者的共同努力,现已成为今天世界上使用最多的一种“类UNIX”操作系统,目前已经开发超过300个发行版本,比较流行的版本有:Ubuntu、Debian、GNU/Linux、Fedora、openSUSE、和RedHat系列。

  目前MySQL主要支持的Linux版本为SUSE和Red Hat,Linux操作系统下MySQL安装包分为3类

1)RPM:RPM软件包是一种在Linux平台下的安装文件,通过安装命令可很方便地安装与卸载。(RedHat系列),MySQL的RPM安装文件分为两个:服务端和客户端,需分别下载和安装。

2)Generic Binaries:二进制软件包,经过编译生成的二进制文件软件包。

3)源码包:源码包是MySQL数据库的源代码,用户需要自己编译成二进制文件后方可安装。

  • 2.4.2 安装和配置MySQL的RPM包

  MySQL推荐使用RPM包进行Linux平台下的安装,从官方下载的RPM包能够在所有支持RPM packages,glibc2.3的Linux系统下安装和使用

Linux平台下的MySQL安装目录

/usr/bin 客户端和脚本

/usr/sbin MySQLD服务器

/var/lib/mysql 日志文件和数据库

/usr/share/info 信息格式的手册

/usr/share/man UNIX帮助页

/usr/include/mysql 头文件

/usr/lib/mysql 库

/usr/share/mysql 错误消息、字符集、示例配置文件等

mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar解压缩之后如下:

  • mysql-community-client-5.7.13-1.el7.x86_64.rpm#是客户端安装包;
  • mysql-community-common-5.7.13-1.el7.x86_64.rpm#是服务端的安装包;
  • mysql-community-devel-5.7.13-1.el7.x86_64.rpm#是包含开发用的库文件安装的包;
  • mysql-community-embedded-5.7.13-1.el7.x86_64.rpm#是嵌入式MySQL的安装包;
  • mysql-community-embedded-compat-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-embedded-devel-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-libs-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-libs-compat-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-minimal-debuginfo-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-server-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-server-minimal-5.7.13-1.el7.x86_64.rpm;
  • mysql-community-test-5.7.13-1.el7.x86_64.rpm#是一些测试的安装包;

  一般情况下,只需要安装client和server两个包,如需进行C、C++MySQL相关开发,请安装mysql-community-devel-5.7.13-1.el7.x86_64.rpm

安装之前,要查看机器上是否已经装有就办的MySQL,如果有,最好先把旧版MySQL卸载,否则可能产生冲突。

rpm -qa|grep -i mysql

从MySQL5.0开始,MySQL的服务名改为mysql,而不是4.*版本的mysqld

MySQL服务的操作命令是

1)service mysql start|stop|restart|status#CentOS6.X下

2)systemctl start|stop|restart|status mysqld#CentOS7.X下,因为CentOS7系列使用了systemd管理工具

  • 2.4.3 安装和配置MySQL的源码包

  进入下载页面:https://downloads.mysql.com/archives/community/

源码安装需要一些开发工具

1)CMaked(cross platform make),构建程序必需的一个跨平台的构建工具。官方地址:http://www.cmake.org/

2)一个好的make工具,MySQL官方推荐使用GNU make3.75,GNUmake下载地址:http://www.gun.org/software/make/

3)ANSI C++编译器,GCC 4.2.1及以上版本

4)Perl,运行test版本所必需的。

5)rpm包管理器,rpmbuild工具

输入如下命令:

rpmbuild --rebuild --clean MySQL-5.7.20-1.linux2.6.src.rpm,编译完成后会形成一个rpm包,然后按照rpm包的安装方法就可以了。

初级用户,不建议使用源码包进行安装。

2.5 专家解惑

  计算机技术具有很强的操作性,MySQL的安装和配置是一件非常简单的事,但是在操作过程中也可能出现问题,多实践,多总结。

  在安装MySQL5.7软件安装包之前,用户需要确保系统中已经安装了.Net Framework3.5和.Net Framework4.0,如何缺少,将不能正常安装。

2.6 经典习题

1)下载并安装MySQL

2)使用配置向导配置MySQL为系统服务,在系统服务对话框中,手动启动或关闭MySQL服务

3)使用net命令启动或者关闭MySQL服务

4)使用免安装的软件包安装MySQL

第3章 数据库的基本操作

  MySQL安装好之后,首先要“创建数据库实例”,这是使用MySQL各种功能的前提。

3.1 创建数据库

  MySQL安装好之后,将会在data目录之下自动创建几个必须的数据库,可使用SHOW DATABASES;语句来查看。

1)mysql是必须的,它描述用户访问权限;

2)用户经常用test数据库实例做测试工作;

3)创建数据库是在系统磁盘上划分一块区域,用于数据的存储和管理;

MySQL中创建数据库的基本SQL语法格式为:

CREATE DATABASE database_name;

【例3.1】创建测试数据库 test_db;

CREATE DATABASE test_db;

【例3.2】查看创建好的数据库test_db的定义,如下:

SHOW CREATE DATABASE test_db\G;
[root@iZ2ze3eaa380cnnuepvyrwZ ~]# mysql -uroot  -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 45
Server version: 5.7.13 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec) mysql> create database test_db;
Query OK, 1 row affected (0.15 sec) mysql> show create database test_db;
+----------+--------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------+
| test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.03 sec) mysql> show create database test_db\G;
*************************** 1. row ***************************
Database: test_db
Create Database: CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec) ERROR:
No query specified mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.00 sec) mysql>

3.2 删除数据库

  删除数据库是将已存在的数据库从磁盘空间上清除,清除之后,数据库实例中的所有数据也将一同被删除。

1、MySQL中删除数据的基本语法格式为:

DROP DATABASE database_name(数据库实例名);如果不存在,则报错!

【例3.3】删除测试数据库test_db,输入语句如下:

DORP DATABASE test_db;
mysql> drop database test_db;
Query OK, 0 rows affected (0.01 sec) mysql> show create database test_db\G;
ERROR 1049 (42000): Unknown database 'test_db'
ERROR:
No query specified mysql> show create database test_db;
ERROR 1049 (42000): Unknown database 'test_db'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec) mysql>

小结:

1、使用DROP DATABASE命令时要非常谨慎,在执行该命令时,MySQL不会给出任何提示确认信息,DROP DATABASE 声明删除数据库实例后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。

3.3 数据库存储引擎

  数据库存储引擎是数据库底层软件的组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。

  不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,可以获得特定的功能。MySQL数据库的核心就是存储引擎。

  可以通过SHOW ENGINES语句查看系统所支持的引擎类型,结果如下:

mysql> SHOW ENGINES\G;
*************************** 1. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
9 rows in set (0.00 sec) ERROR:
No query specified mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec) mysql>

其中,YES表示可以使用;NO表示不可以;DEFAULT表示引擎为当前默认;

  • 3.3.1 MySQL存储引擎简介

  • 3.3.2 InnoDB存储引擎

  • 3.3.3 MyISAM存储引擎

  • 3.3.4 MEMORY存储引擎

  • 3.3.5 存储引擎的选择

3.4 综合案例——数据库的创建和删除

3.5 专家解惑

3.6 经典习题

第4章 数据表的基本操作

4.1 创建数据表

  • 4.1.1 创建表的语法形式

  • 4.1.2 使用主键约束

  • 4.1.3 使用外键约束

  • 4.1.4 使用非空约束

  • 4.1.5 使用唯一性约束

  • 4.1.6 使用默认约束

  • 4.1.7 设置表的属性值自动增加

4.2 查看数据表结构

  • 4.2.1 查看表基本结构语句DESCRIBE

  • 4.2.2 查看表的详细结构语句SHOW CREATE TABLE

4.3 修改数据表

  • 4.3.1 修改表名

  • 4.3.2 修改字段的数据类型

  • 4.3.3 修改字段名

  • 4.3.4 添加字段

  • 4.3.5 删除字段

  • 4.3.6 修改字段的排列位置

  • 4.3.7 更改表的存储引擎

  • 4.3.8 删除表的外键约束

4.4 删除数据表

  • 4.4.1 删除没有被关联的表

  • 4.4.4 删除被其他表关联的主表

4.5 综合案例——数据表的基本操作

4.6 转接解惑

4.7 经典习题

第5章 数据类型和运算符

5.1 MySQL数据类型介绍

  • 5.1.1 整数类型

  • 5.1.2 浮点数类型和定点数类型

  • 5.1.3 日期与时间类型

  • 5.1.4 文本字符串类型

  • 5.1.5 二进制字符串类型

5.2 如何选择数据类型

5.3 常见运算符介绍

  • 5.3.1 运算符概述

  • 5.3.2 算术运算符

  • 5.3.3 比较运算符

  • 5.3.4 逻辑运算符

  • 5.3.5 位运算符

  • 5.3.6 运算符的优先级

5.4 综合案例——运算符的使用

5.5 专家解惑

5.6 经典习题

第6章 MySQL函数

6.1 MySQL函数简介

6.2 数学函数

  • 6.2.1 绝对值函数ABS(x)和返回圆周率的函数PI()

  • 6.2.2 平方根函数SQRT(x)和求余函数MOD(x,y)

  • 6.2.3 获取整数的函数CEIL(x)、CEILNG(x)和FLOOR(x)

  • 6.2.4 获取随机数的函数RAND()和RAND(x)

  • 6.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

  • 6.2.6 符号函数SIGN(x)

  • 6.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

  • 6.2.8 对数运算函数LOG(x)和LOG10(x)

  • 6.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)

  • 6.2.10 正弦函数SIN(x)和反正弦函数ASIN(x)

  • 6.2.11 余弦函数COS(x)和反余弦函数ACOS(x)

  • 6.2.12 正切函数、反正切函数和余切函数

6.3 字符串函数

  • 6.3.1 计算字符串字符数的函数和字符串长度的函数

  • 6.3.2 合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)

  • 6.3.3 替换字符串的函数INSERT(s1,x,len,s2)

  • 6.3.4 字母大小写转换函数

  • 6.3.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

  • 6.3.6 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

  • 6.3.7删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

  • 6.3.8 删除指定字符串的函数TRIM(s1 FROM s)

  • 6.3.9 重复生成字符串的函数REPEAT(s,n)

  • 6.3.10 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)

  • 6.3.11 比较字符串大小的函数STRCMP(s1,s2)

  • 6.3.12 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)

  • 6.3.13 匹配子串开始位置的函数

  • 6.3.14 字符串逆序的函数REVERSE(s)

  • 6.3.15 返回指定位置的字符串函数

  • 6.3.16 返回指定字符串位置的函数FIELD(s,s1,s2,...)

  • 6.3.17 返回子串位置的函数FIND_IN_SET(s1,s2)

  • 6.3.18 选取字符串的函数MAKE_SET(x,s1,s2,...)

6.4 日期和时间函数

  • 6.4.1 获取当前日期的函数和获取当前时间的函数

  • 6.4.2 获取当前日期和时间的函数

  • 6.4.3 UNIX时间戳函数

  • 6.4.4 返回UTC日期的函数和返回UTC时间的函数

  • 6.4.5 获取月份的函数MONTH(date)和MONTHNAME(date)

  • 6.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)

  • 6.4.7 获取星期数的函数WEEK(d)和WEEKOFYEAR(d)

  • 6.4.8 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d)

  • 6.4.9 获取年份、季度、小时、分钟和秒钟的函数

  • 6.4.10 获取日期的指定值的函数EXTRACT(type FROM date)

  • 6.4.11 时间和秒钟转换的函数

  • 6.4.12 计算日期和时间的函数

  • 6.4.13 将日期和时间格式化的函数

6.5 条件判断函数

  • 6.5.1 IF(expr,v1,v2)函数

  • 6.5.2 IFNULL(v1,v2)

  • 6.5.3 CASE函数

6.6 系统信息函数

  • 6.6.1 获取MySQL版本号、连接数和数据库名的函数

  • 6.6.2 获取用户数的函数

  • 6.6.3 获取字符串的字符集和排序方式的函数

  • 6.6.4 获取最后一个自动生成的ID值的函数

6.7 加/解密函数

  • 6.7.1 加密函数PASSWORD(str)

  • 6.7.2 加密函数MD5(str)

  • 6.7.3 加密函数ENCODE(str,pswd_str)

  • 6.7.4 解密函数DECODE(crypt_str,pswd_str)

6.8 其他函数

  • 6.8.1 格式化函数FORMAT(x,n)

  • 6.8.2 不同进制的数字进行转换的函数

  • 6.8.3 IP地址与数字相互转换的函数

  • 6.8.4 加锁函数和解锁函数

  • 6.8.5 重复执行指定操作的函数

  • 6.8.6 改变字符集的函数

  • 6.8.7 改变数据类型的函数

6.9 综合案例——MySQL函数的使用

6.10 专家解惑

6.11 经典习题

第7章 查询数据

7.1 基本查询语句

7.2 单表查询

  • 7.2.1 查询所有字段

  • 7.2.2 查询指定字段

  • 7.2.3 查询指定记录

  • 7.2.4 带IN关键字的查询

  • 7.2.5 带BETWEEN AND的范围查询

  • 7.2.6 带LIKE的字符匹配查询

  • 7.2.7 查询空值

  • 7.2.8 带AND的多条件查询

  • 7.2.9 带OR的多条件查询

  • 7.2.10 查询结果不重复

  • 7.2.11 对查询结果排序

  • 7.2.12 分组查询

  • 7.2.13 使用LIMIT限制查询结果的数量

7.3 使用聚合函数查询

  • 7.3.1 COUNT()函数

  • 7.3.2 SUM()函数

  • 7.3.3 AVG()函数

  • 7.3.4 MAX()函数

  • 7.3.5 MIN()函数

7.4 连接查询

  • 7.4.1 内连接查询

  • 7.4.2 外连接查询

  • 7.4.3 复合条件连接查询

7.5 子查询

  • 7.5.1 带ANY、SOME关键字的查询

  • 7.5.2 带ALL关键字的查询

  • 7.5.3 带EXISTS关键字的查询

  • 7.5.4 带IN关键字的查询

  • 7.5.6 带比较运算符的子查询

7.6 合并查询结果

7.7 为表和字段取别名

  • 7.7.1 为表取别名

  • 7.7.2 为字段取别名

7.8 使用正则表达式查询

  • 7.8.1 查询以特定字符或字符串开头的记录

  • 7.8.2 查询以特定字符串或字符串结尾的记录

  • 7.8.3 用符号“.”来替代字符串中的任意一个字符

  • 7.8.4 使用“*”和“+”来匹配多个字符

  • 7.8.5 匹配指定字符串

  • 7.8.6 匹配指定字符串的任意一个

  • 7.8.7 匹配指定字符串以外的字符

  • 7.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数

7.9 综合案例——数据表查询操作

7.10 专家解惑

7.11 经典习题

第8章 插入、更新与删除数据

8.1 插入数据

  • 8.1.1 为表的所有字段插入数据

  • 8.1.2 为表的指定字段插入数据

  • 8.1.3 同时插入多条记录

  • 8.1.4 将查询结果插入到表中

8.2 更新数据

8.3 删除数据

8.4 综合案例——记录的插入、更新和删除

8.5 专家解惑

8.6 经典习题

第9章 索引

9.1 索引简介

  • 9.1.1 索引的含义和特点

  • 9.1.2 索引的分类

  • 9.1.3 索引的设计原则

9.2 创建索引

  • 9.2.1 创建表的时候创建索引

  • 9.2.2 在已经存在的表上创建索引

9.3 删除索引

9.4 综合案例——创建索引

9.5 专家解惑

9.6 经典习题

第10章 存储过程和函数

10.1 创建存储过程和函数

  • 10.1.1 创建存储过程

  • 10.1.2 创建存储函数

  • 10.1.3 变量的使用

  • 10.1.4 定义条件和处理程序

  • 10.1.5 光标的使用

  • 10.1.6 流程控制的使用

10.2 调用存储过程和函数

  • 10.2.1 调用存储过程

  • 10.2.2 调用存储函数

10.3 查看存储过程和函数

  • 10.3.1 使用SHOW STATUS语句查看存储过程和函数的状态

  • 10.3.2 使用SHOW CREATE语句查看存储过程和函数的定义

  • 10.3.3 从information_schema.Routines 表中查看存储过程和函数的信息

10.4 修改存储过程和函数

10.5 删除存储过程和函数

10.6 综合案例——创建存储过程和函数

10.7 专家解惑

10.8 经典习题

第11章 视图

11.1 视图概述

  • 11.1.1 视图的含义

  • 11.1.2 视图的作用

11.2 创建视图

  • 11.2.1 创建视图的语法形式

  • 11.2.2 在表单上创建视图

  • 11.2.3 在多表上创建视图

11.3 查看视图

  • 11.3.1 使用DESCRIBE语句查看视图基本信息

  • 11.3.2 使用SHOW TABLE STATUS语句查看视图基本信息

  • 11.3.3 使用SHOW CREATE VIEW语句查看视图详细信息

  • 11.3.4 在views表中查看视图详细信息

11.4 修改视图

  • 11.4.1 使用CREATE OR REPLACE VIEW语句修改视图

  • 11.4.2 使用ALTER语句修改视图

11.5 更新视图

11.6 删除视图

11.7 综合案例——视图应用

11.8 专家解惑

11.9 经典习题

第12章 MySQL触发器

12.1 创建触发器

  • 12.1.1 创建只有一个执行语句的触发器

  • 12.1.2 创建有多个执行语句的触发器

12.2 查看触发器

  • 12.2.1 SHOW TRIGGERS语句查看触发器信息

  • 12.2.2 在triggers表中查看触发器信息

12.3 触发器的作用

12.4 删除触发器

12.5 综合案例——触发器的作用

12.6 专家解惑

12.7 经典习题

第13章 MySQL用户管理

13.1 权限表

  • 13.1.1 user表

  • 13.1.2 db表和host表

  • 13.1.3 tables_priv表和columns_priv表

  • 13.1.4 procs_priv表

13.2 账户管理

  • 13.2.1 登录和退出MySQL服务器

  • 13.2.2 新建普通用户

  • 13.2.3 删除普通用户

  • 13.2.4 root用户修改自己的密码

  • 13.2.5 root用户修改普通用户的密码

  • 13.2.6 普通用户修改密码

  • 13.2.7 root用户密码丢失的解决办法

13.3 权限管理

  • 13.3.1 MySQL的各种权限

  • 13.3.2 授权

  • 13.3.3 收回权限

  • 13.3.4 查看权限

13.4 访问控制

  • 13.4.1 连接核实阶段

  • 13.4.2 请求核实阶段

13.5 综合案例——综合管理用户权限

13.6 专家解惑

13.7 经典习题

第14章 数据备份与恢复

14.1 数据备份

  • 14.1.1 使用MySQLdump命令备份

  • 14.1.2 直接复制整个数据库目录

  • 14.1.3 使用MySQLhotcopy工具快速备份

14.2 数据恢复

  • 14.2.1 使用MySQL命令恢复

  • 14.2.2 直接复制到数据库目录

  • 14.2.3 MySQLhotcopy快速恢复

14.3 数据库迁移

  • 14.3.1 相同版本的MySQL数据库之间的迁移

  • 14.3.2 不同版本的MySQL数据库之间的迁移

  • 14.3.3 不同数据库之间的迁移

14.4 表的导出和导入

  • 14.4.1 使用SELECT...INT OUTFILE导出文本文件

  • 14.4.2 使用MySQLdump命令导出文本文件

  • 14.4.3 使用MySQL命令导出文本文件

  • 14.4.4 使用LOAD DATA INFILE方式导入文本文件

  • 14.4.5 使用MySQLimport命令导入文本文件

14.5 综合案例——数据备份与恢复

14.6 专家解惑

14.7 经典习题

第15章 MySQL日志

15.1 日志简介

15.2 二进制日志

  • 15.2.1 启动和设置二进制日志

  • 15.2.2 查看二进制日志

  • 15.2.3 删除二进制日志

  • 15.2.4 使用二进制日志恢复数据库

  • 15.2.5 暂时停止二进制日志功能

15.3 错误日志

  • 15.3.1 启动和设置错误日志

  • 15.3.2 查看错误日志

  • 15.3.3 删除错误日志

15.4 通用查询日志

  • 15.4.1 启动和设置通用查询日志

  • 15.4.2 查看通用查询日志

  • 15.4.3 删除通用查询日志

15.5 慢查询日志

  • 15.5.1 启动和设置慢查询日志

  • 15.5.2 查看慢查询日志

  • 15.5.3 删除慢查询日志

15.6 综合案例——MySQL日志综合管理

15.7 专家解惑

15.8 经典习题

第16章 性能优化

16.1 优化简介

16.2 优化查询

  • 16.2.1 分析查询语句

  • 16.2.2 索引对查询速度的影响

  • 16.2.3 使用索引查询

  • 16.2.4 优化子查询

16.3 优化数据库结构

  • 16.3.1 将字段很多的表分解成多个表

  • 16.3.2 增加中间表

  • 16.3.3 增加冗余字段

  • 16.3.4 优化插入记录的速度

  • 16.3.5 分析表、检查表和优化表

16.4 优化MySQL服务器

  • 16.4.1 优化服务器硬件

  • 16.4.2 优化MySQL的参数

16.5 综合案例——全面优化MySQL服务器

16.6 专家解惑

16.7 经典习题

第17章 MySQL Replication

17.1 MySQL Replication概述

17.2 Windows环境下的MySQL主从复制

  • 17.2.1 复制前的准备工作

  • 17.2.2 Windows环境下实现主从复制

  • 17.2.3 Windows环境下主从复制测试

17.3 Linux环境下的MySQL复制

  • 17.3.1 下载并安装MySQL5.7

  • 17.3.2 单击主从复制前的准备工作

  • 17.3.3 MySQLd_multi实现单机主从复制

  • 17.3.4 不同服务器之间实现主从复制

  • 17.3.5 MySQL主从复制启动选项

  • 17.3.6 指定复制的数据库或者表

17.4 查看Slave的复制进度

17.5 日常管理维护

  • 17.5.1 了解服务器的状态

  • 17.5.2 服务器复制出错的原因

17.6 切换主从服务器

17.7 专家解惑

17.8 经典习题

第18章 MySQL Workbench的使用

18.1 MySQL Workbench的概述

  • 18.1.1 MySQL Workbench的概述

  • 18.1.2 MySQL Workbench的优势

  • 18.1.3 MySQL Workbench的安装

18.2 SQL Development的基本操作

  • 18.2.1 创建数据库连接

  • 18.2.2 创建新的数据库

  • 18.2.3 创建和删除新的数据表

  • 18.2.4 添加、修改表记录

  • 18.2.5 查询表记录

  • 18.2.6 修改表结构

18.3 Data Modeling的基本操作

  • 18.3.1 建立ER模型

  • 18.3.2 导入ER模型

18.4 Server Administration的基本操作

  • 18.4.1 管理MySQL用户

  • 18.4.2 备份MySQL数据库

  • 18.4.3 恢复MySQL数据库

18.5 专家解惑

18.6 经典习题

第19章 MySQL Cluster

19.1 MySQL Cluster概述

  • 19.1.1 MySQL Cluster基本概念

  • 19.1.2 理解MySQL Cluster节点

19.2 Linux环境下MySQL Cluster安装和配置

  • 19.2.1 安装MySQL Cluster软件

  • 19.2.2 管理节点配置步骤

  • 19.2.3 配置SQL节点和数据节点

19.3 管理MySQL Cluster

  • 19.3.1 Cluster的启动

  • 19.3.2 Cluster的测试

  • 19.3.3 Cluster的关闭

19.4 维护MySQL Cluster

  • 19.4.1 Cluster的日志管理

  • 19.4.2 Cluster的联机备份

  • 19.4.3 Cluster的数据恢复

19.5 Windows操作系统中配置Cluster

19.6 专家解惑

19.7 经典习题

第20章 MySQL管理利器——MySQL Utilities

20.1 MySQL Utilities概述

20.2 安装与配置

  • 20.2.1 下载与安装MySQL Utilities

  • 20.2.2 MySQL Utilities连接数据库

20.3 管理与维护

  • 20.3.1 使用mysqldbcompare比较数据

  • 20.3.2 使用mysqldbcopy复制数据

  • 20.3.3 使用mysqldbexport导出数据

  • 20.3.4 使用mysqldbimport导入数据

  • 20.3.5 使用mysqldiff比较对象的定义

20.4 专家解惑

20.5 经典习题

第21章 读写分离利器——MySQL Proxy

21.1 概述

21.2 安装与配置

  • 21.2.1 下载与安装MySQL Proxy

  • 21.2.2 配置MySQL Proxy参数

  • 21.2.3 配置Path变量

21.3 使用MySQL Proxy实现读写分离

21.3 专家解惑

21.4 经典习题

第22章 PHP操作MySQL数据库

22.1 PHP访问MySQL数据的一般步骤

22.2 连接数据库前的准备工作

22.3 PHP操作MySQL数据库的函数

  • 22.3.1 通过MySQLi类库访问MySQL数据库

  • 22.3.2 使用MySQLi_connect()函数连接MySQL服务器

  • 22.3.3 使用MySQLi_select_db()函数选择数据库文件

  • 22.3.4 使用MySQLi_query()函数执行SQL语句

  • 22.3.5 使用MySQLi_fetch_assoc()函数从数组结果集中获取信息

  • 22.3.6 使用MySQLi_fetch_object()函数从结果中获取一行作为对象

  • 22.3.7 使用MySQLi_num_rows()函数获取查询结果集中的记录数

  • 22.3.8 使用MySQLi_free_result()函数释放资源

  • 22.3.9 使用MySQLi_close()函数关闭连接

22.4 综合案例1——使用insert语句动态添加用户信息

22.5 综合案例2——使用select语句查询数据信息

22.6 专家解惑

22.7 经典习题

第23章 新闻发布系统数据库设计

23.1 系统概述

23.2 系统功能

23.3 数据库设计和实现

  • 23.3.1 设计表

  • 23.3.2 设计索引

  • 23.3.3 设计视图

  • 23.3.4 设计触发器

23.4 案例总结

第24章 论坛管理系统数据库设计

24.1 系统概述

24.2 系统功能

24.3 数据库设计和实现

  • 24.3.1 设计方案图表

  • 24.3.2 设计表

  • 24.3.3 设计索引

  • 24.3.4 设计视图

  • 24.3.5 设计触发器

24.4 案例总结

MySQL5.7从入门到精通 (视频教学版) 刘增杰 编著的更多相关文章

  1. 《MySQL5.7从入门到精通(视频教学版)》

    · 一:书籍PDF获取途径 pdf 文档 在 此QQ群(668345923) 的群文件里面 学习视频资源 二:书籍介绍 本书主要包括MySQL的安装与配置.数据库的创建.数据表的创建.数据类型和运算符 ...

  2. 基于股票大数据分析的Python入门实战(视频教学版)的精彩插图汇总

    在我写的这本书,<基于股票大数据分析的Python入门实战(视频教学版)>里,用能吸引人的股票案例,带领大家入门Python的语法,数据分析和机器学习. 京东链接是这个:https://i ...

  3. 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF

    1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载  链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...

  4. 2015年新版C#从入门到精通(第2版)视频教学录像【无水印版】

    <c#从入门到精通(第2版)>以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了c#的相关知识和实战技能.<c#从入门到精通(第2版)>第1篇[c#语言基础]主要讲解c# ...

  5. Python从入门到精通视频(全60集) ☝☝☝

    Python从入门到精通视频(全60集) Python入门到精通 学习 教程 首先,课程的顺序需要调整:一和三主要是介绍学习和布置开发环境的,一介绍的是非VS开发,三介绍的是VS开发.VS2017现在 ...

  6. Python从入门到精通视频(全60集)✍✍✍

    Python从入门到精通视频(全60集)  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看 ...

  7. HTML5+CSS3从入门到精通 中文pdf版​

    HTML5+CSS3从入门到精通是通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于专业指南.高级程序设计.开发指南同类图书,本书是一本适合快速入手的 ...

  8. 《PHP 5.5从零開始学(视频教学版)》内容简单介绍、文件夹

    <PHP 5.5从零開始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零開始学(视频教学版 ...

  9. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一1.3 小结

    本节书摘来自异步社区<LabVIEW 虚拟仪器程序设计从入门到精通(第二版)>一书中的第1章,第1.3节,作者 林静 , 林振宇 , 郑福仁,更多章节内容可以访问云栖社区"异步社 ...

随机推荐

  1. iOS 应用架构 (一)

    摘要:iOS 客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题,本文是其中的第一篇,主要讲架构设计的通识和方法论等,同时还讨论了大家关心 ...

  2. 使用PowerShell 获取azure image publisher offer sku 信息

    使用azure powershell 获取指定区域的可用镜像 publisher offer sku信息 param ( [parameter(Mandatory = $false)] $Locati ...

  3. uvm_reg_predictor——寄存器模型(十七)

    这是寄存器模型类中唯一派生自uvm_component的类,我们的寄存器模式需要实时,以最接近的方式知道DUT中寄存器的变化,uvm_reg_predictor就是为这个而生的. // TITLE: ...

  4. Linux下安装并配置SSH服务

    一.使用命令检测Linux系统上是否已经安装了SSH服务:(命令:rpm -qa |grep ssh) 二.如果没有安装SSH软件包,可以通过yum 或rpm安装包进行安装(命令:yum instal ...

  5. Modelsim与Simulink协同仿真

    当使用硬件描述语言(HDL)完成电路设计时,往往需要编写Testbench对所设计的电路进行仿真验证,测试设计电路的功能是否与预期的目标相符.而编写Testbench难度之大,这时可以借助交互式图形化 ...

  6. 【TensorFlow入门完全指南】神经网络篇·卷积神经网络

    加载数据集. 这里的keep_prob是dropout的一个参数.dropout是一种随机置零的策略,用来防止模型过拟合. 这里定义两层,上面是卷积层,下面是池化层. 搭建了一层卷积.一层池化.一层卷 ...

  7. lastlog命令

    lastlog——检查某特定用户上次登录的时间 命令所在路径:/usr/bin/lastlog 示例1: # lastlog 列出所有用户,并显示用户最后一次登录的时间等信息 示例2: # lastl ...

  8. java面试题(杨晓峰)---第五讲String、StringBuffer、StringBuilder有什么区别?

    线程 字符 操作频繁度 1 String (1)String的创建机制 由于String在java世界中使用过于频繁,java为了避免在一个系统中产生大量重复的String对象,引入了字符串常量池,其 ...

  9. 【转】Deactivating your reflector

    原文:http://blog.csdn.net/cxwl3sxl/article/details/8072195 背景: 因为想破解一个.net写的程序,需要在visual studio 2010中使 ...

  10. C# 使用Epplus导出Excel [4]:合并指定行

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...