收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 7604|回复: 19

[数据库] MySQL数据库应用从入门到精通 (分享)

[复制链接]
发表于 2012-12-14 13:15:18 | 显示全部楼层 |阅读模式
内容提要

    本书从数据库的基础、SQL语句开发、数据库管理和维护3个方面对MySQL进行了详细的介绍,其中每一部分都独立成篇。本书内容实用,覆盖广泛,讲解由浅入深、循序渐进,适合于各个层次的读者。
    本书共分为3篇。其中第一篇为MySQL数据库基础篇,内容包括数据库涉及到的基本概念、MySQL数据库的安装与配置。第二篇为标准SQL语句编程和应用篇,内容包括操作数据库对象、操作表对象、操作索引对象、操作视图对象、操作触发器对象和操作数据。第三篇为MySQL数据库管理篇,内容包括MySQL数据库的用户管理和权限管理、MySQL数据库的日志管理、MySQL数据库的性能优化和PowerDesigner数据库设计软件。
    本书注重理论与实际开发相结合,书中的每个技术点都配备了具体的实例,适合所有的MySQL数据库初学者快速入门、同时也适合MySQL数据库管理员和想全面学习MySQL数据库技术的人员。
 楼主| 发表于 2012-12-14 14:00:56 | 显示全部楼层
目      录
第一篇  MySQL数据库基础篇
第1章  数据库概述
1.1  关于数据库的基本概念
1.1.1  数据管理技术的发展阶段
1.1.2  数据库系统阶段涉及到概念
1.1.3  数据库技术经历的阶段
1.1.4  数据库管理系统提供的功能
1.1.5  什么是SQL
1.2  MySQL数据库管理系统
1.2.1  MySQL概述
1.2.2  常见数据库管理系统
1.2.3  为什么要使用MySQL数据库
1.3  小结
第2章  MySQL安装和配置
2.1  下载和安装MySQL软件
2.1.1  基于客户端—服务器(C/S)的数据库管理系统
2.1.2  MySQL的各种版本
2.1.3  下载MySQL软件
2.1.4  安装MySOL软件
2.1.5  图形化配置数据库服务器MySOL
2.1.6  手工配置数据库服务器MySOL
2.1.7  卸载MySOL软件
2.2  关于MySQL软件的常用操作
2.2.1  通过图形界面启动和关闭MySQL服务
2.2.2  通过DOS窗口启动和关闭MySQL服务
2.3  MySQL官方客户端软件
2.3.1  命令行客户端软件——MySQL Command Line Client
2.3.2  通过DOS窗口连接MySQL软件
2.3.3  下载MySQL-Workbench客户端软件
2.3.4  安装MySQL-Workbench客户端软件
2.3.5  使用MySQL-Workbench客户端软件
2.4  MySQL常用图形化管理软件——SQLyog软件
2.4.1  下载SQLyog软件
2.4.2  安装SQLyog客户端软件
2.4.3  通过SQLyog客户端软件登录MySQL软件
2.5  使用免安装的MySQL软件
2.6  小结
第二篇  标准SQL语言编程和应用篇
第3章  操作MySQL数据库
3.1  数据库和数据库对象
3.2  数据库相关操作——创建数据库
3.2.1  创建数据库的语法形式
3.2.2  通过工具来创建数据库
3.3  数据库相关操作——查看和选择数据库
3.3.1  查看数据库
3.3.2  选择数据库
3.4  数据库相关操作——删除数据库
3.4.1  删除数据库的语法形式
3.4.2  通过工具来删除数据库
3.5  小结
第4章  MySQL数据库中存储引擎和数据类型
4.1  认识存储引擎
4.1.1  MySQL 5.5所支持的存储引擎
4.1.2  操作默认存储引擎
4.1.3  选择存储引擎
4.2  数据类型
4.2.1  整数类型
4.2.2  浮点数类型、定点数类型和位类型
4.2.3  日期和时间类型
4.2.4  字符串类型
4.3  小结
第5章  操作表
5.1  表的基本概念
5.2  创建表
5.2.1  创建表的语法形式
5.2.2  通过SQLyog客户端软件来创建表
5.3  查看表结构
5.3.1  DESCRIBE语句查看表定义
5.3.2  SHOW CREATE TABLE语句查看表详细定义
5.3.3  通过SQLyog软件来查看表信息
5.4  删除表
5.4.1  删除表的语法形式
5.4.2  通过SQLyog软件删除表
5.5  修改表
5.5.1  修改表名
5.5.2  增加字段
5.5.3  删除字段
5.5.4  修改字段
5.6  通过SQLyog客户端软件修改表
5.6.1  修改表名
5.6.2  增加字段
5.6.3  删除字段
5.6.4  修改字段
5.7  操作表的约束
5.7.1  MySQL支持的完整性约束
5.7.2  设置非空约束(NOT NULL,NK)
5.7.3  设置字段的默认值(DEFAULT)
5.7.4  设置唯一约束(UNIQUE,UK)
5.7.5  设置主键约束(PRIMARY KEY,PK)
5.7.6  设置字段值自动增加(AUTO_INCREMENT)
5.7.7  设置外键约束(FOREIGN KEY,FK)
5.8  小结
第6章  操作索引
6.1  为什么使用索引
6.2  创建和查看索引
6.2.1  创建和查看普通索引
6.2.2  创建和查看唯一索引
6.2.3  创建和查看全文索引
6.2.4  创建和查看多列索引
6.2.5  通过SQLyog客户端软件来创建索引
6.3  删除索引
6.3.1  删除索引的语法形式
6.3.2  通过SQLyog软件删除索引
6.4  小结
第7章  操作视图
7.1  为什么使用视图
7.2  创建视图
7.2.1  创建视图的语法形式
7.2.2  通过SQLyog软件创建视图
7.2.3  创建各种视图
7.3  查看视图
7.3.1  SHOW TABLES语句查看视图名
7.3.2  SHOW TABLE STATUS语句查看视图详细信息
7.3.3  SHOW CREATE VIEW语句查看视图定义信息
7.3.4  DESCRIBE|DESC语句查看视图设计信息
7.3.5  通过系统表查看视图信息
7.3.6  SQLyog查看视图信息
7.4  删除视图
7.4.1  删除视图的语法形式
7.4.2  通过SQLyog软件删除视图
7.5  修改视图
7.5.1  CREATE OR REPLACE VIEW语句修改视图
7.5.2  ALTER语句修改视图
7.5.3  通过SQLyog软件修改视图
7.6  利用视图操作基本表
7.6.1  检索(查询)数据
7.6.2  利用视图操作基本表数据
7.7  小结
第8章  操作触发器
8.1  为什么使用触发器
8.2  创建触发器
8.2.1  创建有一条执行语句的触发器
8.2.2  创建包含多条执行语句的触发器
4.2.2  通过SQLyog客户端软件来创建触发器
8.3  查看触发器
8.3.1  通过SHOW TRIGGERS语句查看触发器
8.3.2  通过查看系统表triggers实现查看触发器
8.3.3  通过SQLyog客户端软件来查看触发器
8.4  删除触发器
8.4.1  通过DROP TRIGGER语句删除触发器
8.4.2  通过工具来删除触发器
8.5  小结
第9章  操作数据
9.1  插入数据记录
9.1.1  插入完整数据记录
9.2.2  插入数据记录一部分
9.2.3  插入多条数据记录
9.1.4  插入查询结果
9.1.5  通过工具来插入数据记录
9.2  更新数据记录
9.2.1  更新特定数据记录
9.2.2  更新所有数据记录
9.2.3  通过工具来更新数据记录
9.3  删除数据记录
9.3.1  删除特定数据记录
9.3.2  删除所有数据记录
9.2.3  通过工具来删除数据记录
9.4  小结
第10章  单表查询数据记录
10.1  简单数据记录查询
10.1.1  简单数据查询
10.1.2  避免重复数据查询——DISTINCT
10.1.3  实现数学四则运算数据查询
10.1.4  设置显示格式数据查询
10.2  条件数据记录查询
10.2.1  带有关系运算符和逻辑运算符的条件数据查询
10.2.2  带BETWEEN AND关键字的范围查询
10.2.3  带IS NULL关键字的空值查询
10.2.4  带IN关键字的集合查询
10.2.5  带LIKE关键字的模糊查询
10.3  排序数据记录查询
10.3.1  按照单字段排序
10.3.2  按照多字段排序
10.4  限制数据记录查询数量
10.4.1  不指定初始位置
10.4.2  指定初始位置
10.5  统计函数和分组数据记录查询
10.5.1  MySQL支持的统计函数
10.5.2  关于统计函数注意点
10.5.3  分组数据查询——简单分组查询
10.5.4  分组数据查询——实现统计功能分组查询
10.5.5  分组数据查询——实现多个字段分组查询
10.5.6  分组数据查询——实现HAVING子句限定分组查询
10.6  小结
第11章  多表数据记录查询
11.1  关系数据操作
11.1.1  并(UNION)
11.1.2  笛卡尔积(CARTESIAN PRODUCT)
11.1.3  内连接(INNER JOIN)
11.1.4  外连接(OUTER JOIN)
11.2  内连接查询
11.2.1  自连接
11.2.2  等值连接
11.2.3  不等连接
11.3  外连接查询
11.3.1  左外连接
11.3.2  右外连接
11.4  合并查询数据记录
11.5  子查询
11.5.1  为什么使用子查询
11.5.2  返回结果为单行单列和单行多列子查询
11.5.3  返回结果为多行单列子查询
11.5.4  返回结果为多行多列子查询
11.6  小结
第12章  使用MySQL运算符
12.1  为什么要使用运算符
12.2  使用算术运算符
12.3  使用比较运算符
12.3.1  常用比较运算符
12.3.2  实现特殊功能比较运算符
12.4  使用逻辑运算符
12.5  使用位运算符
12.6  小结
第13章  使用MySQL常用函数
13.1  使用字符串函数
13.1.1  合并字符串函数CONCAT()和CONCAT_WS()
13.1.2  比较字符串大小函数STRCMP()
13.1.3  获取字符串长度函数LENGTH()和字符数函数CHAR_LENGTH()
13.1.4  实现字母大小写转换函数UPPER()和字符数函数LOWER()
13.1.5  查找字符串
13.1.6  从现有字符串中截取子字符串
13.1.7  去除字符串的首尾空格
13.1.8  替换字符串
13.2  使用数值函数
13.2.1  获取随机数
13.2.2  获取整数的函数
13.2.3  截取数值函数
13.2.4  四舍五入函数
13.3  使用日期和时间函数
13.3.1  获取当前日期和时间的函数
13.3.2  通过各种方式显示日期和时间
13.3.3  获取日期和时间各部分值
13.3.4  计算日期和时间的函数
13.4  使用系统信息函数
13.4.1  获取MySQL系统信息
13.4.2  获取AUTO_INCREMENT约束的最后ID值
13.4.3  其他函数
13.5  小结
第14章  操作存储过程和函数
14.1  为什么使用存储过程和函数
14.2  创建储存过程和函数
14.2.1  创建储存过程语法形式
14.2.2  创建函数语法形式
14.2.3  创建简单的储存过程和函数
14.2.4  通过工具来创建存储过程和函数
14.3  关于存储过程和函数的表达式
14.3.1  操作变量
14.3.2  操作条件
14.3.3  使用光标
14.3.4  使用流程控制
14.4  查看储存过程和函数
14.4.1  通过SHOW PROCEDURE STATUS语句查看储存过程状态信息
14.4.2  通过SHOW FUNCTION STATUS语句查看函数状态信息
14.4.3  通过查看系统表information_schema.routines实现查看储存过程和函数的信息
14.4.4  通过SHOW CREATE PROCEDURE语句查看储存过程定义信息
14.4.5  通过SHOW CREATE FUNCTION语句查看函数定义信息
14.4.6  通过工具来查看储存过程和函数
14.5  修改存储过程和函数
14.5.1  修改存储过程
14.5.2  修改函数
14.6  删除储存过程和函数
14.6.1  通过DROP语句删除储存过程
14.6.2  通过DROP FUNCTION语句删除函数
14.6.3  通过工具来删除储存过程和函数
14.7  小结
第三篇  MySQL数据库管理篇
第15章  MySQL安全性机制
15.1  MySQL软件所提供的权限
15.1.1  系统表mysql.user
15.1.2  系统表mysql.db和mysql.host
15.1.3  其他权限表
15.2  MySQL软件所提供的用户机制
15.2.1  登录和退出MySQL软件的完整命令
15.2.2  创建普通用户账户
15.2.3  利用拥有超级权限用户root修改用户账户密码
15.2.4  利用拥有超级权限用户root修改普通用户账户密码
15.2.5  删除普通用户账户
15.3  权限管理
15.3.1  对用户进行授权
15.3.2  查看用户所拥有权限
15.3.3  收回用户所拥有权限
15.4  小结
第16章  MySQL日志管理
16.1  MySQL软件所支持的日志
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.4  操作查询日志
16.4.1  启动查询日志
16.4.2  查看查询日志
16.4.3  删除查询日志
16.5  小结
第17章  MySQL数据库维护和性能提高
17.1  MySQL数据库维护
17.1.1  通过复制数据文件实现数据备份
17.1.2  通过命令mysqldump实现数据备份
17.1.3  通过复制数据文件实现数据还原
17.1.4  通过命令mysql实现数据还原
17.1.5  实现数据库中表导出成文本文件
17.1.6  实现文本文件导入到数据库表
17.1.7  数据库迁移
17.2  通过SQLyog客户端软件实现数据库维护
17.2.1  通过SQLyog客户端软件进行备份操作
17.2.2  通过SQLyog客户端软件进行还原操作
17.2.3  通过SQLyog客户端软件进行导出操作
17.2.4  通过SQLyog客户端软件进行导入操作
17.3  MySQL数据库性能优化
17.4  小结
第18章  使用PowerDesigner进行数据库设计
18.1  下载和安装PowerDesigner软件
18.1.1  下载PowerDesigner软件
18.1.2  安装PowerDesiger软件
18.2  使用PowerDesigner软件进行数据库设计
18.2.1  利用PowerDesigner软件设计概念数据模型
18.2.2  利用PowerDesigner软件设计物理数据模型
18.2.3  利用PowerDesigner软件创建数据库脚本
18.3  小结

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:01:30 | 显示全部楼层
第6章  操作索引
在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而本章所要介绍的数据库对象索引则是一种有效组合数据的方式。通过索引对象,可以快速查询到数据库对象表中的特定记录,是一种提高性能的最常用对象。
一个索引会包含表中按照一定顺序排序的一列或多列字段。索引的操作包含创建索引、修改索引和删除索引,这些操作是MySQL软件中最基本、最重要的操作。
通过本节的学习,可以掌握在数据库中操作索引,内容包含:
        索引的相关概念;
        索引的基本操作:创建、查看和删除。
