MYSQL

头像
LLL_
    阅读 3 分钟
    2

    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.字段;
    内连接左连接右连接
    image.pngimage.pngimage.png

    数据库类型

    数值类型

    类型大小用途
    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分库分表

    垂直(纵向)切分

    水平(横向)切分


    LLL_
    15 声望3 粉丝

    « 上一篇
    redis+nginx
    下一篇 »
    Java集合