MySQL学习笔记
MySQL日期格式 %Y %m %d %h %i %s
str_to_date('字符串日期','日期格式') 把字符串转成date格式
insert into book (id,price,name,time) values(3,63.2,'lisi',str_to_date('1997-4-20','%Y-%m-%d'));
select id,date_format(time,'%d/%m/%Y') as date from book;
date是短日期,只包括年月日 '%Y-%m-%d'
datetime是长日期,包括年月日时分秒 '%Y-%m-%d %h : %i :%s'
Java时间格式 YYYY-MM-dd HH:mm:ss SSS
1.创建表的语句
drop table if exists xxx;
create table xxx{
id int primary key,
name varchar(255)
}engine=MyISAM default charset=utf8;
2.union 将多条查询语句的结果合并成一个结果
特点:
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项
3.count(列号) 和count(*)不会忽略null值,count(字段名)会忽略null。
1.存储引擎
MYISAM和InnoDB的区别
MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,⽽且提供了⼤量的特性,包括全⽂索引、压缩、空间函数等,但MyISAM不⽀持事务和⾏级锁,⽽且最⼤的缺陷就是崩溃后⽆法安全恢复。不过,5.5版本之后,MySQL引⼊了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。
两者对比
- 是否支持行级锁: MyISAM 只有表级锁(table-level locking),⽽InnoDB ⽀持⾏级锁(row-level locking)和表级锁,默认为⾏级锁。
- 是否⽀持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原⼦性,其执⾏速度⽐InnoDB类型更快,但是不提供事务⽀持。但是InnoDB 提供事务⽀持事务,外部键等⾼级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能⼒(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
- 是否⽀持外键: MyISAM不⽀持,⽽InnoDB⽀持。
- 是否⽀持****MVCC :仅 InnoDB ⽀持。应对⾼并发事务, MVCC⽐单纯的加锁更⾼效;MVCC只在READ COMMITTED 和 REPEATABLE READ 两个隔离级别下⼯作;MVCC可以使⽤ 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统⼀。
- 15623004306
MYISAM
它管理的表具有以下特征:
-
使用三个文件表示每个表:
-
格式文件:存储表结构的定义(.frm)
-
数据文件:存储表行的内容(.MYD)
-
索引文件:存储表上索引(.MYI):索引是一本书的索引,缩小扫描范围,提高检索效率
对于一张表来说,只要是主键,或者加unique约束的字段上会自动创建索引。
-
-
可被转化为压缩、只读表来节省空间。
InnoDB是MySQL缺省的存储引擎
它管理的表具有以下特征:
- 每个InnoDB表在数据库目录中以.frm格式文件表示
- InnoDB表空间tablespace被用于存储表的内容
- 提供一组用来记录事务性活动的日志文件
- 用COMMIT、SAVEPOINT及ROLLBAK支持事务处理
- 提供全ACID兼容
- 在MySQL服务器崩溃后提供自动恢复
- 多版本(MVCC)和行级锁定
- 支持外键及引用的完整性,包括级联删除和更新
InnoDB最大的特点是支持事务,以保证数据的安全,效率不是很高,并且也不能被压缩,不能转换为只读,不能很好的节省存储空间。
MEMORY存储引擎
使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,非常快!
它管理的表具有以下特征:
- 每个表在数据库目录中以.frm格式文件表示
- 表数据及索引被存储在内存中
- 表级锁机制
- 不能包含TEXT或BLOB字段
- 缺点:不安全,关机之后数据消失
2.事务(transaction)
一个事务就是一个完整的业务逻辑,一个最小的工作单元,不可再分。只有DML语句与事务有关,
INSERT,DELETE,UPDATE多条DML语句,同时成功或同时失败。
<