6.1  为什么使用索引
数据库对象索引其实与书的目录非常类似,主要是为了提高从表中检索数据的速度。由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过MySQL可以快速有效地查找与键值相关联的字段。根据索引的存储类型,可以将索引分为B型树索引(BTREE)和哈希索引(HASH)。
注意:InnoDB和MyISAM存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型索引,默认为前者索引。
数据库对象索引的出现,除了可以提供数据库管理系统的查找速度,而且还可以保证字段的唯一性,从而实现数据库表的完整性。查看帮助文档,可以发现MySQL支持6种索引,它们分别为普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。
索引的创建有利有弊,创建索引可以提高查询速度,但过多的创建索引则会占据许多的磁盘空间。因此在创建索引之前,必须权衡利弊。
一般下面情况下适合创建索引:
        经常被查询的字段,即在WHERE子句中出现的字段。
        在分组的字段,即在GROUP BY子句中出现的字段。
        存在依赖关系的子表和父表之间的联合查询,即主键或外键字段。
        设置唯一完整性约束的字段。
一般下面情况下不适合创建索引:
        在查询中很少被使用的字段。
        拥有许多重复值的字段。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:02:43 | 显示全部楼层
6.2  创建和查看索引
索引的操作包括创建索引、查看索引和删除索引。所谓创建索引,就是在表的一个字段或多个字段上建立索引,本节将详细介绍如何创建索引。在MySQL中,可以通过三种方式来创建索引,分别为创建表时创建索引、在已经存在的表上创建索引和通过SQL语句ALTER TABLE来创建索引。
6.2.1  创建和查看普通索引
所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。
1、创建表时创建普通索引
查看帮助文档发现,在MySQL数据库管理系统中创建普通索引通过SQL语句INDEX来实现,其语法形式如下:
CREATE TABLE table_name (
        属性名 数据类型,
        属性名 数据类型,
        ……
        属性名 数据类型,
        INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】)

);
上述语句中INDEX或KEY参数用来指定字段为索引,“索引名”参数用来指定所创建索引名,“属性名1”参数用来指定索引所关联的字段的名称,“长度”参数用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序。
注意:在创建索引时,可以指定索引的长度。这是因为不同存储引擎定义了表的最大索引数和最大索引长度。
MySQL所支持的存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。个别存储引擎会支持更多的索引数和更大的索引长度。
【实例6-1】执行SQL语句INDEX,在数据库company中,于表t_dept的deptno字段上创建索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,具体SQL语句如下:
USE company;
【运行效果】执行上面的SQL语句,其结果如图6.1所示。
(2)执行SQL语句INDEX,在创建表t_dept时,于字段deptno上创建索引,具体SQL语句如下:
CREATE TABLE t_dept(
        deptno INT,
        dname VARCHAR(20),
        loc VARCHAR(40),
        INDEX index_deptno(deptno)
);
【代码说明】在上述语句中,创建表t_dept的同时设置了关于字段deptno的索引对象index_deptno。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno索引,其所关联的字段为deptno。
(4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
        SELECT * FROM t_dept WHERE deptno=1;
【代码说明】在上述语句中,通过关键字EXPLAIN来校验关于字段deptno的索引对象是否被启用。
执行结果显示,由于possible_keys和key字段处的值都为所创建的索引名index_deptno,则说明该索引已经存在,而且已经开始启用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:04:57 | 显示全部楼层
2、在已经存在的表上创建普通索引
查看帮助文档发现,在MySQL数据库管理系统中创建普通索引除了通过SQL语句INDEX来实现外,还可以通过SQL语句CREATE INDEX来实现,其语法形式如下:
CREATE INDEX 索引名
        ON 表名(属性名 【(长度)】 【ASC|DESC】)
上述语句中CREATE INDEX关键字表示用来创建索引,“索引名”参数用来指定所创建索引名,ON关键字用来指定所要创建索引的表名称。至于其他内容跟“创建表时创建普通索引”的语法一致。
【实例6-2】执行SQL语句INDEX,在数据库company中,于表t_dept的deptno字段上创建索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;
(2)执行SQL语句CREATE INDEX,于表t_dept中创建关联字段deptno的普通索引对象index_deptno,具体SQL语句如下:
CREATE INDEX index_deptno
        ON t_dept (deptno)
【代码说明】上述语句中创建了关联表t_dept中字段deptno的索引index_deptno。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno索引,其所关联的字段为deptno。
3、通过SQL语句ALTER TABLE创建普通索引
除了上述两种方式来创建普通索引外,在MySQL数据库管理系统中创建普通索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
        ADD INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
上述语句中INDEX或KEY关键字用来指定创建普通索引,“索引名”参数用来指定所创建索引名,“属性名”参数用来指定索引所关联的字段的名称,“长度”参数用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序。
【实例6-3】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的deptno字段上创建普通索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;
2)执行SQL语句ALTER TABLE,于表t_dept中创建关联字段deptno的普通索引对象index_deptno,具体SQL语句如下:
ALTER TABLE t_dept
        ADD INDEX index_deptno(deptno);
