MYSQL理论

MYSQL常用命令解析

MYSQL理论

mysql的一些理论知识

主键(primary key)
用于唯一地标识表中的每一条记录 可以定义表中的一列或者多列主键。主键列上不能有两行相同的值,也不能为空值
sql语言
对数据库进行查询和修改的语言叫SQL语言,结构化的查询
ANSI(美国国家标准机构) SQL-92
经过92修改过后99年推出SQL-99
(1)数据定义语言ddl(data definition language):drop create alter等语句(增删改)
(2)数据操作语言dml(data manipulation language):insert update delete语句(增删改)
(3)数据查询语言dql(data query language):select(查询)
(4)数据控制语言dcl(data control language):grant revoke commit rollback等语句
mysql的优势
1.开源:免费
2.速度:运行速度快
3.容易使用:和其他大型数据库相比复杂程度较低,方便学习
4.可移植性:能在不同平台进行工作,比如window Linux unix
5.接口丰富:c,c++,python,php,ruby,java都有相应的api接口
6.支持查询语言;MySQL可以利用标准sql语法支持ODBC的应用程序
7.安全性和连续性:十分灵活的权限和密码系统,允许基于主机的验证。链接到服务器时,所有的密码采用加密形式,保证密码安全。且可以在任何有网络的地方直接通过账户密码访问数据库,提高数据共享效率。
mysql的几个实用端
MySQL后台程序:
mysqld:mysql启动程序
mysqld_safe:unix下启动mysql的启动脚本
mysql_multi:启动关闭脚本可以开启和关闭多台MySQL服务器
myisamchk:用来检查,维护和优化Myisam表的工具
mysqlbug:mysql的缺陷报告脚本
mysql.server 服务器启动脚本,用于使用特定级别的,运行启动服务的脚本,运行目录的系统。掉哟个mysqld_safe启动MySQL服务器
mysql_install_db:用于给MySQL进行初始化,通常在首次安装MySQL使用,用于设置日志等配置文件的存放位置
myisampack:压缩myisam表产生更小的只读表的工具
mysql:交互式输入sql语句或者从文件以批处理的方式执行文件的命令行工具
mysqlaccess:检测访问的主机名用户名数据库组合权限 检测权限的脚本
mysqladmin:更改我们MySQL的密码,执行各类管理操作,删除创建数据库,重载授权表,刷新日志,检索版本号,进程号以及服务器状态。
mysqlbinlog:查看二进制日志,可以用日志来恢复数据库数据
mysqlcheck:用于检查修复分析以及优化表的客户端程序
musqldump:将我们的数据库备份到指定的目录当中
mysqlhotcopy:当我们的MySQL处于运行过程中快速备份myisam表的工具
mysqlshow:显示数据库,表,列以及索引等相关信息的客户端程序
perror:显示系统错误代码含义的工具
MySQL中各个默认数据库
information schema : 信息数据库 储存关于MySQL服务器所维护的所有其他的数据库的信息。
mysql : 存放数据库的用户,权限设置,关键字等mysql自己需要使用的控制和管理信息。
performance_schema : 主要用于收集数据库服务器性能 只在5.5版本之后才有
数据库存储引擎
数据库存储引擎属于数据库底层软件组件,数据库管理系统使用数据引擎进行创建。查询,更新和删除数据的操作。
innodb:
(1)事务性数据库首选引擎,支持行级别锁定和外键,使用事务安全模式创建表。且为mysql5.5版本之后默认存储引擎
(2)具有对事务的提交,回滚,崩溃能力的事务安全存储引擎,可以处理巨大的数据量,性能效率高。支持外键
(3)具有非常高效的缓存性能,能缓存索引也能缓存数据,对硬件要求较高。
(4)使用innodb时,将在mysql目录下创建一个名字较ibdatal的10MB自动扩展文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
innodb使用场景
(1)使用事务时选取innodb,高并发时使用innodb
(2)数据更新较为频繁的场景 比如微博。
(3)数据一致性要求较高的业务,比如转账。
memory:
(1)memory存储引擎将数据存储到内存中,提供快速访问
(2)支持hash和btree索引,不支持blob和text列,支持auto_increment列和对可包含null值的列的索引
(3)不使用memory表时,直接删除表或者清空表数据可以释放空间。
myisam:
(1)myisam读取速度较快,占用资源相对较少,不支持事务,不支持外键,支持全文索引.空间索引
(2)myisam读写互相阻塞
(3)myisam只能缓存索引,不能缓存数据。
myisam使用场景
(1)不需要事务的业务
(2)适用于读取较多的业务,不适用与写数据较多的业务
(3)并发较低、数据修改少的业务
(4)硬盘资源较差可以选择适用myisam
查看所有的引擎的语法:show engines\G (\G是用于把结果更简洁更直观的显示出来)
transactions:当前存储引擎是否支持事务
XA:是否支持分布式
savepoints:是否支持保存点
show variables like ‘storage_engine’;查看默认的存储引擎
不同的存储引擎功能不同,占用的空间不同,读取的性能不同
–(2)–

功能 myisam memory innodb
存储限制 256TB RAM 64TB
支持事务 NO NO YES
支持全文索引 YES NO NO
支持数索引 YES YES YES
支持哈希索引 NO YES YES
支持数据缓存 NO NO YES
支持外键 NO NO YES