第1章 MySQL初步
1.1 数据库基本概念
本节先来介绍数据库相关的概念。
1.数据库
数据库(DB)是存放数据的仓库,而且这些数据存在一定的关联,并按一定的格式存放在计算机的存储介质上。例如,把一个学校的学生基本信息、课程信息、学生成绩信息等数据有序地组织并存放在计算机内,就可以构成一个学生成绩管理数据库。
2.数据模型
(关系模型)
数据库按照数据模型对数据进行存储和管理,而数据模型主要有层次模型、网状模型和关系模型,其中关系模型使用更为流行。
关系模型以记录组或二维数据表的形式组织数据。例如,学生成绩管理数据库所涉及的“学生”“课程”和“成绩”三个表:
“学生”表涉及的主要信息有学号、姓名、性别、出生时间、专业、总学分和备注;
“课程”表涉及的主要信息有课程号、课程名、开课学期、学时和学分;
“成绩”表涉及的主要信息有学号、课程号和成绩。
表1.1、表1.2和表1.3所示分别描述了学生成绩管理数据库中“学生”“课程”和“成绩”三个表的部分数据。
表1.1 “学生”表
表1.2 “课程”表
表1.3 “成绩”表
表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有n个字段的关系表的结构可表示为:
关系表名(字段名1,…,字段名n)
通常把关系表的结构称为关系模式。
在关系表中,如果一个字段或几个字段组合的值可唯一标识其对应记录,则称该字段或字段组合为码。例如,“学号”可唯一标识每一个学生,“课程号”可唯一标识每一门课。“学号”和“课程号”可唯一标识每一个学生一门课程的成绩,它们就是相应表的码。有时一个表可能有多个码,例如在学生表中,只要姓名不重名,则“学号”“姓名”均是学生信息表码,但可指定一个码为“主码”,在关系模式中,一般用下划线标出主码。
学生关系模式可表示为:XSB(学号,姓名,性别,出生时间,专业,总学分,备注)。
课程关系模式可表示为:KCB(课程号,课程名,开课学期,学时,学分)。
成绩关系模式表示为:CJB(学号,课程号,成绩,学分)。
3.数据库管理系统
数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。
DBMS应提供如下功能:定义数据库中的对象、对数据库包含对象进行操作、保证输入的数据满足相应的约束条件、保证只有具有权限的用户才能访问数据库中的数据、使多个应用程序可在同一时刻访问数据库的数据、数据库备份和恢复功能、能够在网络环境下访问数据库的功能和数据库信息的接口和工具。
数据库系统管理员(DBA)通过DBMS提供的工具对数据库进行管理。数据库应用程序通过DBMS的数据库的接口编写操作数据库。
目前,流行的关系型 DBMS 有:SQL Server、Oracle、MySQL、Access 等。其中,MySQL是目前较流行的开放源码的小型数据库管理系统,它被广泛应用在Internet上众多中小型网站中,本书介绍的是较新的MySQL 5.7版。
4.关系型数据库语言
SQL(Structured Query Language,结构化查询语言)是用于关系数据库查询的结构化语言。SQL的功能包括数据查询、数据操纵、数据定义和数据控制4部分。
DBA可通过DBMS发送SQL命令,命令执行结果在DBMS界面上显示。
用户通过应用程序界面表达如何操作数据库,应用程序把其转换为SQL命令发送给DBMS,再将操作结果在应用程序界面上显示出来。
5.数据库系统
(数据库系统)
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1所示描述了数据库系统的构成。
图1.1 数据库系统的构成
1.2 MySQL数据库
本节介绍MySQL数据库的概述、安装运行和命令初步。
1.2.1 概述
MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,被广泛地应用在Internet上的中小型网站中。
目前在Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库DBMS,PHP作为服务器端脚本解释器。因这4款软件都遵循GPL开放源码授权,故使用这种组合的解决方案不用花一分钱就可以建立起一个稳定、免费的网站系统。
由于MySQL被SUN公司收购,SUN又被Oracle收购,MySQL成为了Oracle公司的另一个数据库项目。MySQL功能越来越完善,版本不断升级,在Windows平台上的使用越来越多,已经成为目前较为流行的DBMS。
本书的操作平台是MySQL 5.7.17.0。MySQL支持SQL标准,但也进行了相应的扩展。
1.2.2 安装运行
MySQL 的安装包可从 http://dev.mysql.com/downloads/上免费下载,下载得到的安装包名为mysql-installer-community-5.7.17.0.msi。在安装MySQL前,请确保系统中安装了Microsoft .NET Framework 4.0。
1.MySQL下载安装
(1)双击安装包会弹出欢迎窗口,单击“Install MySQL Products”文字链接,会弹出“License Agreement”窗口,该窗口列出用户使用本产品相应接受的项目(即用户许可协议)。选中“I accept the license terms”复选框,然后单击【Next】按钮。
(2)进入安装类型(Choosing a Setup Type)选择界面,如图1.2所示。
图1.2 安装类型设置窗口
这里选择【Custom】(常规)单选按钮,然后单击【Next】按钮。
(3)系统进入“Select Products and Features”(选择安装项目)窗口,如图1.3所示。
图1.3 选择安装项目
其中“Available Products”中列出可安装的项目,“Products/Features To Be Installtioned”中列出当前系统默认的安装项目。其中MySQL Server是MySQL提供服务的程序,MySQL Document (文档)为使用者提供使用说明,Samples and Examples中的实例可提供使用MySQL的参考模板。
用户可以选择“Available Products”中其他项目然后向右移动添加安装,也可以从“Products/Features To Be Installationed”中选择放弃安装。对于初学者可选择安装默认项目,单击【Next】按钮进入下一个窗口。
(4)“Installation”窗口列出用户在上一个窗口选择的安装项目,选择【Back】按钮可返回上一个窗口重新选择,单击【Next】按钮进入下一个窗口。
(5)系统开始安装程序,之前安装向导过程中所做的设置将在安装完成之后生效,并会弹出图1.4所示的窗口。
图1.4 安装成功窗口
至此,MySQL安装成功(Install success)!下面进入配置过程。
2.MySQL服务器配置
(1)在安装成功界面上,单击【Next】按钮,就进入服务器配置窗口(Product Configuration),单击【Next】按钮,出现第一个配置窗口(Type and Networking-Server Configuration Type),配置MySQL服务器运行的参数,如图1.5所示。
其中需要说明的如下。
① Config Type下拉列表项用来配置当前服务器的类型,可以选择如下所示的3种服务器类型。
Development Machine(开发者机器):将MySQL服务器配置成使用最少的系统资源。
Server Machine(服务器):将MySQL服务器配置成使用适当比例的系统资源。
Dedicated MySQL Server Machine(专用MySQL服务器):将MySQL服务器配置成使用所有可用系统资源。
作为初学者,选择“Development Machine”(开发者机器)就可以了。
图1.5 配置MySQL服务器
② Connectivity下包含连接MySQL的参数。
默认情况启用TCP/IP网络;默认端口为3306(该端口号必须没有被占用);打开通过网络存取数据库防火墙功能。
同时不选命名管道和共享内存功能。
③ 高级配置。选择“Show Advanced Options”可打开选项。
对于初学者默认配置即可。单击【Next】按钮进入下一个窗口。
(2)系统显示“Accounts and Roles”窗口,配置root账户和角色,如图1.6所示。
图1.6 配置root账户和角色
设置root用户的密码,在“MySQL Root Password”(输入新密码)和“Repeat Password”(确认密码)两个编辑框内输入期望的密码。这里我们设置密码:njnu123456。也可以单击下面的【Add User】按钮另行创建新的用户,设置有关角色。单击【Next】按钮进入下一个窗口。
(3)系统显示“Windows Service”窗口,配置作为Windows程序运行参数,如图1.7所示。
图1.7 配置Windows程序运行参数
系统默认Windows启动时自动启动MySQL程序,进程名为MySQL57。Windows启动时采用标准账户。保留默认值即可。单击【Next】按钮,进入下一个窗口。
(4)系统显示“Plugins and Extensions”窗口,配置插件连接MySQL数据库参数:包含协议、文档、端口号和是否打开防火墙,如图1.8所示,保留默认值即可。单击【Next】按钮,进入下一个窗口。
图1.8 配置插件连接
(5)系统显示“Apply Server Confogtion”应用服务配置过程窗口,如图1.9所示。
图1.9 应用服务配置过程
用户选择“Execute”,根据列出的应用服务顺序进行配置,直到项目前全部打勾表示完成。选择【finish】按钮,进入下一个窗口。
(6)系统显示“Product Configuration”窗口,其中显示“MySQL Server”配置已经完成,单击【Next】按钮,系统开始配置“Samples and Exmples”。完成后进入下一个窗口。
(7)系统显示“Connect To Server”连接到MySQL服务器窗口,如图1.10所示。
图1.10 连接MySQL
用户输入“root”和前面设置的对应 root 用户密码(njnu123456),单击【Check】按钮,系统显示“Connection successful”表示连接MySQL成功。
3.MySQL数据库试运行
(安装运行)
为了验证上述的安装和配置是否成功,先来运行MySQL数据库。
(1)启动MySQL服务
安装配置完成后,打开Windows任务管理器,可以看到MySQL服务进程mysqld.exe已经启动了,如图1.11所示。
图1.11 MySQL服务进程
使用MySQL之前,必须确保进程mysqld.exe已经启动。但用户关机后重新开机进入系统时,如果图1.7中的MySQL服务器没有配置成自动启动,就要在Windows管理器中启动,或者进入MySQL安装目录C:\Program Files\MySQL\MySQL Server 5.7\bin(读者请进入自己安装MySQL的bin目录),双击mysqld.exe即可。
(2)登录MySQL数据库
进入Windows命令行,输入:
C:\...>cd C:\Program Files\MySQL\MySQL Server 5.7\bin
进入MySQL可执行程序目录,再输入:
C:\Program Files\MySQL\MySQL Server 5.7\bin> mysql -u root -p
按“Enter”键后,输入密码(读者请用之前安装时自己设置的密码):
Enter password: njnu123456
显示图1.12所示的欢迎信息。
图1.12 MySQL成功登录
图1.12显示进入的其实就是MySQL的命令行模式,在命令行提示符“mysql>”后输入“quit”,可退出命令行。
(设置MySQL字符集)
(3)设置MySQL字符集
为了让MySQL数据库能够支持中文,必须设置系统字符集编码。
输入命令:
show variables like ‘char%';
可查看当前连接系统的参数,如图1.13所示。
图1.13 查看当前连接系统的参数
然后输入:
set character_set_database= 'gbk';
set character_set_server= ‘gbk';
将数据库和服务器的字符集均设为gbk(中文)。
最后输入命令:
status;
结果如图1.14所示。
图1.14 查看当前系统字符集
从图1.14中框出的部分可见,系统的Server(服务器)、Db(数据库)、Client(客户端)及Conn.(连接)的字符集都改为了“gbk”。这样,整个MySQL系统就能彻底地支持中文汉字字符了!
(定义初学者)
(4)作为初学者,为了在操作 MySQL 时防止由于不同操作系统默认的权限差异不能使用有些功能,建议设置操作权限。
输入命令:
use mysql;
grant all privileges on *.* to ‘root'@'%' identified by ‘njnu123456' with grant option;
flush privileges;
结果如图1.15所示。
图1.15 设置权限
1.2.3 命令初步
下面先简单介绍几个MySQL命令行的入门操作,更详细的内容请读者学习本书的后续章节。为了方便阅读,命令关键字一般用大写表示,参数用小写表示。实际输入命令一般习惯都用小写。
(查看系统数据库)
1.查看、创建数据库
(1)查看系统数据库
查看MySQL系统中已有的数据库,输入命令:
SHOW DATABASES;
系统会列出已有的数据库。MySQL 系统使用的数据库有3个:information_schema、mysql和performance_schema,它们都是MySQL安装时系统自动创建的,MySQL把有关DBMS自身的管理信息都保存在这几个数据库中,如果删除了它们,MySQL 将不能正常工作,故请读者操作时千万留神!如果安装时选择安装实例数据库,则系统还有另外2个实例数据库sakila和world。
(2)创建用户数据库
(创建用户数据库)
为了创建用户自己使用的数据库,在 mysql>提示符后输入“CREATE DATABASE”(大小写不限)语句,此语句要指定数据库名:
CREATE DATABASE mytest;
这里创建了一个用于测试的数据库mytest,使用SHOW DATABASES语句查看一下,执行结果列表中多了一项mytest,就是用户刚刚创建的数据库,如图1.16所示。
图1.16 多了创建的用户数据库
数据库创建后,在安装 MySQL 时确定的数据库数据文件制定路径下就会产生以数据库名作为目录名的目录,如图1.17所示。在该目录下生成了一个“db.opt”文件,在该文件中记录了数据库的特征信息。
图1.17 数据库目录
2.在数据库中创建表
(1)切换当前数据库
接下来,我们要在mytest数据库中创建表,但mytest并不是系统默认的当前数据库,为了使它成为当前数据库,发布USE语句即可:
USE mytest
USE为少数几个不需要终结符(;)的语句之一,当然,加上终结符也不会出错。
(2)创建表
使用CREATE TABLE语句可创建表。例如,创建一个名为user的表,留待后用:
CREATE TABLE user
(
id int auto_increment not null primary key,
username varchar(10) not null,
password varchar(10) not null
);
其中,user表包含id、username和password列。id列标志字段,整型(int),字段数据系统增一(auto_increment),并将其设置为主键(primary key);username和password列分别存放不超过10个字符(varchar(10))的用户名和密码,记录中这三个字段不允许为空(not null)。
说明
数据库中创建了一个表,在该数据库目录下就会生成主文件名为表名的2个文件,如图1.18所示。
图1.18 数据库目录中文件
(3)查看表信息
现在来检验一下mytest数据库中是否创建了user表。
在命令行输入:
SHOW TABLES;
系统显示数据库中已经有了一个user表,如图1.19所示,进一步输入:
DESCRIBE USER;
还可详细查看user表的结构、字段类型等信息。
图1.19 成功创建了user表
说明
SHOW和DESCRIBE命令还有很多选项,对应显示很多功能。
3.向表中加入记录
通常,用INSERT语句向表中插入记录。例如:
INSERT INTO user VALUES(1,'Tom','19941216');
INSERT INTO user VALUES(2,’周何骏’,'19960925');
VALUES表必须包含表中每一列的值,并且按表中列的存放次序给出。在MySQL中,字符串串值需要用单引号或双引号括起来。完成后输入下列命令:
SELECT * FROM user;
查询表user中的所有记录,如图1.20所示。
图1.20 查看user表的内容
请读者按照上述指导,熟悉MySQL命令行的操作。上机实践过后,可使用DROP DATABASE命令删除用户自己创建的数据库,使MySQL系统恢复原样:
DROP DATABASE mytest;
4.MySQL命令说明
(1)在描述命令格式时,用[ ]表示可选项。
(2)MySQL 命令不区分大小写,但本书为了读者阅读方便,在本书描述命令格式和命令实例时,命令关键字用大写表示,其他用小写表示。但在实际对 MySQL 操作时为了避免大小写频繁切换,一般都用小写。
(3)命令关键字可以只写前面4个字符。
DESCRIBE user;
与
DESCR user;
效果是一样的。
(4)修改命令结束符号。
在 MySQL 中,服务器处理语句的时候是以分号为结束标志的。使用 DELIMITER 命令将MySQL语句的结束标志修改为其他符号。
例如,将MySQL结束符修改为两个斜杠“/”符号。
DELIMITER //
说明
执行完这条命令后,程序结束的标志就换为双斜杠符号“//”了。
要想恢复使用分号“;”作为结束符,运行下面命令即可:
OPDELIMITER ;
1.3 MySQL常用界面工具
MySQL除了可以通过命令操作数据库外,市场上还有许多图形化的工具操作MySQL,这样操作数据库就更加简单方便。MySQL的界面工具可分为两大类:图形化客户端和基于Web的管理工具。
1.图形化客户端
(图形化客户端)
图形化客户端这类工具采用C/S架构,用户通过安装在桌面计算机上的客户端软件连接并操作后台的MySQL数据库,原理如图1.21所示,客户端是图形化用户界面(GUI)。
图1.21 图形化客户端
除了MySQL官方提供的管理工具MySQL Administrator和MySQL Workbench,还有很多第三方开发的优秀工具,比较著名的有:Navicat、Sequel Pro、HeidiSQL、SQL Maestro MySQL Tools Family、SQLWave、dbForge Studio、DBTools Manager、MyDB Studio、Aqua Data Studio、SQLyog、MYSQL Front和SQL Buddy等。
2.基于Web的管理工具
(基于Web的管理工具)
基于Web的管理工具采用B/S架构,用户计算机上无需再安装客户端,管理工具运行于 Web 服务器上,如图1.22所示。用户机器只要带有浏览器,就能以访问Web页的方式操作MySQL数据库里的数据。
图1.22 基于Web的管理工具
基于Web的管理工具有:phpMyAdmin、phpMyBackupPro和MySQL Sidu等。
习题
1.什么是数据模型?简述关系模型的特点。
2.说明数据库、数据库管理系统、数据库系统、数据库应用系统、数据库管理员的关系。
3.说明关系模型中的表、记录、码、主码的关系。
4.说明数据库管理系统的功能。
5.说明SQL语言的功能。
6.说明MySQL系统、数据库默认的安装路径是什么?如何修改默认的安装路径为用户希望的目录?
7.为什么数据库是一个容器?
8.什么是MySQL界面工具,分哪两大类?
9.练习数据库命令。
(1)创建test数据库,查看数据库存放的目录和文件。
(2)在test数据库中创建b1表,一个数据类型至少包含一个字段。
(3)用不同方法向b1表中输入几条记录,然后查询所有记录。