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
表连接
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.字段;
内连接 | 左连接 | 右连接 |
---|---|---|
数据库类型
数值类型
类型 | 大小 | 用途 |
---|---|---|
TINYINT | 1byte | 小整型值 |
SMALLINT | 2byte | 大整型值 |
MEDIUMINT | 3byte | 大整型值 |
INT或INTEGER | 4byte | 大整型值 |
BIGINT | 8byte | 极大整型值 |
FLOAT | 4byte | 单精度浮点数值 |
DOUBLE | 8byte | 双精度浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 小数值 |
日期类型
类型 | 大小(byte) | 格式 | 用途 |
---|---|---|---|
DATE | 3 | YYYY-MM-DD | 日期值 |
TIME | 3 | HH:MM:SS | 时分秒 |
YEAR | 1 | YYYY | 年份值 |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 日期时间 |
TIMESTAMP | 4 | YYYYMMDD HHMMSS | 日期时间 |
字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-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 表名;