MySQL介绍及基本使用(一)
Chapter 9
MySQL介绍及基本使用
0.关系数据库
0.1 概念及特征
所谓的关系型数据库,是建立在关系模型
基础上的数据库,借助于集合代数
等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
-
数据以表格的形式出现 -
每行为各种记录名称 -
每列为记录名称所对应的数据域 -
许多的行和列组成一张表单 -
若干的表单组成database
0.2 相关术语
数据库: 数据库是一些关联表的集合。
-
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 -
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。 -
行:一行(=元组,或记录)是一组相关的数据。 -
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 -
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。 -
外键:外键用于关联两个表。 -
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 -
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 -
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
1.MySQL概述
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关系数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
-
MySQL 是开源的,目前隶属于 Oracle 旗下产品。 -
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 -
MySQL 使用标准的 SQL 数据语言形式。 -
MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、 Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。 -
MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。 -
MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。 -
MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
-
表头(header): 每一列的名称; -
列(col): 具有相同数据类型的数据的集合; -
行(row): 每一行用来描述某条记录的具体信息; -
值(value): 行的具体信息, 每个值必须与该列的数据类型相同; -
键(key): 键的值在当前列中具有唯一性。
2.MySQL服务的启动和关闭
2.1 启动与停止服务
启动
可以采用以下两种方式:
1.通过系统服务器启动MySQL
Windows 服务列表里设置手动或者自动方式启动
后台运行服务。
2.在命令提示符下启动MySQL
net start mysql
停止
,采用三种方式:
1.通过系统服务器启动MySQL
Windows 服务列表里设置手动或者自动方式停用
后台运行服务。
2.在命令提示符下关闭MySQL
net stop mysql
3.第三方工具phpAdmin命令关闭(知道即可)
mysqladmin –uroot shutdown –proot
2.2 MySQL服务器连接和断开
-
连接,cmd窗口中输入以下命令,并回车。
mysql –u root –h127.0.0.1 –p password
-
断开
mysql>
提示符下,输入quit 或者 exit命令回车均可
3 MySQL数据库操作
3.1 创建数据库
语法格式如下:
CREATE DATABASE 数据库名;
在创建数据库时,数据库命名有以下几项规则:
“不能与其他数据库重名,否则将发生错误。
名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,可以使用上述的任意字符开头,但不能使用单独的数字,否则会造成它与数值相混淆。
名称最长可为64个字符,而别名最多可长达256个字符。
不能使用MySQL关键字作为数据库名、表名。
在默认情况下,Windows下数据库名、表名的大小写是不敏感的,而在Linux下数据库名、表名的大小写是敏感的。为了便于数据库在平台间进行移植,建议采用小写来定义数据库名和表名。
3.2 查看数据库
成功创建数据库后,可以使用SHOW命令查看MySQL服务器中的所有数据库信息。
语法格式如下:
SHOW DATABASES;
3.3 选择数据库
虽然成功创建了数据库,但并不表示当前就在操作自己定义的数据库。可以使用USE语句选择一个数据库,使其成为当前默认数据库。 语法格式如下:
USE 数据库名;
3.4 删除数据库
语法格式如下:
DROP DATABASE 数据库名;
注意: 以上语法格式中,命令关键字不区分大小写。
4 MySQL数据表操作
4.1 创建数据表
创建MySQL数据表需要表名
、表字段名
、定义每个表字段
信息:
CREATE TABLE table_name (column_name column_type);
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
`test` VARCHAR(20) DEFAULT("HLLO")
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.2 查看表结构
1.SHOW COLUMNS语句 语法格式:
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名];
或
SHOW [FULL] COLUMNS FROM 数据库名.数据表名;
2.DESCRIBE语句 语法格式:
DESCRIBE 数据表名;
其中,DESCRIBE可以简写成DESC。
4.3 修改表结构
语法格式如下:
ALTER[IGNORE] TABLE 数据表名 alter_spec[,alter_spec]…
其中,alter_spec子句定义要修改的内容,其语法如下: alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ] //添加新字段
| ADD INDEX [index_name] (index_col_name,...) //添加索引名称
| ADD PRIMARY KEY (index_col_name,...) //添加主键名称
| ADD UNIQUE [index_name] (index_col_name,...) //添加唯一索引
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改
字段名称
| CHANGE [COLUMN] old_col_name create_definition //修改字段类型
| MODIFY [COLUMN] create_definition //修改子句定义字段
| DROP [COLUMN] col_name //删除字段名称
| DROP PRIMARY KEY //删除主键名称
| DROP INDEX index_name //删除索引名称
| RENAME [AS] new_tbl_name //更改表名
| table_options
ALTER TABLE语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的一个修改。
4.4 重命名表
重命名数据表使用RENAME TABLE语句,语法如下:
RENAME TABLE 数据表名1 To 数据表名2
4.5 删除表
删除数据表的操作很简单,同删除数据库的操作类似,使用DROP TABLE语句即可实现。其格式如下:
DROP TABLE 数据表名;
4.6 更多参考
MySQL 8.0 官方文档: https://dev.mysql.com/doc/refman/8.0/en/
5.MySQL语句操作
5.1 插入记录
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
5.2 查询数据库记录
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
5.3 修改记录
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
5.4 删除记录
DELETE FROM table_name [WHERE Clause]
6.MySQL数据类型
6.1 数字类型
包括准确数字的数据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),还包括近似数字的数据类型(FLOAT、REAL和DOUBLE PRECISION)。其中的关键词INT是INTEGER的同义词,关键词DEC是DECIMAL的同义词。 在创建表时,使用哪种数字类型,应遵循以下原则。
(1)选择最小的可用类型,如果值永远不超过127,则使用TINYINT比INT强。
(2)对于完全都是数字的,可以选择整数类型。
(3)浮点类型用于可能具有小数部分的数。例如货物单价、网上购物交付金额等。
6.2 字符串类型
字符串类型可以分为3类:普通的文本字符串类型(CHAR和VARCHAR)、可变类型(TEXT和BLOB)和特殊类型(SET和ENUM)。它们之间都有一定的区别,取值的范围不同,应用的地方也不同。 (1)普通的文本字符串类型,即CHAR和VARCHAR类型,CHAR列的长度被固定为创建表所声明的长度,取值在1~255之间;VARCHAR列的值是可变长度的字符串,取值和CHAR一样。
(2)TEXT和BLOB类型。它们的大小可以改变,TEXT类型适合存储长文本,而BLOB类型适合存储二进制数据,支持任何数据,例如文本、声音和图像等。
(3)特殊类型SET和ENUM
使用字符串类型的原则
(1)从速度方面考虑,要选择固定的列,可以使用CHAR类型。
(2)要节省空间,使用动态的列,可以使用VARCHAR类型。
(3)要将列中的内容限制在一种选择,可以使用ENUM类型。
(4)允许在一个列中有多于一个的条目,可以使用SET类型。
(5)如果要搜索的内容不区分大小写,可以使用TEXT类型。
(6)如果要搜索的内容区分大小写,可以使用BLOB类型。
6.3 日期和时间数据类型
日期和时间类型包括:DATETIME、DATE、TIMESTAMP、TIME和YEAR。其中的每种类型都有其取值的范围,如赋予它一个不合法的值,将会被“0”代替。
说明: 在MySQL中,日期的顺序是按照标准的ANSISQL格式进行输出的。
文章部分内容来源:菜鸟教程(www.runoob.com)