一、数据库介绍
mysql是最流行的关系型数据库管理系统之一,是由MySQL AB 公司开发,目前属于Oracle公司产品。
MySQL软件采用双授权政策,分为社区版和商业版。体积小、速度快,
开放源码,一般中小型网站开发都选择MySQL作为网站的数据库。
关系型数据库理解:将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
其他大型数据库有:Oracle、DB2、SQL Server.
Linux
作为
操作系统
,Apache 或
Nginx
作为
Web
服务器,MySQL 作为
数据库
,PHP/Perl/
Python
作为服务器端
脚本
解释器
。由于这四个软件都是免费或
开放源码
软件(
FLOSS
),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的
网站系统
,被业界称为“
LAMP
“或“
LNMP
”组合。
二、存储引擎
例如,如果你想要研究临时数据,也许你需要使用到内存存储引擎。内存存储引擎是能够在内存中存储所有数据。又或者你需要一个支持事务处理的数据库。等等这些不同的技术以及配套的相关功能,在MySQL中被称作存储引擎(表类型)。
MySQL有不同的存储引擎,可以预先设置或者在MySQL服务器中开启。
在MySQL中查看提供的存储引擎:show engines;
MySQL数据库的存储引擎:
MySQL的存储引擎包括:MYISAM、InnoDB、BDB、MEMORY、
MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB是提供事务安全的表,其他是非事务安全表。
最常用的2个存储引擎:
Myisam是默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
InnoDB是MySQL5.5以上版本的默认引擎,具有提交、回滚和崩溃恢复能力的事务安全,但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
修改mysql的默认存储引擎
1、查看mysql存储引擎命令,
在mysql>提示符下搞入show engines;
字段 Support为:Default表示默认存储引擎
www.2cto.com
2、设置InnoDB为默认引擎:
在配置文件my.cnf中的 [mysqld] 下面加入
default-storage-engine=INNODB 一句
3、重启mysql服务器:
mysqladmin -u root -p shutdown
或者service mysqld restart 登录mysql数据库
三、MySQL的基本操作
1. 查看show
show databases; #查看所有的库
use 库名;show tables; #查看某个库下的所有表
show engines; #查看数据库的存储引擎
show variables like '%storage_engine%'; #查看当前默认的存储引擎
show create table 表名; #查看创建的表的情况
show status; #查看状态
use 库名;desc 表; #查看某库下的某个表的数据结构
2. 查看select
select version(); #查看当前版本
select user(); #查看当前用户
select database(); #查看当前的库
select user,password,host from mysql.user; #查看mysql库下的user用户
use 库名;select * from 表名; #查看表的数据
select * from 库名.表名; #也是查看库下的表的内容
3. 创建create以及插入insert
(1)create database 库名; #创建库
(2)create table 表名; #创建表
(3)create table 表名 (`字段名` int(1), `字段名` char(10)); #创建表和表中的字段、int和char是字段类型,()内的数字是这个 字段占用的字节,储存长度。
(4)insert into 库名 value('对应第一个字段的内容','对应的第二个字段的内容'); #往新建的表的字段中插入数据,对应字段的数据。
(5)select * from 表名; #查看表的内容
4. 授权grant,创建用户和密码,删除授权revoke
grant all on *.* to 'user'@'IP' identified by '密码'; #授权给某个用户权限设置密码
grant all on discuz.* to 'user'@'IP' identified by '密码';
revoke all on *.* from 'user'@'IP'; #取消授权
5.更新密码update
update user set password=password(密码) where user='用户'; #更新密码
需要在对应的库下
mysql.user指的是mysql库下的user。
6. 删除drop、delete
drop database 库名; #删除库
use 库名;drop table 表名; # 删除库下的表
delete from 表名 where 字段名 = 字段内容; #delete删除某表的某行数据,字段名若是中文需要加反引号。
7. 数据备份mysqldump还原mysql
mysqldump -u root -p 库名 > 文件名.sql #mysqldump备份数据库
mysql -u root -p 库名 < 文件名.sql #mysql还原数据库
mysqldump –uroot –p –default-character-set=utf8 db >1.sql #备份时指定字符集
mysqldump -uroot -p 库名 表名 > 文件名.sql
更过数据备份了解:
http://www.jb51.net/article/74613.htm
冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;
热备(hot backup):备份的同时,业务不受影响。
注:
这种类型的备份,取决于业务的需求,而不是备份工具
MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具