备忘
数据库
该部分包含了sql ddl dml dql的常见操作
SQL:
- 可以单行/多行书写,以分号结尾
- 可用空格/缩进增强可读性
- 不区别大小写
- 单行注释:–
- 多行注释:/* */
DDL:
- 查询:
show databases()
(查询所有数据库)
select database()
(查当前) - 使用:
use 数据库名;
- 创建:
create datavase[if not exists] 数据库名;
- 删除:
drop database[if exists] 数据库名;
- 表操作(sql语法中字符串为:varchar()):
creata table 表名(
字段1 字段类型 [约束][comment 字段1注释]
......
字段n 字段类型 [约束][comment 字段n注释]
)
- 约束:
- 非空约束(not null):限制该字段值不能为null
- 唯一约束(unique):保证字段的所有数据都是唯一不重复的
- 主键约束(primary key):主键是一行数据的唯一标识,要求非空且唯一
- 默认约束(default):保存数据时,如果未指定字段值,则用默认值
- 外键约束(foreign key):让两张表的数据建立连接,保证数据的一致性和完整性
DML:
- insert 添加数据:
- 指定字段添加:
insert into 表名(字段名1,字段名2) values(值1,值2);
- 全部字段添加:
insert into 表名 values(值1,值2...);
- 批量添加(指定字段):
insert into 表名(字段名1,字段名2) values(值1,值2),(值1,值2);
- 批量添加(全部字段):
insert into 表名 values(值1,值2),(值1,值2);
- 指定字段添加:
- update 更新数据:
update 表名 set 字段1=值1,字段2=值2,.....[where 条件];
eg:where id=1 ------更新id=1的这条数据(修改全部数据则不加where)
- delete 删除数据:1.没有where则删整个表 2.不能删某一个字段值(可用update将字段置为null)
delete from 表名 [where 条件];
DQL:
-
基本查询
- 查询多个字段:
select 字段1,2,3 from 表名;
- 查询所有字段(通配符):
select*from 表名;
- 设置别名(as可省略不写):
select 字段1 [as别名1],字段2 [as别名2] from 表名;
- 去除重复记录:
select distinct 字段列表 from 表名;
- 查询多个字段:
-
条件查询
- 语法:
select 字段列表 from 表名 where 条件列表;
- 常用的比较运算符:
- between…and…:在某个范围之间含端点值
- in(列表):在列表中的某一个
- like 占位符:模糊匹配(‘_’ 匹配单个字符, '%'匹配任意个字符)
- is null:是null
- and或&&:并且
- or或||:或
- not或!:非
- 语法:
-
分组查询
- 语法:
select 字段列表 from 表名[where 条件] group by 分组字段名 [having 分组后过滤条件];
- 几个常见聚合函数:
- count():统计数量
- max():求最大值
- min():求最小值
- avg():求平均值
- sum():求和
- 注意事项:
- 分组之后查询返回的字段一般为聚合函数和分组字段
- 执行顺序:where>聚合>having
- 语法:
-
条件查询
- 语法:
select字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1, 字段2 排序方式2...;
- ASC:升序(默认值) DESC:降序
- 注意:在字段1排序满足的情况下再满足字段2的排序
- 语法:
-
分页查询
- 语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;
- 注意事项:
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
- 分页查询是数据库的方言,不同的数据库有不同的实现,MYSQL中是LIMIT。
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 每页显示记录数 。
- 语法: