插入数据
多种语法形式
1. insert [into] 表名 (字段名1,字段名2,...) values (值1,值2,...)
这是最常用的插入语句,可以一次性插入多行数据,用逗号隔开
插入语句,要理解为每次插入数据都是以"行"为单位插入.
字段名通常不推荐省略,其后续的"值列表"应该跟字段名列表"一一对应";
其中值表达式,可以是一个直接,或函数调用结果或变量值,其中,如果对应字段是字符或时间类型,则直接值使用单引号
2. replace [into] 表名 (字段名1,字段名2,...) values (值1,值2,...)
3. insert [into] 表名[ (字段名1,字段名2,...)] select 字段名1 ,字段名2,... from 其他表名
4. insert [into] 表名 set 字段名 1=值表达式1,字段名2=值表达式2,...
load data 载入数据
只适用于结构整齐的数据.
load data infile "完整的数据文件的路径" into table 表名;
删除数据
delete from 表名[where 条件] [order by 排序] [limit 限定]
说明:
1. 删除数据仍然是以"行"为单位进行
2. 通常删除数据都需要带where 条件,否则就会删除所有数据.
3. where条件的语法跟select中语法一样
4. order by排序设定,用于指导这些数据的删除顺序; 它通常跟limit配合使用才有意义
5. limit 限定用于设定删除多少行(按 orderby 设定的顺序);
修改数据
update 表名set 字段1=值1,字段2=值2, where 条件;
说明:
1. 通常,update语句,也都需要where条件
2. where 条件的语法跟select的语法一样
3. order by 用于设定修改的顺序,limit用于设定修改的行数,他们通常也是结合使用(虽然都很少用)
4. 实际应用中,通常很少用到order by 和 limit, 则修改数据的常规使用形式就成为:
update 表名 set 字段 1 = 值 1, 字段 2 = 值 2,... ... where 条件
5. 注意: 其中的"数据值",如果是字符串或时间类型的"直接值",就应该用单引号;
基本查询
基本语法形式
select [all | distinct] 字段或表达式列表 [from 子句] [where 子句] [group by 子句] [having 子句][order by子句] [limit 子句];
字段或表达式列表
1. 字段,自然是来源于"表",则其必然依赖于from
2. 表达式是类似于这样一个内容: 8, 8+3, now()
其中,concat函数是连接多个字符串.
3. 每个"输出项"(字段或表达式结果),都可以给其设定一个"别名"(字段别名)形式为:
字段或表达式 as 别名
all 和 distinct
用于设定设定select出来的数据,是否消除"重复行",可以不写,默认值是distinct.
all: 表示不消除,即所有都出来,默认值.
distinct: 表示会消除.
from子句
from子句表示select部分从中取得数据的数据源 -- 其实就是表.
where子句依赖于from子句
is运算符: 空值和布尔值的判断
有4种情况的使用:
XX is null: 判断某个字段是"null"值 -- 就是没有值
XX is not null: 有值,不为空
XX is true: 为真
xx is false: 为假
between运算符:
用于判断某个字段的数据值是否在谋而给定的范围 -- 适用于数字类型;
语法:
xx between 值1 and 值2;
in 运算符
给定确定数据的范围判断
语法: XX in (值1, 值2, 值3)
含义; 表示字段XX的值为所列出值的一个,就算是满足条件,一般是无规律的,如果有规律,可以使用between雷代替.
like运算符:
语法: XX like 要查找的内容
含义: 实现对字符串的某种特征信息的模糊查找.它其实依赖于以下2个特殊的"符号":
% : 它代表任何个数的任何字符
_ :(下杠),它代表"一个任何字符";
常见使用示例: name lkie '%罗%', 表示含有罗字
name lkie '罗%', 表示以罗字开头
name lkie '%罗', 表示以罗字结尾
group by子句: 分组
形式:
group by 字段1 [desc | asc], 字段2[desc | asc] ......
说明:
1. 分组是对"前述"已经找出的数据(即where 已经筛选过了) 进行某种指定标准(依据)的分组
2. 同时,该分组结果,可以同时指定其"排序方式": desc(倒叙),asc(顺序);
3. 通常,分组就一个字段(依据),2个以上很少.
什么叫做分组?
分组: 就是将多行数据,以某种标准(就是指定字段)来进行"分类"存放:
特别注意:
分组之后的结果,一定要理解为:只有一个一个组了.
则 结果是: 在select语句中的"输出(取出)"部分,只应该出现"组的信息":
select 组信息1,组信息2,...from 数据源 group by 字段;
应用中,分组之后,通常只有如下几种可用的"组信息"了,(即可用出现在select中);
1. 分组一句本身的信息,其实就是该分组一句的字段名;
2. 每一组的"数量"信息,就是用count(*)获得
3. 原来数据中的"数值类型字段的集合信息",包括如下几个:
最大值: max(字段名)
最小值: min(字段名)
平均值: avg(字段名)
综合值: sum(字段名)
上述4个其实就是内部函数.
having语句
having的作用和where完全一样,但其值对"分组的结果数据"进行筛选;
即: where对原始数据行进行筛选, having对分组之后的数据行进行筛选
可以用一下语句"恢复"(导入数据)
source "备份数据的完整路径"
order by 子句
它用于将前面"取得"的数据以设定的标准(字段)来进行排序输出,默认是正序
形式
order by 字段1[asc | desc],字段2,[asc | desc]...
limit 子句
含义:
它用于将"前述取得的数据",按指定的行取出来: 从第几行开始取出多少行.
形式:
limit 行数
网友评论