您的位置:首页 > 数据库 > MySQL

MySQL学习笔记1——数据库与MySQL基础知识

2017-04-29 20:11 507 查看

MySQL基础

数据库系统(Database System)--DBS
数据库系统:数据库,Database,--DB
数据库管理系统,Database Management System,--DBMS
数据库管理系统三个阶段:网状模型
层级模型
关系模型(非关系模型)
关系型数据库(Relation Database Management System)(RDBMS):Oracle DB2 Sybase MS SQL Server MySQL
数据以表格形式记录
行是各种记录
列为记录对应的数据域(字段名)
行和列组成表,若干表组成数据库

MySQL安装配置
安装包:下载msi安装文件,安装完后,以管理员身份运行配置程序
mysql -u root -p -h127.0.0.1
\s //显示MySQL系统相关信息
\q(quit) //退出MySQL

归档文件:下载zip压缩文件,解压到指定位置,手动配置
复制my-default.ini备份,改名为my.ini
basedir='D:/mysql' //基本文件路径
datadir='D:/mysql/data' //数据文件路径(存储数据库文件,备份时一般得进控制台用命令行备份)
port=3306 //MySQL默认端口
default-character-set=gbk/utf8/ascii //设置数据库编码方式
default-storage-engine=InnoDb //设置默认数据库存储引擎
mysqld --install 'MySQL5' --default-file="D:/mysql/my.ini" //安装mysql服务并命名为MySQL5
mysqld --initialize --user=mysql --console //初始化数据库(即数据文件夹data)
登录MySQL
my.ini 尾添加 skip_grant_tables //忽略权限(无密码登录MySQL)
mysql -u root -p
mysql > use mysql;
mysql > desc
mysql > update use set authentication_string = PASSWORD('123456'); //初始化密码
set password = password('*******') //修改密码
在配置文件中my.ini删除skip_grant_tables
CMD命令行:net start MySQL5 //启动MySQL服务
net stop MySQL //停止MySQL服务

MySQl其他注意项
MySQL字符集, show characte set; //显示MySQL支持的字符集
show VARIABLES LIKE '%CHARACTER%'; //查看本地字符编码设置
set NAMES xxxx; //设置本地字符编码设置
MySQL字母大小写问题:关键字不区分大小写
数据库/表/视图名字由服务器的系统决定,类UNIX下,名区分大小写;windows下,名不区分大小写
存储引擎,是规划决定数据存储方式,索引建立方式,更行/查询放式的某种技术手段
MySQL支持的数据引擎:MyISAM,InnoDb,BDB,MEMORY,ARCHIVE
MySQL5.5默引擎为MyISAM,后改用InnoDB
SHOW ENGINE //查看MySQL支持的引擎类型
MyISAM与InnoDB的区别
1、 存储结构
MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
2、 存储空间
MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
3、 可移植性、备份及恢复
MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。InnoDB:免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。
4、 事务支持
MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
5、 AUTO_INCREMENT
MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。
6、 表锁差异
MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。
7、表主键
MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。
InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。
8、 表的具体行数
MyISAM:保存有表的总行数,如果select count(*) from table;会直接取出出该值。InnoDB:没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。
9、 CURD操作
MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE 从性能上InnoDB更优,但DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。
11、 外键
MyISAM:不支持
InnoDB:支持
通过上述的分析,基本上可以考虑使用InnoDB来替代MyISAM引擎了,原因是InnoDB自身很多良好的特点,比如事务支持、存储 过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多。另外,任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。
存储引擎选择的基本原则
采用MyISAM引擎
•   R/W > 100:1 且update相对较少 //R/W读写比时
•   并发不高
•   表数据量小
•   硬件资源有限
采用InnoDB引擎
•   R/W比较小,频繁更新大字段
•   表数据量超过1000万,并发高
•   安全性和可用性要求高
采用Memory引擎
•   有足够的内存
•   对数据一致性要求不高,如在线人数和session等应用
•   需要定期归档数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库