[Mysql] CASE表达式

1.引言

导入数据

DROP TABLE IF EXISTS staff_situation; 
CREATE TABLE staff_situation( 
company VARCHAR(8), 
gender VARCHAR(8), 
num INT 
) 
ENGINE = InnoDB 
DEFAULT CHARSET = utf8; 
INSERT INTO 
staff_situation (company,gender,num) 
VALUE ('A','male',163) 
,('A','female',142) 
,('B','male',98) 
,('B','female',116) 
,('C','male',234) 
,('C','female',196);

staff_situation表(员工情况表)

该表记录了不同公司、不同性别的员工人数,接下来需要统计该表的信息,输出如下结果:

如果没有学过CASE WHEN,可以考虑使用多表连接,分别统计男性和女性数据,然后将这些数据连接在一起,得到最终结果

SELECT m.company, m.num_male, f.num_female 
FROM (SELECT company, SUM(num) AS num_male 
      FROM staff_situation 
      WHERE gender = 'male' 
      GROUP BY company) AS m 
INNER JOIN (SELECT company, SUM(num) AS num_female 
            FROM staff_situation 
            WHERE gender = 'female' 
            GROUP BY company) AS f 
ON m.company = f.company;

接下来使用CASE WHEN替换上面的代码:

SELECT company, 
       SUM(CASE WHEN gender='male' THEN num ELSE 0 END) AS num_male,
       SUM(CASE WHEN gender='female' THEN num ELSE 0 END) AS num_female 
FROM staff_situation 
GROUP BY company;

通过对比发现,在合适的情况下灵活使用CASE WHEN可以减少SQL代码的书写量

使用CASE表达式的情况:当需要根据一些字段的值生成新的列或者逻辑判断较为复杂时,可能会使用CASE WHEN

CASE表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支

在对SELECT语句的结果进行编辑时,CASE表达式能够发挥较大作用

2.CASE表达式类型

CASE WHEN通常可以分为简单CASE表达式搜索CASE表达式

2.1简单CASE表达式

简单CASE表达式的语法结构:

CASE <表达式>
     WHEN <值1> THEN <结果1>
     WHEN <值2> THEN <结果2>
     ...
     ELSE <结果n>
END

通过类比编程语言中的IF条件分支语句结构,当<表达式>的值为<值1>时,输出结果<结果1>,当<表达式>的值为<值2>时,输出结果<结果2>,以此类推。当不满足以上所有条件时,输出默认的<结果n>

案例

导入数据

DROP TABLE IF EXISTS personnel_info; 
CREATE TABLE personnel_info( 
personnel_id VARCHAR(8), 
personnel_gender VARCHAR(8) 
) 
ENGINE = InnoDB
DEFAULT CHARSET = utf8; 
INSERT INTO 
personnel_info (personnel_id,personnel_gender) 
VALUE ('p001','male') 
,('p002','female') 
,('p003','female') 
,('p004','male') 
,('p005','female');

personnel_info表(人员信息表)

personnel_id: 人员ID

personnel_gender: 人员性别

问题:使用SQL将人员的性别字段值进行编码,以0表示female,以1表示male

SELECT personnel_id,
       CASE personnel_gender 
            WHEN 'female' THEN '0' 
            WHEN 'male' THEN '1' 
            ELSE '未知' 
       END AS personnel_gender 
FROM personnel_info;

结果展示:

上述代码相当于使用简单CASE WHEN语句新生成了一列编码字段,在SELECT之后使用CASE WHEN语句,相当于将整个CASE WHEN作为一个新生成的字段

2.2搜索CASE表达式

搜索CASE表达式的语法结构:

CASE WHEN <表达式 = 值1> THEN <结果1>
     WHEN <表达式 = 值2> THEN <结果2>
     ...
     ELSE <结果n>
END

