数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。随着信息技术的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式,数据库应用的越来越广泛,地位越来越重要。

数据库的发展主要有三个阶段:
1,层次模型
2,网状模型
3,关系模型
而目前被我们广泛使用的就是关系型数据库,而管理这种关系型数据库的软件为RDBMS(关系型数据库管理系统)。
RDBMS的特点:
  1.数据以表格的形式出现
  2.每行为各种记录名称
  3.每列为记录名称所对应的数据域
  4.许多的行和列组成一张表单
  5.若干的表单组成database
而目前主流的RDBMS有:
1,Oracle
相信我们技术圈的人士都听过Oracle的大名,它是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州。目前,Oracle产品覆盖了大、中、小型机等几十种机型,Oracle数据库性能优越,技术服务做的非常好,并已成为世界上使用最广泛的关系数据系统之一。并且,Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上不同的大、中、小型机上;可在VMS、DOS、UNIX、Windows等多种操作系统下工作。但是,它昂贵的售价让人望而生畏,主要被大型的企业所使用。
2,EnterpriseDB
EnterpriseDB公司提供基于PostgreSQL的分布,性能也非常优越,是面向企业级的应用数据库。但是,售价比Oracle便宜
3,PostgreSQL
PostgreSQL是自由的对象-关系数据库服务器(数据库管理系统),在灵活的BSD许可证下发行,是开源的一款性能优越的数据库软件。
4,DB2
IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性。
5,Mysql
mysql是一个开放源码的关系型数据库管理系统,它的象征符号是一只名为Sakila的海豚,代表着MySQL数据库和社团的速度、能力、精神和优秀品质。原开发者为瑞典的mysqlAB公司,该公司2008年被Sun公司收购。而2009年,Sun又被Oracle公司所收购,就这样mysql就成了Oracle旗下的产品。
MySQL性能高、成本低、可靠性好,是最流行的开源数据库,被广泛地应用在Internet上的中小型网站中。而随着MySQL的不断成熟,它也逐渐用于大规模网站和应用,比如维基百科、Google和Facebook等网站。而开源软件的黄金组合LAMP中的“M”指的就是MySQL。
但被mysql被Oracle公司收购后,Oracle大幅调涨MySQL商业版的售价,且Oracle公司不再支持Open Solaris的发展,因此导致共享软件社群们对于Oracle是否还会持续支援MySQL社群版(MySQL之中唯一的免费版本)有所隐忧,因此原先一些使用MySQL的开源软件逐渐转向其它的数据库软件。
6,SQL Server
microsoft出的一款数据库管理软件,适用于中小型的数据库
 
数据库中的数据组成部分有两种:
 元数据:特定软件所解析数据的元数据
 数据:数据本身
数据库视图有:
 1,逻辑模型:
     表(核心对象)
     索引(加速 查询操作,减慢写操作)
     视图(虚表)
     用户
     存储过程
     存储函数
     触发器
     事件调度器:能定期执行任务
     游标  
 2,物理模型:
    数据管理组件(元数据)
    存储引擎:专门用于存储数据和元数据,而一般每个软件的存储引擎是不一样的,即存储的结构是不同的
 
而我们本文浅析的对象就是--mysql,下面我们开始我们的航程:
一,mysql简介
mysql是用c和c++语言开发的,故工作的执行速度是非常快的。在企业级的应用中,一般要使用64bit的mysql,因为它支持的寻址空间更大。
它的主要特点:
1,完全多线程
2,搞可靠性
3,良好的伸缩性
4,易用性
5,遵循标准可移植性比较好
6,支持多用户
7,国际性
8,支持多种应用程序,例如:c,c++,java,perl,php,python,ruby,jdbc,odbc,.net等
9,开源软件
 
一般的开源软件,都会有几个发行版本,而mysql也不例外:
1,alpha:内测版
2,beta:公测版
3,RC:预发行版本
4,GA:公共可用正式版
而mysql的发行版中也有两个版本:
1,社区版
软件完全免费
2,企业版
功能比社区版更强大,提供一些特殊的组件和技术支持,是收费的
 
mysql的各种组件:
MySQL Server
MySQL Cluster
MySQL Proxy
MySQL Adminitrator
MySQL Query Browser
MySQL Workbench
MySQL Migration Toolkit
MySQL Embedded Server
MySQL Drivers and Connectors
 
mysql的存储引擎:
1,MyISAM:不支持事物机制;当创建一个数据表会产生三个文件:数据文件,索引文件和表结构定义文件
2,InnoDB:mysql 5.5以后版本之后默认使用的存储引擎,支持事物机制;当创建一个数据表只会产生一个文件:表空间文件
3,NDB:集群专用引擎
4,Archive:主要是将数据归档成一种格式,适合长期存放
5,Federrated:联合存储引擎
6,Memory:内存引擎;数据存储在内存中,但不能持久存储数据
7,Merge:此引擎允许你把许多结构相同的表合并为一个表
 
RDBMS只是一个数据库管理软件,那么他怎么和数据库进行交户呢?
这就用到了SQL接口,通过SQL语言来实现对数据库的操作。而不同的数据库管理软件,所能使用的SQL语言也不尽相同:
而mysql使用的SQL语言为通常有如下类型:
1,DDL
数据定义语言,主要有CREATE,ALTER,DROP命令
2,DML
数据操作语言,主要有INSERT,DELETE,UPDATE,TRUNCATE等
3,DQL
数据查询语言,主要有SELECT
 
二,mysql的安装
1,源码安装
主要有源码包和rpm格式的源码
2,二进制
rpm包的格式,rpm包又分为放行商和mysql官方的软件包
绿色软件,我们解压直接能使用
 
