数据库
- DataBase(DB): 存储和管理数据的仓库
- 数据库管理系统: DataBase Management System (DBMS),操纵和管理数据库的大型软件
- SQL: Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
MySQL数据模型
- 关系型数据库(RDBMS): 建立在关系模型基础上, 有多张相互连接的二维表组成的数据库
- 二维表即有行有列的表格
SQL简介
- 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
通用语法
SQL分类
-
SQL语句一般分为以下四类:
DDL操作(数据库设计)
-
DDL英文全称是Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)
- 主键约束后加auto_increment可以实现主键值自动从1开始自增
DML操作(数据库操作)
- DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作
添加数据
修改数据
- update后可以不跟where条件, 此时则代表要修改整张表的数据
删除数据
DQL操作(数据库操作)
-
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录
基本查询
- *号代表查询所有字段, 实际开发中尽量少用(不直观, 效率低)
- 设置别名中as可以省略
条件查询
- like模糊匹配类似于正则表达式
-eg:
select * from tb_emp where name like '张%';
上述代码即查找表 tb_emp 中 name 所有以张开头的数据
分组查询
-
聚合函数
-
分组查询
- eg:
select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*) >= 2;
上述代码表示先从表 tb_emp 筛选出 entrydate 小于等于 '2015-01-01' 的数据, 再对其分组, 对 job 分组, 并且统计每个不同 job 值的总数, 在此基础上在筛选出 count(*) 大于等于 2 的数据
排序查询
不写排序方式则默认升序, 即asc可以省略不写
- eg:
select * from tb_emp order by entrydate , update_time desc ;
上述代码表示要在 tb_emp 表中, 根据 entrydate 进行升序排序, 如果 entrydate 相同, 则根据 update_time 进行降序排序