MYSQL
查看数据库show databases;
选择数据库use 数据库名;
查看数据库表格show tables;
创建数据库create database 数据库名;
删除数据库drop database 数据库名;
删除数据库表drop table 表名;
插入数据insert into 表名(字段)values(数据);
查询数据select * from 表名;
select * from 表名 where 字段='条件';
更新数据update 表名 set 字段='修改的数据' where 字段='选择的字段';
删除数据delete from 表名 where 字段='选择的字段';
注意事项:
如果没有where,MySQL会删除所有数据。
LIKE(模糊查询)select * from 表名 where name LIKE 'java%';(查询以Java开头的信息)
select * from 表名 where name LIKE '%java';(查询以Java结尾的信息)
select * from 表名 where name LIKE '%java%';(查询包含Java的信息)
索引:%开头的模糊查询会令索引失效。
%:代表多个字符。
_:代表单个字符。
UNION(select连接)select 字段 from 表名1 union(distinct | all) select 字段 from 表名2;
DISTINCT:删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据。
ALL:返回所有结果集,包含重复数据。
ORDER BY(排序)select * from 表名 order by 字段 ASC;(根据升序字段排序)
select * from 表名 order by 字段 desc;(根据字段倒序排序)
默认情况下升序排序,所以ASC可以省略。
GROUP BY(分组)select 字段1,字段2 from 表名 group by 字段1;
select 字段1,字段2 from 表名 group by 字段1 WITH ROLLUP;
WITH ROLLUP:以null进行汇总。
DISTINCT(去重复)select distinct * from 表名;
LIMIT(分页)select * from table1 limit 当前页,数据条数
表连接INNER JOIN(内连接或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接):获取右表所有记录,即使左表没有对应匹配的记录。
select * from 表名1 a INNER JOIN 表名2 b on a.字段1=b.字段2;
select * from 表名1 a LEFT JOIN 表名2 b on a.字段1=b.字段2;
select * from 表名1 a RIGHT JOIN 表名2 b on a.字段1=b.字段2;
INNER JOIN(内连接):取两表中的交集
LEFT JOIN(左连接):取左表和两表的交集
RIGHT JOIN(右连接):取右表和两表的交集
多表查询:
select * from 表1 a inner join 表2 b on a.字段=b.字段
left join 表3 c on b.字段=c.字段;内连接左连接右连接
数据库类型
数值类型类型大小用途TINYINT1byte小整型值
SMALLINT2byte大整型值
MEDIUMINT3byte大整型值
INT或INTEGER4byte大整型值
BIGINT8byte极大整型值
FLOAT4byte单精度浮点数值
DOUBLE8byte双精度浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2小数值
日期类型类型大小(byte)格式用途DATE3YYYY-MM-DD日期值
TIME3HH:MM:SS时分秒
YEAR1YYYY年份值
DATETIME8YYYY-MM-DD HH:MM:SS日期时间
TIMESTAMP4YYYYMMDD HHMMSS日期时间
字符串类型类型大小用途CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
MYSQL事务1、mysql中只有使用innodb数据库引擎的数据库或表才支持事务。
2、mysql中的myisam数据库引擎不支持事务。
3、事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,
要么全部不执行。
4、事务用来管理insert、update、delete
事务是必须满足4个条件(ACID):1、原子性:要么全部完成,要么全部不完成。
2、一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
3、隔离性:事务之间相互不影响。
4、持久性:事务处理结束之后,对数据进行一个永久的保存。
事务的隔离级别:1、读已提交
2、读未提交
3、可重复读
4、串行化
MySQL事务处理实现:BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
MYSQL索引
1、mysql索引是排序好的数据结构(B+树结构)。
2、建立索引会占用磁盘空间的索引文件。
3、对经常修改的数据,不适合创建索引,会破环B+树结构。
索引创建普通索引:没有任何限制
create index 索引名 on 表名(字段);
创建唯一索引:索引列的值必须唯一,允许有空值。
create unique index 索引名 on 表名(字段);
删除索引
drop index 索引名 on 表名;
显示索引信息
show index from 表名;
MYSQL分库分表
垂直(纵向)切分
水平(横向)切分