增加
- 首先创建一张表
create table 表名 (列名...);
- 表中添加单行数据
insert into 表名 values (数量必须和定义表的列的数量和顺序一致);
- 表中添加多行数据
insert into 表名 (列名) values (数量必须和前面指定列数量及顺序一致),()...;
- 插入更新
- 当主键或者唯一键对应的值已经存在,当你重复插入时,就会失败
- 这时可以选择性进行同步更新操作
insert into 表名(列名)values ( ...,...,...) on duplicate key update column = value [,column = value]...
- 替换
replace into 表名 (...,...)values (...,要替换的新内容)
查询
-
全列查询
select * from 表名;
-
指定列查询(指定列的顺序不需要按定义表的顺序来)
select 列名,列名... from 表名
-
查询字段为表达式
-
表达式不包含字段
-
表达式包含一个字段
-
表达式包含多个字段
-
为查询结果指定别名
select 要加别名的列名等等 [as] 别名 from 表名;
-
结果去重
select distinct 有重复数据的列名 from 表名
-
WHERE条件
-
基本比较
-
使用 and 进行连接查询
-
使用BETWEEN … AND … 条件
-
使用 or 进行条件连接
-
使用 in 条件
-
% 匹配任意多个(包括 0 个)任意字符
-
匹配严格的一个任意字符
-
结果排序
ASC 为升序(从小到大)
DESC 为降序(从大到小)
默认为 ASC
select 列名 from 表名 order by 某列;
select 列名 from 表名 order by 某列 DESC;
- 筛选分页结果
起始下标为 0
从 0 开始,筛选 n 条结果
select ... from 表名 [where ... ] [order by ...] limit n;
从 s 开始,筛选 n 条结果
select ... from 表名 [where ... ] [order by ...] limit s, n;
从 s 开始,筛选 n 条结果,比第二种方法更明确,建议使用
select ... from 表名 [where ... ] [order by ...] limit n offset n ;
建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死
更新(修改)
update 表名 set column = expr [ , column = expr ...] [where ...] [order by ...] [limit ... ];
删除
- 删除数据
delete from 表名 [where ...] [ order by ... ] [ limit ... ] ;
- 截断表
truncate 表名
- 只能对整表操作,不能像 DELETE 那样针对部分数据操作;
- 实际上 MySQL 不对数据操作,所以比 DELETE 更快
- 会重置 AUTO_INCREMENT 项
聚合函数
group by 字句的使用
- 在select中使用group by 子句可以对指定列进列分组查询
select column1,column2,... from 表名 group by column ;
- having 和 group by 配合使用,对 group by 结果进行过滤