MySQL 是由瑞典MySQL AB 公司开发,目前属于Oracle公司。
MySQL 是最流行的关系型数据库管理系统(Relational Database Management System),即 RDBMS,这种所谓的"关系型"可以理解为"表格"的概念,一个关系型数据库由若干个表格组成。将数据保存在不同的表中,而不是放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 特点
* 免费开源,使用不需要支付额外的费用。
* 跨平台,可以运行在各个系统上,并且支持多种语言,这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等等。
* 使用标准的 SQL 数据语言形式。
* 支持大型的数据库,可以处理拥有上千万条记录的大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
* 对 PHP 有很好的支持,PHP 是目前最流行的 Web 开发语言。
* 采用了 GPL 协议,如果有能力可以通过修改源码来定制开发自己的 MySQL 系统。
* * * * *
#### 数据库系统
* 数据库系统类似于文件系统,是由文件系统发展过来的。
* 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,相当于文件系统中的文件夹。
* 数据表(Table)是存储数据的集合,由行和列构成,相当于文件系统中的文件。
每个数据库都有一个或多个不同的 API 用于创建、访问、管理、搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢,所以现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 特点?
* 数据以表格的形式来组织数据的
* 每行(记录)为一条数据的具体信息(一行多个列字段值)
* 每列(字段)为一个字段的不同值(多行的同一个列字段值)
* 许多的行和列组成一张表
* 若干的表组成数据库
* * * * *
#### RDBMS 术语
* 数据库:一些关联表的集合。
* 数据表:数据的矩阵,在一个数据库中的表看起来像一个简单的电子表格。
* 列:即字段/数据元素,包含了相同的数据, 例如邮政编码的数据。
* 行:即元组/记录,是一组相关的数据,例如一条用户订阅的数据。
* 冗余:存储两倍数据,冗余可以使系统速度更快。
* 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
* 外键:外键用于关联两个表。
* 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
* 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,类似于书籍的目录。
* 参照完整性:参照的完整性要求关系中不允许引用不存在的实体,与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
* * * * *
#### SQL 语句
SQL 是 Structed Query Language 的缩写,即“结构化查询语言”,原名是 sequel,后来因为法律原因改名,现在是国际标准。我们在命令行里敲命令与数据库进行交互,所敲的命令就是 SQL 语句。
* MySQL 对 SQL 标准的支持还是比较完善的,而且进行了一定的扩充,不过也有违背 SQL 标准的地方。
* MySQL 的 SQL 默认不区分大小写。
* * * * *
#### 数据库/表基本操作命令
1、数据库
~~~
show databases; #查看数据库,命令以";"结束,也可以用 \g 或 \G。也可以用 schema 代替 database,是database别名,工程师一般用 database,学术派用 schema。
use db_name #可以不加";"
create database db_name; #创建数据库
drop database [if exists] db_name; #删除数据库
show create database db_name; #查看数据库创建语句
~~~
2、数据表
~~~
show tables; #查看表
desc/describe tbl_name; #查看表结构,\G 将原按列改为按行显示。
create table tbl_name(
id int(11) default null comment '字段注释',
age int
) engine=innodb default charset = utf8; #创建表
drop table [if exists] tbl_name; #删除表
show create table tbl_name; #查看建表语句
~~~
3、其他
~~~
show warnings; #查看警告
~~~
* * * * *
MySQL5.6 之前安装完默认密码为空。
set password for root@'localhost' = password('123456');
flush privileges; #刷新权限
MySQL5.6 之后安装完不能登录,默认root密码问题,需更改密码才能正常使用。
set password = password('123456');
flush privileges; #刷新权限
日常维护命令
1、查看 MySQL 运行进程
mysql>show processlist;
2、查看 Innodb 引擎运行情况
mysql>show engine innodb status\G
3、查看 MySQL 参数情况
mysql>show [global] variables like '%innodb%';
4、查看 MySQL 运行状态:
mysql>show [global] status like '%thread%';
5、查看表、存储过程、触发器
mysql>show tables;
mysql>show procedure status; show create procedure USP_Cursor;
mysql>show triggers; show create trigger TRI_UP_User_Delete;
6、查看 MySQL 帮助
mysql>help;
mysql>help conntents;
mysql>help show;