搜索CASE表达式会从最初的WHEN子句中的<表达式 = 值1>进行求值,如果结果为真(TRUE),那么就返回THEN子句中的<结果1>,CASE表达式的执行到此为止;如果结果不为真(FALSE),那么就跳转到下一条WHEN子句的求值之中; 如果直到最后的WHEN子句为止,返回结果都不为真,那么就会返回ELSE中的<结果n>,执行终止

结合上述案例,使用搜索CASE表达式替代简单CASE表达式,其代码如下所示:

SELECT personnel_id,
       CASE WHEN personnel_gender = 'female' THEN '0' 
            WHEN personnel_gender = 'male' THEN '1' 
            ELSE '未知' 
       END AS personnel_gender 
FROM personnel_info;

对于使用简单CASE表达式难以完成的情况,使用搜索CASE表达式则很方便

问题: 针对下述公式,根据提供的x值求解相对应的y值

导入数据

DROP TABLE IF EXISTS func_expression; 
CREATE TABLE func_expression( 
x INT 
) 
ENGINE = InnoDB 
DEFAULT CHARSET = utf8; 
INSERT INTO 
func_expression (x) 
VALUE (-3),(-2),(-1),(0),(1),(2),(3);

func_expression表

在上述func_expression表中,x的取值分别为-3,-2,-1,0,1,2,3

SELECT x,
       CASE WHEN x<-1 THEN x+1 
            WHEN x>=-1 THEN 2*x 
            ELSE 0 
       END AS y 
FROM func_expression;

结果展示 :

搜索CASE表达式可以实现和简单CASE表达式所实现的相同效果,一般推荐使用搜索CASE表达式

搜索CASE表达式包含了简单CASE表达式的全部功能

简单CASE表达式比搜索CASE表达式简单,但是会受到条件的约束,因此通常情况下都会使用搜索CASE表达式

3.CASE表达式注意点

1.养成写ELSE子句的习惯

ELSE子句指定了应该如何处理不满足WHEN子句中的条件的记录,ELSE子句也可以省略不写,与END不同,ELSE子句是可选的,不写也不会出错(但还是希望别省略)

如果CASE表达式里没有明确指定ELSE子句,执行结果会被默认地处理成 ELSE NULLCASE表达式的执行结果是NULL

虽然ELSE子句可以省略不写,但是不写可能会造成“语法没有错误,结果却不对”这种不易追查原因的麻烦,所以最好明确地写上ELSE子句(即便是在结果可以为NULL的情况下)

2.不要忘了写END

CASE表达式中的END不能省略

3.使用WHEN子句时要注意条件的排他性

在编写SQL语句的时候需要注意,在发现为真的WHEN子句时,CASE表达式的真假值判断就会中止,而剩余的WHEN子句会被忽略,为了避免引起不必要的混乱,使用WHEN子句时要注意条件的排他性

4.统一各分支返回的数据类型

4.案例练习

案例1:在UPDATE语句里进行条件分支

导入数据