【代码说明】上述语句中创建了关联表t_dept中字段deptno的普通索引index_deptno。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno索引,其所关联的字段为deptno。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:05:56 | 显示全部楼层
6.2.2  创建和查看唯一索引
所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的。通过该类型的索引可以更快速的查询某条记录。在MySQL中,根据创建索引方式,可以分为自动索引和手动索引。
所谓自动索引,是指在数据库表里设置完整性约束时,该表会被系统自动创建索引。所谓手动索引,是指手动在表上创建索引。当设置表中的某个字段设置主键或唯一完整性约束时,系统就会自动创建关联该字段的唯一索引。
1、创建表时创建唯一索引
查看帮助文档发现,在MySQL数据库管理系统中创建唯一索引通过SQL语句UNIQUE INDEX来实现,其语法形式如下:
CREATE TABLE table_name (
        属性名 数据类型,
        属性名 数据类型,
        ……
        属性名 数据类型,
        UNIQUE INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】)
);
上述语句中比创建普通索引多了一个SQL关键字UNIQUE,其中UNIQUE INDEX或UNIQUE KEY表示创建唯一索引。
【实例6-4】执行SQL语句UNIQUE INDEX,在数据库company中,于表t_dept的deptno字段上创建唯一索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,具体SQL语句如下:
USE company;
(2)执行SQL语句UNIQUE INDEX,在创建表t_dept时,于字段deptno上创建唯一索引,具体SQL语句如下:
CREATE TABLE t_dept(
        deptno INT UNIQUE,
        dname VARCHAR(20),
        loc VARCHAR(40),
        UNIQUE INDEX index_deptno(deptno)
);
【代码说明】在上述语句中,创建表t_dept的同时设置了关于字段deptno的唯一索引对象index_deptno。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno唯一索引,其所关联的字段为deptno。
(4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
        SELECT * FROM t_dept WHERE deptno=10 \G
执行结果显示,possible_keys和key字段处的值都为所创建的索引名index_deptno,则说明该索引已经存在,而且已经开始启用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:07:17 | 显示全部楼层
2、在已经存在的表上创建唯一索引
查看帮助文档发现,在MySQL数据库管理系统中创建唯一索引除了通过SQL语句UNIQUE INDEX来实现外,还可以通过SQL语句CREATE UNIQUE INDEX来实现,其语法形式如下:
CREATE UNIQUE INDEX 索引名
        ON 表名(属性名 【(长度)】 【ASC|DESC】)
上述语句中CREATE UNIQUE INDEX关键字表示用来创建唯一索引。
【实例6-5】执行SQL语句INDEX,在数据库company中已经创建好的表t_dept上,创建关联字段deptno的唯一索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;
(2)执行SQL语句CREATE UNIQUE INDEX,于表t_dept中创建关联字段deptno的唯一索引对象index_deptno,具体SQL语句如下:
CREATE UNIQUE INDEX index_deptno
        ON t_dept (deptno);
【代码说明】上述语句中创建了关联表t_dept中字段deptno的唯一索引index_deptno。
(3)为了校验数据库表t_dept中唯一索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno唯一索引,其所关联的字段为deptno。
3、通过SQL语句ALTER TABLE创建唯一索引
除了上述两种方式来创建唯一索引外,在MySQL数据库管理系统中创建唯一索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
        ADD  UNIQUE INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
上述语句中UNIQUE INDEX或KEY关键字用来指定创建唯一索引,“索引名”参数用来指定所创建索引名,“属性名”参数用来指定索引所关联的字段的名称,“长度”参数用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序。
【实例6-6】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的deptno字段上创建唯一索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;

(2)执行SQL语句ALTER TABLE,于表t_dept中创建关联字段deptno的唯一索引对象index_deptno,具体SQL语句如下:
ALTER TABLE t_dept
        ADD UNIQUE INDEX index_deptno(deptno);
【代码说明】上述语句中创建了关联表t_dept中字段deptno的唯一索引index_deptno。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_deptno索引,其所关联的字段为deptno。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:12:21 | 显示全部楼层
6.2.3  创建和查看全文索引
全文索引主要关联在数据类型为CHAR、VARCHAR和TEXT的字段上,以便于能够更加快速的查询数据量较大的字符串类型的字段。
MySQL从3.23.23版本开始支持全文索引,只能在存储引擎为MyISAM的数据库表上创建全文索引。在默认情况下,全文索引的搜索执行方式为不区分大小写,如果全文索引所关联的字段为二进制数据类型,则以区分大小写的搜索方式执行。
1、创建表时创建全文索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引通过SQL语句FULLTEXT INDEX来实现,其语法形式如下:
CREATE TABLE table_name (
        属性名 数据类型,
        属性名 数据类型,
        ……
        属性名 数据类型,
        FULLTEXT INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】)
);
上述语句中比创建普通索引多了一个SQL关键字FULLTEXT,其中FULLTEXT INDEX或FULLTEXT KEY表示创建全文索引。
【实例6-7】执行SQL语句FULLTEXT INDEX,在数据库company中,于表t_dept的loc字段上创建全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,具体SQL语句如下:
USE company;
(2)执行SQL语句FULLTEXT INDEX,在创建表t_dept时,于字段loc上创建全文索引,具体SQL语句如下:
CREATE TABLE t_dept(
        deptno INT,
        dname VARCHAR(20),
        loc VARCHAR(40),
        FULLTEXT INDEX index_loc(loc)
) ENGINE=MyISAM;
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中全文索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc全文索引,其所关联的字段为loc。
(4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
        SELECT * FROM t_dept WHERE dname=’cjgong’;
执行结果显示,possible_keys和key字段处的值都为所创建的索引名index_dname_loc,则说明该索引已经存在,而且已经开始启用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:14:02 | 显示全部楼层
2、在已经存在的表上创建全文索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引除了通过SQL语句FULLTEXT INDEX来实现外,还可以通过SQL语句CREATE FULLTEXT INDEX来实现,其语法形式如下:
CREATE FULLTEXT INDEX 索引名
        ON 表名(属性名 【(长度)】 【ASC|DESC】)
上述语句中CREATE FULLTEXT INDEX关键字表示用来创建全文索引。
【实例6-8】执行SQL语句INDEX,在数据库company中已经创建好的表t_dept上,创建关联字段loc的全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
(2)执行SQL语句CREATE FULLTEXT INDEX,于表t_dept中创建关联字段loc的全文索引对象index_deptno,具体SQL语句如下:
CREATE FULLTEXT INDEX index_loc
        ON t_dept (loc);
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中全文索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc全文索引,其所关联的字段为loc。
3、通过SQL语句ALTER TABLE创建唯全文索引
除了上述两种方式来创建全文索引外,在MySQL数据库管理系统中创建全文索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
        ADD FULLTEXT INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
上述语句中FULLTEXT INDEX或KEY关键字用来指定创建全文索引,“索引名”参数用来指定所创建索引名,“属性名”参数用来指定索引所关联的字段的名称,“长度”参数用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序。
【实例6-9】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的loc字段上创建全文索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;

DESC t_dept;

(2)执行SQL语句ALTER TABLE,于表t_dept中创建关联字段loc的全文索引对象index_loc,具体SQL语句如下
ALTER TABLE t_dept
        ADD FULLTEXT INDEX index_loc(loc);
【代码说明】上述语句中创建了关联表t_dept中字段loc的全文索引index_loc。
(3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_loc索引,其所关联的字段为loc。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:15:26 | 显示全部楼层
6.2.4  创建和查看多列索引
所谓多列索引,就是指在创建索引时,所关联的字段不是一个字段,而是多个字段。虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中第一个字段,多列索引才会被使用。
1、创建表时创建多列索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引通过SQL语句INDEX来实现,其语法形式如下:
CREATE TABLE table_name (
        属性名 数据类型,
        属性名 数据类型,
        ……
        属性名 数据类型,
        INDEX|KEY  【索引名】  (属性名1 【(长度)】 【ASC|DESC】,
                                                   ……
                                                   属性名n 【(长度)】 【ASC|DESC】)
);
上述语句创建索时,所关联的字段至少大于一个字段。
【实例6-10】执行SQL语句INDEX,在数据库company中,于表t_dept的dname和loc字段上创建多列索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,具体SQL语句如下:
USE company;
(2)执行SQL语句INDEX,在创建表t_dept时,于dname和loc字段上上创建多列索引,具体SQL语句如下:
CREATE TABLE t_dept(
        deptno INT,
        dname VARCHAR(20),
        loc VARCHAR(40),
        KEY index_dname_loc(dname,loc)
);
【代码说明】在上述语句中,创建表t_dept的同时设置了关于字段deptno和loc的多列索引对象index_dname_loc。
(3)为了校验数据库表t_dept中多列索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。
(4)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
        SELECT * FROM t_dept WHERE dname=’cjgong’;
执行结果显示,possible_keys和key字段处的值都为所创建的索引名index_dname_loc,则说明该索引已经存在,而且已经开始启用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:19:49 | 显示全部楼层
2、在已经存在的表上创建多列索引
查看帮助文档发现,在MySQL数据库管理系统中创建全文索引除了可以在创建表时实现外,还可以为已经存在的表设置全文索引,其语法形式如下:
CREATE INDEX 索引名
        ON 表名(属性名 【(长度)】 【ASC|DESC】,
                        ……
                        属性名n 【(长度)】 【ASC|DESC】

上述语句中比创建普通索引多关联了几个字段。
【实例6-11】执行SQL语句CREATE INDEX,在数据库company中,于表t_dept的dname和loc字段上创建多列索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
(2)执行SQL语句CREATE INDEX,于表t_dept中创建关联字段dname和loc的多列索引对象index_dname_loc,具体SQL语句如下:
CREATE INDEX index_dname_loc
        ON t_dept (dname,loc);
上述语句中创建了关联表t_dept中字段dname和loc的多列索引index_dname_loc。
3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:22:04 | 显示全部楼层
3、通过SQL语句ALTER TABLE创建多列索引
除了上述两种方式来创建多列索引外,在MySQL数据库管理系统中创建多列索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE table_name
        ADD  INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】,
                                        ……
                                        属性名n 【(长度)】 【ASC|DESC】

上述语句中INDEX或KEY关键字用来指定创建索引,由于所涉及到字段为多个,所以为创建多列索引。
【实例6-12】执行SQL语句ALTER TABLE,在数据库company中,于表t_dept的deptno字段上创建多列索引。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句DESC查看该数据库中已经存在的表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
DESC t_dept;
2)执行SQL语句CREATE INDEX,于表t_dept中创建关联字段dname和loc的多列索引对象index_dname_loc,具体SQL语句如下:
ALTER TABLE t_dept
        ADD INDEX index_dname_loc(dname,loc);
上述语句中创建了关联表t_dept中字段dname和loc的多列索引index_dname_loc。
3)为了校验数据库表t_dept中索引是否创建成功,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G
执行结果显示,已经于数据库表t_dept上创建了一个名为index_dname_loc多列索引,其所关联的字段为dname和loc。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:33:39 | 显示全部楼层
6.2.5  通过SQLyog客户端软件来创建索引
在学习MySQL数据库阶段,可以通过MySQL数据库服务器自带的工具“MySQL Command Line Client”来创建索引,该工具可以帮助大家尽快掌握关于创建索引的语法。但是在数据库开发阶段,用户一般通过客户端软件SQLyog来创建索引。
下面将通过一个具体的实例来说明如何通过MySQL客户端软件SQLyog创建表。
【实例6-13】于数据库company里,为数据库表对象t_dept创建各种类型的索引。具体步骤如下:
(1)首先连接数据库管理系统,然后单击“company>表>t_dept>索引”节点前的加号,进入关于数据库company里表t_dept的索引节点中
(2)在“对象资源管理器”窗口中,右键单击“索引”节点,然后选择“创建索引”命令则会打开“t_dept”窗口。该窗口中主要分成两部分,上面部分为表的详细信息,下面部分可以设置索引对象的信息。
(3)如果想创建普通索引对象index_deptno。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(4)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_deptno
(5)如果想创建唯一索引对象index_deptno。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(6)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_deptno
(7)如果想创建全文索引对象index_loc。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(8)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_loc
(9)如果想创建多列索引对象index_dname_loc。当确认所填写的信息无误后,单击“保存”按钮就会出现确认对话框,在该对话框中单击“确定”按钮就可以实现该索引对象的创建。
(10)然后于“对象资源管理器”窗口中选择“company>表>t_dept>索引”节点,然后单击刷新按钮,则会在“索引”节点显示索引对象index_dname_loc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:37:17 | 显示全部楼层
6.3  删除索引
索引的操作包括创建索引、查看索引和删除索引。所谓删除索引,就是删除表中已经创建的索引。之所以要删除索引,是由于这些索引会降低表的更新速度,影响数据库的性能,本节将详细介绍如何删除索引。
6.3.1  删除索引的语法形式
查看帮助文档发现,在MySQL数据库管理系统中删除索引通过SQL语DROP IINDEX来实现,其语法形式如下:
DROP INDEX index_name
        ON table_name
上述语句中index_name参数表示所要删除索引名字,table_name参数表示所要删除索引所在的表对象。
【实例6-14】执行SQL语句DROP INDEX,于数据库company里删除表对象t_dept中的索引对象index_dname_loc。具体步骤如下:
(1)执行SQL语句USE,选择数据库company,并通过SQL语句SHOW CREATE TABLE查看该数据库中表t_dept信息,具体SQL语句如下:
USE company;
然后查看已经存在表t_dept的定义信息,具体SQL语句如下:
SHOW CREATE TABLE t_dept \G
(2)为了校验数据库表t_dept中索引是否被使用,执行SQL语句EXPLAIN,具体SQL语句内容如下:
EXPLAIN
        SELECT * FROM t_dept WHERE dname=’cjgong’;
(3)执行SQL语句DROP INDEX,删除索引对象index_dname_loc,具体SQL语句如下:
DROP INDEX index_dname_loc
        ON t_dept;
4)为了校验数据库company中是否还存在索引对象index_dname_loc,执行SQL语句SHOW CREATE TABLE,具体SQL语句内容如下:
SHOW CREATE TABLE t_dept \G