mysqld服务器端的配置文件的查询次序为:
1,/etc/my.cnf
2,/etc/mysql/my.cnf
3,$MYSQL_HOME/my.cnf
4,/path/to/file when defaults-extra-file=/path/to/file is specified
5,~/.my.cnf
Windows下mysqld服务器端配置文件的查询次序为:
1,%WINDIR%\my.ini, %WINDIR%\my.cnf
2,C:\my.ini, C:\my.cnf
3,%INSTALLDIR%\my.ini, %INSTALLDIR%\my.cnf
4,/path/to/file when defaults-extra-file=/path/to/file is specified
并且无论当前的配置文件,查找到或查找不到,都会往下查找下去,并且以最近查找的配置文件的定义为准
 
三,mysql客户端工具的使用
1,mysql
它是登录mysqld服务器的一个工具,登录之后可以对服务器进行管理
常用选项:
-u 指定用户名
-p 指定密码
-h 指定mysqld服务器所在的主机,缺省为localhost
 
#mysql -uroot -pyour_password
用root用户直接登录mysql(刚安装的mysql默认root用户的密码为空)
 
#mysql -uroot -p
Enter password:
输入你的密码即可登录
 
#mysql -uroot -pyourpassword < my.sql
导入一个sql脚本
 
#mysql -uroot -pyourpassword --safe-updates
登录进mysql之后,sql命令的执行必须要加上where关键字,否则无效
 
而登入mysql之后的一些基本命令:
首先,我们要理解各种提示符的意思:
-> 续行符
‘> 表示等待输入另一‘
“> 同上
`> 通常用于引用数据库对象
/*> 提供注释符信息 
 
如果是服务器端的命令语句的话,语句最后要加";",表示语句到此结束。客户端命令不用加";"。
 
基本命令:
\? 获取能使用的命令帮助列表
\d 修改语句的结束符,默认为;
 例:\d //
\g 不管结束符是什么,都会执行  
例:mysql> show databases\g 
\G 不管结束符是什么,输出结果竖排  
例:mysql> show databases\G
\! 执行shell命令   
例:mysql> \! ls  /root
\s 从服务器端获取状态信息,并显示
\. 批处理模式,用于执行一个SQL脚本
 
 
注意:mysql的命令是不区分大小写的;字段也是不区分大小写的
常用命令:
mysql>use db_name
更改默认使用的数据库
mysql>show databases;
查看存在的数据库
mysql>show warnings;
查看警告信息
mysql>show tables;
查看数据库中的表
mysql>desc tablename;
查看表结构
mysql>select database();
查看当前默认的数据库
mysql>select user();
查看当前登录的用户
 
而其它命令的使用方法,可以通过help命令获取到:
help command 获取命令的帮助信息
例:mysql> help create
    mysql> help alter database
    mysql> help show
    
mysql客户端的命令历史文件位置:~/.mysql_history
 
2,mysqladmin
它也是一个mysqld服务器客户端的一个管理工具,不用登录直接进行管理
 
sqluser:指的是登录mysql的用户
yourpassword:只登录mysql用户的密码
 
#mysqladmin -usqluser -pyourpassword create databasename  
创建一个新数据库 
#mysqladmin -usqluser -pyourpassword drop databasename    
删除一个数据库及其所有表 
#mysqladmin -usqluser -pyourpassword extended-status      
给出服务器的一个扩展状态消息
#mysqladmin -usqluser -pyourpassword flush-hosts          
洗掉所有缓存的主机 
#mysqladmin -usqluser -pyourpassword flush-logs           
洗掉所有日志
#mysqladmin -usqluser -pyourpassword flush-tables         
洗掉所有表
#mysqladmin -usqluser -pyourpassword flush-privileges     
再次装载授权表(同reload)
#mysqladmin -usqluser -pyourpassword kill id...           
杀死mysql线程
#mysqladmin -usqluser -pyourpassword password             
新口令,将老口令改为新口令
#mysqladmin -usqluser -pyourpassword ping                 
检查mysqld运行状态
#mysqladmin -usqluser -pyourpassword processlist          
显示服务其中活跃线程列表
#mysqladmin -usqluser -pyourpassword reload               
重载授权表  
#mysqladmin -usqluser -pyourpassword refresh              
洗掉所有表并关闭和打开日志文件 
#mysqladmin -usqluser -pyourpassword shutdown             
关掉服务器  
#mysqladmin -usqluser -pyourpassword status              
给出服务器的状态信息
(#mysqladmin -usqluser -pyourpassword --sleep 3 status
每三秒显示一次服务器端的状态信息) 
#mysqladmin -usqluser -pyourpassword variables            
打印出可用变量信息
#mysqladmin -usqluser -pyourpassword version              
得到服务器的版本信息 
 
当然,前面我们解析了mysql的配置文件my.cnf,如果我们不想每次登录都输入密码的话,我们可以在当前用户的家目录建立一个文件:.my.cnf。
我们以mysql中的root用户为例,root用户的密码是123456:
#cd ~
#vim .my.cnf
添加如下内容:
[mysql]
user=root
password=123456
这样我们用mysql客户端登录服务器就不用使用密码了,可直接登录:
# mysql  可直接登录mysql服务器
即[]中的内容是关键,如果我们定义为mysqladmin,则使用mysqladmin就不用输入密码,而如果我们想使用mysql的客户端工具都不输入密码,则把[]中内容该为“client”:
例:
#cd ~
#vim .my.cnf
添加如下内容:
[client]
user=root
password=123456
这样我们使用mysql的客户端工具,都不用输入密码
#mysqladmin version  可直接查看mysql版本
 
好了,要想了解更多,且看下文分解...