第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_dbG;
[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_dbG; *************************** 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_dbG; 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 ENGINESG; *************************** 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 案例总结