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 |