DROP TABLE IF EXISTS `salaries`;
CREATE TABLE `salaries`  (
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `salary` decimal(10, 2) DEFAULT NULL,
  PRIMARY KEY (`name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `salaries` VALUES ('Harry', 220000.00);
INSERT INTO `salaries` VALUES ('Jack', 270000.00);
INSERT INTO `salaries` VALUES ('Lee', 290000.00);
INSERT INTO `salaries` VALUES ('Odin', 300000.00);

salaries表

问题:假设现在需要根据以下条件对该表的数据进行更新

1.对当前工资为30万日元以上的员工,降薪10%

2.对当前工资为25万日元以上且不满28万日元的员工,加薪20%

-- 用CASE表达式写正确的更新操作 
UPDATE Salaries 
SET salary = CASE WHEN salary >= 300000 THEN salary * 0.9 
                  WHEN salary >= 250000 AND salary < 280000 THEN salary * 1.2 
                  ELSE salary 
             END;

结果展示:

案例2:主键值调换

导入数据

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `p_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `col_1` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `col_2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `test` VALUES ('a', '1', '一');
INSERT INTO `test` VALUES ('b', '2', '二');
INSERT INTO `test` VALUES ('c', '3', '三');

test表

问题:调换主键值a和b

-- 方法1:不用CASE表达式
-- 将a转换为中间值d 
UPDATE test
SET p_key = 'd' 
WHERE p_key = 'a'; 
-- 将b调换为a 
UPDATE test 
SET p_key = 'a'
WHERE p_key = 'b'; 
-- 将d调换为b 
UPDATE test
SET p_key = 'b' 
WHERE p_key = 'd';

-- 方法2:使用CASE表达式
-- 用CASE表达式调换主键值 
UPDATE test 
SET p_key = CASE WHEN p_key = 'a' THEN 'b' 
                 WHEN p_key = 'b' THEN 'a' 
                 ELSE p_key 
            END 
WHERE p_key IN('a', 'b');

结果展示: 

案例3:表之间的数据匹配

在CASE表达式里,我们可以使用BETWEEN、LIKE和 <、 > 等便利的谓词组合,以及能嵌套子查询的IN和EXISTS 谓词,CASE表达式具有非常强大的表达能力

导入数据

DROP TABLE IF EXISTS `coursemaster`;
CREATE TABLE `coursemaster`  (
  `course_id` int(11) NOT NULL,
  `course_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`course_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `coursemaster` VALUES (1, '会计入门');
INSERT INTO `coursemaster` VALUES (2, '财务知识');
INSERT INTO `coursemaster` VALUES (3, '薄记考试');
INSERT INTO `coursemaster` VALUES (4, '税务师');

DROP TABLE IF EXISTS `opencourses`;
CREATE TABLE `opencourses`  (
  `month` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `course_id` int(11) DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `opencourses` VALUES ('200706', 1);
INSERT INTO `opencourses` VALUES ('200706', 3);
INSERT INTO `opencourses` VALUES ('200706', 4);
INSERT INTO `opencourses` VALUES ('200707', 4);
INSERT INTO `opencourses` VALUES ('200708', 2);
INSERT INTO `opencourses` VALUES ('200708', 4);

coursemaster表

opencourses表

问题:用上述两张表来生成下面这样的交叉表,以便于一目了然地知道每个月开设的课程(检查表opencourses中的各月里有表coursemaster中的哪些课程)

-- 表的匹配:使用IN谓词 
SELECT course_name, 
       CASE WHEN course_id IN(SELECT course_id FROM opencourses WHERE month = 200706) THEN '○' ELSE '×' END AS "6 月", 
       CASE WHEN course_id IN(SELECT course_id FROM opencourses WHERE month = 200707) THEN '○' ELSE '×' END AS "7 月", 
       CASE WHEN course_id IN(SELECT course_id FROM opencourses WHERE month = 200708) THEN '○' ELSE '×' END AS "8 月" 
FROM coursemaster;

结果展示:

案例4:将已有编号方式转换为新的方式并统计

导入数据

DROP TABLE IF EXISTS `populations`;
CREATE TABLE `populations`  (
  `place_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `population` int(255) DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `populations` VALUES ('深圳', 100);
INSERT INTO `populations` VALUES ('广州', 200);
INSERT INTO `populations` VALUES ('珠海', 150);
INSERT INTO `populations` VALUES ('中山', 200);
INSERT INTO `populations` VALUES ('合肥', 300);
INSERT INTO `populations` VALUES ('马鞍山', 100);
INSERT INTO `populations` VALUES ('芜湖', 200);
INSERT INTO `populations` VALUES ('台州', 400);
INSERT INTO `populations` VALUES ('上海', 50);

populations表

转换成如下:

-- 方法1
-- 这里的关键在于将SELECT子句里的CASE表达式复制到GROUP BY子句里
-- 必须在SELECT子句和GROUP BY子句这两处写一样的CASE表达式
SELECT CASE place_name 
       WHEN '深圳' THEN '广东' 
       WHEN '广州' THEN '广东' 
       WHEN '珠海' THEN '广东' 
       WHEN '中山' THEN '广东' 
       WHEN '合肥' THEN '安徽' 
       WHEN '马鞍山' THEN '安徽' 
       WHEN '芜湖' THEN '安徽' 
       ELSE '其他' END AS 地区名, 
SUM(population) AS 人口
FROM populations
GROUP BY  CASE place_name 
          WHEN '深圳' THEN '广东' 
          WHEN '广州' THEN '广东' 
          WHEN '珠海' THEN '广东' 
          WHEN '中山' THEN '广东' 
          WHEN '合肥' THEN '安徽' 
          WHEN '马鞍山' THEN '安徽' 
          WHEN '芜湖' THEN '安徽' 
          ELSE '其他' END; 

-- 方法2(对方法1简化)
-- 这里的GROUP BY子句使用的是SELECT子句里定义的列的别称——地区名
SELECT CASE place_name 
       WHEN '深圳' THEN '广东' 
       WHEN '广州' THEN '广东' 
       WHEN '珠海' THEN '广东' 
       WHEN '中山' THEN '广东' 
       WHEN '合肥' THEN '安徽' 
       WHEN '马鞍山' THEN '安徽' 
       WHEN '芜湖' THEN '安徽' 
       ELSE '其他' END AS 地区名, 
SUM(population) AS 人口
FROM populations
GROUP BY  地区名;

结果展示:

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
内容提要 本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的过程,以及SQL语法、工具、选项、API应用指南,最大限度地帮助读者更快地学习和掌握MySQL数据库系统的设计和使用。本书覆盖了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。 本书是MySQL数据库管理员和开发人员的必备参考书。 目录 第一部分 入门  第1章 什么是MySQL   1.1 什么是数据库   1.2 MySQL   1.3 MySQL的不足   1.4 MySQL的版本编号   1.5 MySQL的许可证   1.6 MySQL软件的替代品   1.7 小结  第2章 测试环境   2.1 是Windows还是UNIX/Linux   2.2 在Windows系统上安装MySQL和相关软件   2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件   2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件   2.5 编译MySQL软件的开发者版本(Linux)   2.6 配置Apache   2.7 配置PHP   2.8 配置MySQL  第3章 初级案例研究:MySQL+PHP   3.1 概述   3.2 数据库的开发   3.3 调查问卷   3.4 问卷调查结果的处理和显示   3.5 改进意见 第二部分 管理工具和用户操作界面  第4章 mysqlmysqladmin和mysqldump   4.1 mysql   4.2 mysqladmin   4.3 mysqldump  第5章 MySQL Administrator和MySQL Query Browser   5.1 安装   5.2 与MySQL服务器建立连接   5.3 MySQL Administrator   5.4 MySQL Query Browser  第6章 phpMyAdmin   6.1 phpMyAdmin的安装与配置   6.2 用户管理,保护MySQL   6.3 创建和编辑数据库   6.4 查看、插入和编辑数据   6.5 执行SQL命令   6.6 导入和导出   6.7 服务器管理   6.8 辅助功能  第7章 Microsoft Office和OpenOffice/StarOffice   7.1 安装Connector/ODBC   7.2 Microsoft Access   7.3 Microsoft Excel   7.4 安装Connector/J   7.5 OpenOffice/StarOffice Base   7.6 OpenOffice/StarOffice的Data Source视图 第三部分 基础知识  第8章 数据库设计概论   8.1 参考读物   8.2 数据表类型   8.3 MySQL数据类型   8.4 数据库设计技巧   8.5 规范化   8.6 层次关系的处理   8.7 关系   8.8 主键和外键   8.9 索引   8.10 视图   8.11 示例数据库mylibrary(图书管理)   8.12 示例数据库myforum(网上论坛)   8.13 示例数据库exceptions(用于特殊情况的测试)  第9章 SQL语言入门   9.1 简介   9.2 简单查询(SELECT)   9.3 对查询结果进行排序(ORDER BY)   9.4 筛选数据记录(WHERE,HAVING)   9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN)   9.6 合并查询结果(UNION)   9.7 分组查询,统计函数(GROUP BY)   9.8 修改数据(INSERT、UPDATE和DELETE)   9.9 创建数据表、数据库和索引  第10章 SQL解决方案   10.1 字符串   10.2 日期和时间   10.3 ENUM和SET数据类型   10.4 变量与条件表达式(IF、CASE)   10.5 在数据表间复制数据   10.6 统计报表   10.7 子查询   10.8 保证数据的一致性   10.9 找出冗余的数据记录   10.10 数据表设计方案的改进   10.11 对前n条或后n条记录进行处理   10.12 以随机方式选择数据记录   10.13 全文索引   10.14 锁定   10.15 事务  第11章 访问权限与信息安全   11.1 简介   11.2 急救   11.3 访问控制机制的内部工作原理   11.4 访问权限的设置工具   11.5 MySQL 4.1版本开始的安全密码验证   11.6 建立连接的问题   11.7 系统安全性  第12章 GIS函数   12.1 GIS数据格式   12.2 MySQL的GIS实现   12.3 SQL示例(冰川数据库)   12.4 SQL示例(opengeodb数据库)  第13章 存储过程和触发器   13.1 为什么要使用存储过程和触发器   13.2 初识SP   13.3 SP的实现   13.4 SP的管理   13.5 SP的语法和语言元素   13.6 SP应用示例   13.7 触发器  第14章 管理与服务器配置   14.1 基础知识   14.2 备份   14.3 数据库的迁移   14.4 导出和导入文本文件   14.5 日志   14.6 镜像机制   14.7 管理MyISAM数据表   14.8 InnoDB数据表的管理   14.9 MySQL服务器的优化   14.10 ISP数据库管理 第四部分 程序设计  第15章 PHP   15.1 mysql功能模块   15.2 mysqli的类、方法和属性   15.3 把数据库功能打包为一个类   15.4 把SELECT查询结果显示为一个表格   15.5 字符串、日期、时间、BLOB和NULL   15.6 向关联数据表插入新数据记录   15.7 处理来自HTML表单的输入数据   15.8 分页显示查询结果   15.9 处理层次化数据   15.10 速度优化   15.11 Unicode   15.12 二进制数据(BLOB)和图像   15.13 存储过程   15.14 SP Administrator  第16章 Perl   16.1 编程技巧   16.2 示例:删除无效的数据记录(mylibrary)   16.3 CGI示例:图书管理(mylibrary)   16.4 CGI Unicode示例  第17章 Java(JDBC和Connector/J)   17.1 基础知识   17.2 程序设计技巧  第18章 C语言   18.1 MySQL C API(libmysqlclient)   18.2 Hello,World   18.3 与MySQL服务器建立连接   18.4 执行SQL命令   18.5 处理二进制数据和特殊字符   18.6 出错处理  第19章 Visual Basic 6/VBA   19.1 基础知识和术语   19.2 Connector/ODBC选项   19.3 ADO程序设计与Visual Basic 6/VBA   19.4 与MySQL服务器建立连接   19.5 转换器:从Microsoft SQL Server到MySQL   19.6 VBMySQLDirect  第20章 Visual Basic .NET和C#   20.1 ADO .NET与MySQL之间的通信   20.2 编程技巧   20.3 示例:把新图书记录存入mylibrary数据库   20.4 示例:把图像文件存入和读出一个BLOB数据列 第五部分 参考资料  第21章 SQL语法指南   21.1 语法   21.2 操作符   21.3 变量和常数   21.4 MySQL数据类型   21.5 SQL命令汇总表(按功能分类)   21.6 SQL命令指南(按字母表顺序排列)   21.7 SQL函数指南   21.8 GIS数据类型与GIS函数   21.9 与存储过程和触发器有关的语言元素  第22章 MySQL工具和选项   22.1 概述   22.2 通用选项和配置文件   22.3 mysqld程序(服务器)   22.4 mysqld_safe脚本(启动MySQL服务器)   22.5 mysql_install_db脚本(安装mysql数据库)   22.6 mysql_fix_privileges脚本(更新mysql数据库)   22.7 mysql_fix_extensions脚本(重命名MyISAM文件)   22.8 mysql程序(SQL命令解释器)   22.9 mysqladmin程序(日常管理)   22.10 mysqldump程序(数据的备份/导出)   22.11 mysqlimport程序(文本导入、批量导入)   22.12 mysqlshow程序(查看信息)   22.13 myisamchk程序(修复MyISAM文件)   22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南   23.1 PHP API(mysql接口)   23.2 PHP API(mysqli接口)   23.3 Perl DBI   23.4 JDBC(Connector/J)   23.5 ADO .NET(Connector/Net)   23.6 C API 第六部分 附录  附录A 术语解释  附录B 本书的配套示例文件  附录C 参考书目
├第一天视频,网盘文件,永久连接 01.MySQL高级课程内容介绍.mp4 02.MySQL高级Linux上安装MySQL.avi 03.MySQL高级启动及登录MySQL.avi 04.MySQL高级索引概述.avi 05.MySQL高级索引优势和劣势.avi 06.MySQL高级索引数据结构.avi 07.MySQL高级索引数据结构BTREE.avi 08.MySQL高级索引数据结构B+TREE.avi 09.MySQL高级索引索引分类.avi 10.MySQL高级索引索引语法.avi 11.MySQL高级索引索引设计原则.avi 12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级存储过程概述.avi 16.MySQL高级存储过程创建调用查询删除语法.avi 17.MySQL高级存储过程语法变量.avi 18.MySQL高级存储过程语法if判断.avi 19.MySQL高级存储过程语法输入参数.avi 20.MySQL高级存储过程语法输出参数.avi 21.MySQL高级存储过程语法case结构.avi 22.MySQL高级存储过程语法while循环.avi 23.MySQL高级存储过程语法repeat循环.avi 24.MySQL高级存储过程语法loop循环.avi 25.MySQL高级存储过程语法游标介绍.avi 26.MySQL高级存储过程语法游标基本操作.avi 27.MySQL高级存储过程语法循环获取游标.avi 28.MySQL高级存储过程函数.avi 29.MySQL高级触发器介绍.avi 30.MySQL高级触发器创建及应用.avi └31.MySQL高级触发器查看及删除.mp4 ├第三天视频 01.MySQL高级今日内容.mp4 02.MySQL高级应用优化.avi 03.MySQL高级查询缓存概述及流程.avi 04.MySQL高级查询缓存配置参数.avi 05.MySQL高级查询缓存开启查询缓存.avi 06.MySQL高级查询缓存SELECT选项.avi 07.MySQL高级查询缓存失效场景.avi 08.MySQL高级内存优化优化原则.avi 09.MySQL高级内存优化MyISAM内存优化.avi 10.MySQL高级内存优化InnoDB内存优化.avi 11.MySQL高级并发参数调整.avi 12.MySQL高级锁锁的概述及分类.avi 13.MySQL高级锁MySQL对锁的支持.avi 14.MySQL高级锁MyISAM表锁读锁.avi 15.MySQL高级锁MyISAM表锁写锁.avi 16.MySQL高级锁MyISAM表锁小结.avi 17.MySQL高级锁MyISAM表锁查看锁争用情况.avi 18.MySQL高级锁InnoDB行锁介绍及背景知识.avi 18.MySQL高级锁InnoDB行锁类型.avi 19.MySQL高级锁InnoDB行锁基本演示.avi 20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi 21.MySQL高级锁InnoDB行锁间隙锁危害.avi 22.MySQL高级锁InnoDB行锁争用情况查看.avi 23.MySQL高级锁InnoDB行锁总结.avi 24.MySQL高级SQL技巧SQL执行顺序及正则表达式.avi 25.MySQL高级SQL技巧数字函数与字符串函数.avi └26.MySQL高级SQL技巧日期函数与聚合函数.mp4 ├第二天视频 01.MySQL高级今日内容.mp4 02.MySQL高级体系结构.avi 03.MySQL高级存储引擎概述.avi 04.MySQL高级存储引擎特性.avi 05.MySQL高级存储引擎InnoDB特性.avi 06.MySQL高级存储引擎MyISAM特性.avi 07.MySQL高级存储引擎Memory与Merge特性.avi 08.MySQL高级存储引擎选择原则.avi 09.MySQL高级优化SQL步骤SQL执行频率.avi 10.MySQL高级优化SQL步骤定位低效SQL.avi 11.MySQL高级优化SQL步骤explain指令介绍.avi 12.MySQL高级优化SQL步骤explain之id.avi 13.MySQL高级优化SQL步骤explain之select_type.avi 14.MySQL高级优化SQL步骤explain之tabletype.avi 15.MySQL高级优化SQL步骤explain之keyrowsextra.avi 16.MySQL高级优化SQL步骤showprofile.avi 17.MySQL高级优化SQL步骤trace工具.avi 18. .....
内容提要 -------------------------------------------------------------------------------- 本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的过程,以及SQL语法、工具、选项、API应用指南,最大限度地帮助读者更快地学习和掌握MySQL数据库系统的设计和使用。本书覆盖了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。   本书是MySQL数据库管理员和开发人员的必备参考书。 目录 -------------------------------------------------------------------------------- 第一部分 入门  第1章 什么是MySQL   1.1 什么是数据库   1.2 MySQL   1.3 MySQL的不足   1.4 MySQL的版本编号   1.5 MySQL的许可证   1.6 MySQL软件的替代品   1.7 小结  第2章 测试环境   2.1 是Windows还是UNIX/Linux   2.2 在Windows系统上安装MySQL和相关软件   2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件   2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件   2.5 编译MySQL软件的开发者版本(Linux)   2.6 配置Apache   2.7 配置PHP   2.8 配置MySQL  第3章 初级案例研究:MySQL+PHP   3.1 概述   3.2 数据库的开发   3.3 调查问卷   3.4 问卷调查结果的处理和显示   3.5 改进意见 第二部分 管理工具和用户操作界面  第4章 mysqlmysqladmin和mysqldump   4.1 mysql   4.2 mysqladmin   4.3 mysqldump  第5章 MySQL Administrator和MySQL Query Browser   5.1 安装   5.2 与MySQL服务器建立连接   5.3 MySQL Administrator   5.4 MySQL Query Browser  第6章 phpMyAdmin   6.1 phpMyAdmin的安装与配置   6.2 用户管理,保护MySQL   6.3 创建和编辑数据库   6.4 查看、插入和编辑数据   6.5 执行SQL命令   6.6 导入和导出   6.7 服务器管理   6.8 辅助功能  第7章 Microsoft Office和OpenOffice/StarOffice   7.1 安装Connector/ODBC   7.2 Microsoft Access   7.3 Microsoft Excel   7.4 安装Connector/J   7.5 OpenOffice/StarOffice Base   7.6 OpenOffice/StarOffice的Data Source视图 第三部分 基础知识  第8章 数据库设计概论   8.1 参考读物   8.2 数据表类型   8.3 MySQL数据类型   8.4 数据库设计技巧   8.5 规范化   8.6 层次关系的处理   8.7 关系   8.8 主键和外键   8.9 索引   8.10 视图   8.11 示例数据库mylibrary(图书管理)   8.12 示例数据库myforum(网上论坛)   8.13 示例数据库exceptions(用于特殊情况的测试)  第9章 SQL语言入门   9.1 简介   9.2 简单查询(SELECT)   9.3 对查询结果进行排序(ORDER BY)   9.4 筛选数据记录(WHERE,HAVING)   9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN)   9.6 合并查询结果(UNION)   9.7 分组查询,统计函数(GROUP BY)   9.8 修改数据(INSERT、UPDATE和DELETE)   9.9 创建数据表、数据库和索引  第10章 SQL解决方案   1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值