mysql基础
单表设计
DDL
DDL英文全称是Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)。
数据类型
数值类型

字符串类型

日期类型

根据页面原型/需求创建表
通过页面原型和需求获取原型字段(选择合适的类型和约束)
加上基础字段如id、create_time、update_time等
其中create_time记录当前这条数据插入的时间update_time记录当前这条数据最后更新的时间
最终获得合理的表结构
数据库操作
查询所有数据库: show databases;
查询当前数据库: select database();
使用数据库:use 数据库名;
创建数据库:create database [ if not exists ] 数据库名;
删除数据库:drop database [ if exists ] 数据库名;
注意:上述语法中的database,也可以替换成schema。如: create schema db01;
表操作
创建


查询
查询当前数据库所有表: show tables;
查询表结构:desc表名;
查询建表语句: show create table表名;
修改
添加字段: alter table 表名 add 字段名类型(长度) [comment注释] [约束];
修改字段类型: alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型: alter table 表名 change 旧字段名 新字段名 类型(长度) [comment注释] [约束];
删除字段: alter table 表名 drop column 字段名;
修改表名:rename table 表名 to 新表名;
删除
删除表:drop table [ if exists ]表名;
删除表时,表中的全部数据也会被删除
DML
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
INSERT(增加)


UPDATE(修改)


DELETE(删除)


DQL
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
基本查询

条件查询

聚合函数


分组查询

排序查询

分页查询

DQL小结

多表设计
项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系
一对多
在数据库表中多的一方,添加字段,来关联一的一方的主键
为了避免数据的不完整、不一致问题,这个字段定义为多的一方的外键
一对一
关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中,以提升操作效率
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
多对多
关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择
实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
多表查询
从多张表中查询数据
连接查询
内连接

外连接


子查询

标量子查询

列子查询

1 | //select id from tb_dept where name ='教研部' or name = '咨询部' |
行子查询

1 | //select entrydate,job from tb_emp where name = '韦一笑'; |
表子查询

1 | select e.*,d.name from (select * from tb_emp where entrydate >'2006-01-01') e,tb_dept d where e.dept_id = d.id; |
事务和索引
事务
一组操作的集合,这组操作要么全部成功,要么全部失败
索引
索引时帮助数据库高效获取数据的数据结构,在mysql中,默认使用的是B+树(多路平衡搜索树)
没有索引,查询数据需要进行全表扫描,在数据量大时效率极低;通过索引,可以大幅缩短查询所需的时间
优点
提高数据查询的效率,降低数据库的lO成本。
通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。
缺点
索引会占用存储空间。
索引大大提高了查询效率,同时却也降低了insert、update、delete的效率。
语法

B+树的特点
1.每一个节点,可以存储多个key(有n个key,就有n个指针)。
2.所有的数据都存储在叶子节点,非叶子节点仅用于索引数据。
3.叶子节点形成了一颗双向链表,便于数据的排序及区间范围查询。