MySQL
起源
20世纪70年代末,一位名叫Michael Widenius(Monty)的还不满20岁的孩子借了一台计算机,开始学习编程。笨鸟先飞早入林,关键是人家还不笨,所以很快在Tapio Laakso Inc找到了工作。Monty在这家公司除了练好了技术,最大收获就是结识了Allan Larssion,两人在1986年成立了TCX DataKonsult公司(MySQL公司的前身),这是一家外包公司,主要为客户提供数据挖掘方面的业务。
提到数据挖掘,自然而然的想到了数据库。使用数据库时,如果数据库中的数据量不大时一切都不是问题,但是随着数据量的增多,不仅性能会出现问题,运算的复杂度等都呈几何级数的增加。而且那时是80年代,服务器的处理能力可能还不如现在的智能手机。所以工作难度可想而知。
同时,Monty开发了一款名为UNIREG的数据库管理工具,用来利用索引顺序来读取数据,这种方式就是ISAM存储引擎算法的前身。但是UNIREG只是数据库内部系统并不具备SQL接口,而Monty深刻地理解没必要重复发明车轮,于是他选择了一个当时比较流行得商用产品——mSQL数据库,用于接收外部请求,同时使用自己开发的ISAM来处理数据,后来发现使用效率并不是很高。当时Monty尝试联系了mSQL的开发者,希望可以使ISAM和mSQL做一个深度结合,以提升处理性能。但最终并没有达成合作。
Monty一咬牙,干脆重写了一套与mSQL功能类似,但性能更好的SQL接口,同时保持了一定的兼容性,这样就方便原来那些使用mSQL的第三方代码,很容易就可以切换到使用新的SQL接口上,这套接口后来就演变称为MySQL。
1996年,Monty与David Axmart一起协作,写出了MySQL的第一个版本,几个月后就跳过2.0版本,直接发布了3.11版本。
1998年后Monty、Allan和David三人创建了MySQL AB。MySQL AB负责MySQL软件的核心开发,并且拥有“MySQL”的商标和版权。同年MySQL发布了正式版本。
发展
2000年ISAM引擎华丽变身为MyISAM存储引擎。MySQL开放了自己的源代码,不过MySQL数据库并不是简单的开源,而是采用双许可证的方式。也就是说如果是普通用户可以随便使用MySQL,但是要基于MySQL从事商用行为,就必须先向MySQL支付一定的费用,以获得许可。
2001年MySQL数据库中加入了另一个存储引擎InnoDB。InnoDB支持事务,支持行级锁定,对于高并发的用户来说,可谓及时雨。至此,MySQL中的MyISAM和InnoDB两大主力引擎均已就为,而互联网大潮也早就鼓舞起来,MySQL也开始有了自己的市场。
2005年,MySQL 5.0版本发布,这是个非常重要的版本,提供了众多特性,比如说:存储过程、触发器、视图、游标、分布式事务等,它也越来越像是一个企业级的数据库,具备了较为全面的技术指标。
正当一切看起来很顺利的时候,InnoDB存储引擎的版权商Innobase被Oracle收购。童年Oracle有收购了Sleepcat公司,该公司为MySQL提供了支持事务的BDB存储引擎。很明显MySQL被Oracle盯上了。
2007年MySQL的年总收入已经达到了7500万没用,照此下去2008年非常有希望达到1个亿的目标。然而,事实难料,SUN公司出价10亿美元,收购MySQL公司,及其拥有的MySQL产品、商标及版本。
后来由于种种原因MySQL创始人:Michael Widenius、Allan Larssion先后向SUN公司提交了辞呈,离开了他们一手创立的企业。
2009年Oracle公司出价74亿美元收购SUN公司,通过收购SUN公司,Oracle终于将MySQL收入囊中。
经过几年的折腾MySQL的发展虽然不至于完全停止,可是也大受影响。将MySQL纳入囊中之后,Oracle将原有的MySQL的版本划分和分支重新整理,6.0版本被取消,5.1和5.5版本进行不断的bug修复,并放出新的beta版本。
安装
1)找到适合自己系统的MySQL安装包,双击打开
2)点击Next进行下一步
3)选择同意协议,点击Next
4)选择Custom,点击Next
5)选择MySQL的安装目录,点击Next
6)确认路径信息,选择Install
7)进入读条状态,稍安勿躁
8)Next
9)Next
10)选择Configure…点击Finish
11)选择Next
12)选择详细配置,点击Next
13)选择开发者机器,点击Next
14)选择多用途数据库,点击Next
15)设置数据库实例路径,一般不改使用默认,点击Next
16)设置并发连接上线,点击Next
17)一般不用改使用默认值即可,点击Next
18)设置数据库编码为utf8(关键步骤)
19)设置MySQL服务信息,点击Next
20)设置超级管理员root的密码,我这里设置为root,点击Next
21)点击Execute执行操作
22)出现四个对勾,配置成功,点击Finish
23)打开命令行窗口CMD
24)输入mysql –uroot –proot,出现如下内容
25)在输入 show databases出现数据库信息,MySQL安装成功
26)输入quit退出数据库
卸载
1)打开控制面板,找到卸载程序
2)找到MySQL Server 5.1,双击选择是,等待程序自动卸载
3)找到MySQL安装目录删除MySQL文件夹
4)打开注册表
5)删除以下内容:
a)HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
6)删除C:\ProgramData下的MySQL文件夹
基本操作
MySQL的重要文件
MySQL安装目录\bin\ mysqld.exe
MySQL的服务器程序,它必须启动数据库才能正常使用
MySQL安装目录\bin\ mysql.exe
MySQL的客户端程序,用来操作MySQL数据库
MySQL安装目录\ my.ini
MySQL数据库的配置文件
登录:mysql -u用户名 -p密码
退出:quit或exit
基本SQL语法
SQL语句可以写成单行或者多行,以分号结尾。
MySQL中不区分大小写,但是建议关键字大小。
SQL语句
数据定义语言DDL(Data Definition Language)
数据操作语言DML(data manipulation language)
数据控制语言DCL(Data Control Language)
数据查询语言DQL(Data QueryLanguage)
常见语句:
登录:mysql –u用户名 –p密码
退出:quit或exit
查看数据库的编码信息:show variables like 'char%';
显示所有数据库:show databases;
访问数据库:use 数据库名;
查看所有的表:show tables;
创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]
删除数据库:DROP DATABASE [IF EXISTS] 数据库名
创建表
语法:
CREATE TABLE [IF NOT EXISTS] 表名
(
列名 类型,
列名 类型,
…
其他选项
)
查看表结构:DESC 表名;
删除表:DROP TABLE [IF EXISTS] 表名
重命名表:RENAME TABLE 旧名 TO 新名;
插入数据
INSERT INTO 表名 (列名1,列名2,列名3…) VALUES(值1,值2,值3);
INSERT INTO 表名 VALUES(值1,值2,值3);
修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE …
删除数据
DELETE FROM 表名 WHERE…
清空表中的数据
TRUNCATE [TABLE] 表名;
查询表
SELECT * FROM 表名 WHERE…;
SELECT 列名1 别名1 , 列名2 别名2 … FROM 表名 WHERE…
SELECT * FROM 表名 WHERE … LIMIT 索引 , 长度
常见数据类型
字符串
数据类型 说明
CHAR 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1)
VARCHAR 可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串
TINYTEXT 同TEXT,最大长度为255字节
MEDUIMTEXT 同TEXT,最大长度为16K
TEXT 最大长度为64K的变长文本
LONGTEXT 同Text,最大长度为4GB(纯文本,一般不会到4G)
数值
数据类型 说明
int[(m)] 有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)
无符号值:0到4294967295(0 到2^32 – 1)
double[(m, d)] 最小非零值:±2.2250738585072014e – 308
decimal (m, d) 可变;其值的范围依赖于m 和d
时间
数据类型 说明
DATE 1000-01-01——9999-12-31
TIME -838:59:59——838:59:59
DATETIME 1000-01-01 00:00:00——9999-12-31 23:59:59
TIMESTAMP 19700101080001——20380119111407
二进制
数据类型 说明
TITYBLOB 最大长度为255字节
BLOB 最大长度为64KB
MEDIUMBLOB 最大长度为16MB
LONGBLOB 最大长度为4GB
转载于:https://www.cnblogs.com/mazhitao/p/7424428.html