insert 插入记录
INSERT…VALUES
比较常用,一次性插入多条记录,可输入表达式甚至是函数。
expr 表示表达式
对于自动编号的字段,插入NULL
或DEFAULT
系统将自动依次递增编号;
对于有默认约束的字段,可以插入DEFAULT
表示使用默认值;
列值可传入数值、表达式或函数,如密码可以用md5()函数进行加密(如md5(‘123’));
可同时插入多条记录,多条记录括号间用逗号,
隔开
|
|
INSERT…SET
这种方法一次只能插入一条记录
列值中有自动编号、默认值或Boolean类型均可以不赋值(使用子查询)
|
|
INSERT…SELECT
一般用于将其他表的数据插入到指定表,注意对应
|
|
update 更新记录
|
|
省略WHERE条件则更新所有记录该列的值
单表更新
|
|
多表更新
使用连接进行多表更新,以下为连接的语法
|
|
创建数据表同时将查询结果写入到数据表
|
|
delete 删除记录
单表删除
|
|
省略条件则默认删除该表所有记录(仅删除所有记录,不删除数据表)
删除后再插入,插入的id号从最大的往上加,而不是填补删除的。
|
|
多表删除
INSERT … SELECT实现复制
查找重复记录
SELECT goods_id,goods_name
FROM tdb_goods
GROUP BY goods_name HAVING count(goods_name) >= 2;
DELETE t1
FROM tdb_goods AS t1
LEFT JOIN (
SELECT goods_id,goods_name
FROM tdb_goods
GROUP BY goods_name HAVING count(goods_name) >= 2 ) AS t2
ON t1.goods_name = t2.goods_name
WHERE t1.goods_id > t2.goods_id;
SELECT select_expr [,select expr2…] //只查找某一个函数或表达式
[
FROM table_references //查询表名
[WHERE where_conditon] //查询条件
[GROUP BY {col_name|position} [ASC|DESC],…] //按某个字段进行分组,相同的只显示第一个
[HAVING where_conditon] //分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],…] //排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] //限制返回数量
}
SELECT * FROM users;
SELECT id AS userid,usrname AS uname FROM users;
SELECT users.id FROM users;
SELECT * FROM users WHERE id=1;
[GROUP BY {col_name|position} [ASC|DESC],…]
SELECT sex FROM users GROUP BY sex;
//对users中的sex按sex进行分组
SELECT * FROM users GROUP BY 1;
//1表示查询的第一个字段,这里是表中的第一个字段id
SELECT sex FROM users GROUP BY 1;
//1表示sex
[HAVING when where_condition]
SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错
SELECT sex,age FROM users GROUP BY 1 HAVING age > 35;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
//按照sex分组,条件id数大于2的分组留下显示
//工作流程就是先从表中查询字段,然后根据GROUP BY的条件对查询结果进行分组,再根据HAVING条件对分组进行筛选,最后留下满足所有条件的分组结果。
[ORDER BY [col_name | expr | position } [ASC|DESC],…]
SELECT FROM users ORDER BY id DESC;
//对一个字段排序
SELECT FROM users ORDER BY age,id DESC;
//多字段排序,先按照age排序,如果age有重复的,重复的字段里按id排序
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
SELECT FROM users LIMIT 2;
//从第一条开始(第一个为0),返回两条
SELECT FROM users LIMIT 2,3;
//从第三条开始(第一个为0),返回三条
```