执行结果显示,t_dept表已经不存在索引对象index_dname_loc。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-14 14:39:15 | 显示全部楼层
6.3.2  通过SQLyog软件删除索引
在客户端软件SQLyog中,不仅可以通过在“询问”窗口中执行DROP INDEX语句来删除索引,而且还可以通过向导来实现,具体步骤如下:
(1)在“对象资源管理器”窗口中,单击“company>表>t_dept>索引”节点前的加号,然后右键单击“index_dname_loc”节点,从弹出的快捷菜单中选择“删除索引”命令
(2)当单击“删除索引”命令时,就会弹出对话框来确定是否删除索引,如图6.70所示。当单击“是”按钮后,这时“对象资源管理器”窗口里“company>表>t_dept”中的索引节点里就没有任何索引对象

通过上述步骤,就可以成功删除索引对象。
6.4  小结
本章主要介绍在MySQL软件关于索引的操作,分别从数据库对象索引的基本概念和操作两方面介绍。其中前者主要介绍为什么要使用索引对象。而后者主要介绍了创建索引操作、查看索引操作和删除索引操作,详细讲解了普通索引、唯一索引、全文索引和多列索引等各种类型索引的相关操作。为了让读者掌握这些操作,分别通过SQL语句和SQLyog客户端软件这两种方式来介绍。
通过对本章的学习,读者不仅会掌握数据库对象索引的基本概念,而且还会熟练掌握索引的各种操作。
回复 支持 反对

使用道具 举报

发表于 2012-12-16 00:45:38 | 显示全部楼层
您这是卖书吗?
回复 支持 反对

使用道具 举报

发表于 2012-12-19 09:51:34 | 显示全部楼层
小广告都来了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-8 08:58:56 | 显示全部楼层
fancycedar 发表于 2012-12-19 09:51
小广告都来了

不是广告,我本来准备发完的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-8 08:59:11 | 显示全部楼层
17set 发表于 2012-12-16 00:45
您这是卖书吗?

NONO                 
回复 支持 反对

使用道具 举报

发表于 2017-5-23 22:11:09 | 显示全部楼层
请问你可以法我完整版的mysql数据库应用从入门到精通吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-9-29 13:46 , Processed in 0.124683 second(s), 7 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表