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--SQL编程(基础知识) 学习笔记1
- MySQL学习笔记之一:数据库基础理论及客户端工具的使用
- MySQL学习笔记 1 - 基础知识
- C++数据库操作学习笔记:ADO基础知识
- MySQL学习笔记(一)—数据库基础
- MySQL 数据库学习 基础知识
- MySQL 学习基础笔记-MySQL基本数据库的操作
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.11Java数据库操作(4.11.1-4.11.8)
- MySql基础知识学习笔记
- 数据库的基础知识学习笔记(用的是wampserver中的mysql数据库)
- mysql学习笔记之基础知识
- SQL的详细语法介绍——对于学习数据库最基础知识一
- extjs 学习笔记(一) 一些基础知识
- SQL的详细语法介绍——对于学习数据库最基础知识二
- 有关DataForm组件的研究_基础知识和实现服务端批量CURD——Silverlight学习笔记[23]
- [ITIL学习笔记]ITIL基础知识
- 有关AutoCompleteBox组件的研究[1]_基础知识——Silverlight学习笔记[36]
- fedora学习笔记 1:fedora与linux的一点基础知识
- J2EE学习笔记三:EJB基础概念和知识
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节