SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 1》创建数据库: 语法:create database 数据库名; 语法:show databases 查看已经存在数据库 举例: Mysql->create database zytest; 注意每一条要以;号结尾
Mysql->show databases;查询是否创建成功
>use zytest; 2》删除数据库: 语法:drop database 数据库名字;<使用此命令,请注意> 举例: Mysql->drop database zytest; 删除zytest Mysql->show databases; 查询是否删除成功 3》存储引擎介绍: 1>innoDB引擎 innoDB是mysql的一种存储引擎,inodb给mysql的表提供了事务日志,回滚、奔溃、修复能力和多版本并发控制的事务安全。Mysql从3.23.34a开始包含 innoDB存储引擎. innoDB是第一个提供外键约束的表引擎,而且对innoDB对事务处理的能力。也是其它引擎无法与之抗衡的。, innodb支持自动增长列使用auto_increment,自动增长列不值不能为空 innodb 存储引擎中支持外键Z(foreign key),外键所在的表为子表,外键所依赖的表为父母,父表中的被子表外检关联的字段必须是主键,当删除、更新父表 的某条信息时,子表也必须有相应的改变, innodb存储引擎中,创建表的表结构存储在.frm文件中,数据和索引存储在innodb_data_home_dir 和 innodb_data_file_path定义的表空间. 元数据文件所有的表的ibdata1如果不定义innodb_data_home_dir 参数。默认就在datadir下面,InnoDB每个数据表的元数据(metadata)总是保 存在ibdata1 这个共享表空间里,因此该文件必不可少innodb_data_file_path = ibdata1:10M:autoextend 数据和索引文件集合在一起:*.ibd每个表都有单独一个元数据, 表定义文件:*.frm 所有的表总的元数据文件为ibdata1 Inoodb存储引擎的 优势:在于提供了良好的事务管理、崩溃、修复能力和并发控制, 缺点:是其读写效率稍差,占用的数据空间相对比较大. 什么是事务??我们先来看看ACID原则 ACID是数据库事务正常执行的四个基本要素,分别指原子性、一致性、独立性及持久性 原子性(Atomicity):事务的原子性是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就 停止了.比如你从取款机取钱, 这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成. 一致性(Consistency):事务的一致性是指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随 之改变. 独立性(Isolation):事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致. 持久性(Durability):事务的持久性是指事务执行成功以后,该事务所对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚. 2>MyISAM引擎 MyISAM存储表分为3个文件,文件与表名相同,扩展包括frm,MYD和MYI, frm为扩展名的文件存储表的结构 myd为扩展名的文件存储数据 myi为扩展名的文件存储索引 优点:占用空间小,。处理速度快, 缺点:不支持事务日志的完整性和并发性 3>MEMORY 引擎 Mysql中的特殊引擎,所有的数据全部存放于内存当中,在企业生产环境当中。几乎是用不到。因为数据存储在内存,如果内存出现异常。将影响数据的完 整性。 优点:存储速度快 缺点:缺乏稳定性和完整性
MyISAM:不支持外键,不支持事务,索引和数据分开的,可以加载更多的索引,并且索引是压缩的,相对内存来说使用效率就提高不少,,他使用一 种表格锁定的机制,来优化多个并发读写操作,MYISAM强调了快速读取操作; 使用场合:在承载的大部分项目是读多写少的项目平台中,而MyISAM的读性能是比Innodb强不少的 Innodb: 支持外键,支持事务、回滚,但是索引和数据是紧密捆绑的,没有使用压缩从而会造成INNODB比MYISAM体积庞大不小。 使用场合:在承载的大部分项目执行insert 和update的话,应该选择InnoDB.
锁的介绍:mysql常见的三种锁级别——表级锁、页面锁、行级锁;其中表级锁有两种模式——表共享读锁和表独占写锁。
MyISAM: 表级锁:对myisam表进行读操作的时候,它不会阻塞其他用户对同一表的读请求,但会阻塞对同一表>的写操作; 对myisam表进行写操作的时候,它会阻塞其他用户对同一表的读、写请求. innodb:
提供行锁(locking on row level),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会 锁全表. 行级锁的优点如下: 1)当很多连接分别进行不同的查询时减小LOCK状态。 2)如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。 行级锁的缺点如下: 1)比页级锁和表级锁要占用更多的内存。 2)进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。 3)容易出现死锁。 注意:inodb不能确定操作的行,这个时候就使用的意向锁,也就是表锁on row level);
4》察看存储引擎: 存储引擎是Mysql的特点,Mysql可以选择多种存储引擎及不同的存储方式,是否进行事物处理等; 1> 查询Mysql支持的引擎 Mysql->show engines; Mysql->show engines\G; 2>查询Mysql引擎详细信息: Mysql->show engine innodb status\G; 3>查询Mysql默认存储引擎 Mysql-> show variables like 'storage_engine'; 如果想修改存储引擎,可以在 my.ini中进行修改或者my.cnf中的Default-storage-engine=引擎类型;
5》如何选择存储引擎: 在企业生产环境中,选择一个款合适的存储引擎是一个很复杂的问题。每一种存储引擎都有各自的优势,不能笼统的说,谁比谁好。通常用的比较多的 是innodb存储引擎 以下是存储引擎的对比: ==========================创建,修改,删除表: 1》创建表的方法: 语法:create table 表名( 属性名数据类型完整约束条件, 属性名数据类型条完整约束件, 。。。。。。。。。 属性名数据类型 );
举例: create table example0(
id int,
name varchar(20),
sexboolean); 2》表的完整性约束: |