MYSQL数据操作(三)
2016-09-20 17:27
274 查看
插入记录insert insert-set insert-select
第一种:
insert tb_name [column_name]values(…)[,(…),(….)];–比较常用,可以一次性插入多条记录,并且可以输入表达式甚至是函数,但是无法进行子查询。
第二种:
insert tb_name set column_name={exprdefault};–可以进行子查询,但是只能插入一条记录。
第三种:
insert table_name [(colname…)] select语句…..–这种方法就是把查询到的一个表结果插入到另一个指定数据表中。
单表更新UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1DEFAULT}[,col_name2=…][WHERE where_condition];
多表
UPDATE table_references {[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb2 ON condition链接表
SET col_name1={expr1 DEFAULT} [,col_name2={expr2 DEFAULT}]… 更新数据的内容
[WHERE where_condition]更新数据范围
Eg:update tdb_goods inner join tdb_goods_cates on goods_cate=cate_name set goods_cate=cate_id;//将 tdb_goods 表和 tdb_goods_cates 表通过 goods_cate=cate_name 连接,然后更新 goods_cate=cate_id
单表删除DELETE
DELETE FROM 表名 (WHERE 条件;//删除后,添加记录,自动编号是已有或曾经有过编号的最大加1。
SET NAME GBK; 客户端显示编码
查询表达式解析select
语法:
SELECT select_expr [,select expr2…] 只查找某一个函数或表达式
[
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_nameposition} [ASCDESC],…] 按某个字段进行分组,相同的只显示第一个
[HAVING conditon] 分组时,给出显示条件(查询字段或者函数结果)
[ORDER BY {col_nameexprposition} [ASCDESC],…] 排序
[LIMIT {[offset,]row_countrow_count OFFSET offset}] 限制返回数量
}
ps:select * from user group by username having age>18 order by id asc limit 3; 限制返回数量的limit一定要放在最后
使用比较运算符的子查询:
(1)SELECT AVG( price ) FROM goods;
(2)SELECT ROUND( AVG(price),2 ); // 它是个聚合函数——AVG求平均值进行四舍五入,保留 2 位小数
(3)SELECT id,name,price FROM goods WHERE price >= (SELECT ROUND(AVG(price),2) FROM goods); // 子查询方式
(4)在子查询时的关键字ANY / SOME / ALL子查询返回多个结果
注意:
1. 子查询只能返回一行记录,不然会报错。
2. 子查询还可以包含子查询。
[NOT] IN引发的子查询
IN 等价于 =ANY
NOT IN 等价于 !=ALL <>ALL
[NOT] EXISTS 引发的子查询返回true false
链接
{[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb2 ON condition
内连接-两表交集,符合所有条件的记录
左外连接-左表全部
右外连接-右表全部
自链接 别名.字段名
第一种:
insert tb_name [column_name]values(…)[,(…),(….)];–比较常用,可以一次性插入多条记录,并且可以输入表达式甚至是函数,但是无法进行子查询。
第二种:
insert tb_name set column_name={exprdefault};–可以进行子查询,但是只能插入一条记录。
第三种:
insert table_name [(colname…)] select语句…..–这种方法就是把查询到的一个表结果插入到另一个指定数据表中。
单表更新UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1DEFAULT}[,col_name2=…][WHERE where_condition];
多表
UPDATE table_references {[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb2 ON condition链接表
SET col_name1={expr1 DEFAULT} [,col_name2={expr2 DEFAULT}]… 更新数据的内容
[WHERE where_condition]更新数据范围
Eg:update tdb_goods inner join tdb_goods_cates on goods_cate=cate_name set goods_cate=cate_id;//将 tdb_goods 表和 tdb_goods_cates 表通过 goods_cate=cate_name 连接,然后更新 goods_cate=cate_id
单表删除DELETE
DELETE FROM 表名 (WHERE 条件;//删除后,添加记录,自动编号是已有或曾经有过编号的最大加1。
SET NAME GBK; 客户端显示编码
查询表达式解析select
语法:
SELECT select_expr [,select expr2…] 只查找某一个函数或表达式
[
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_nameposition} [ASCDESC],…] 按某个字段进行分组,相同的只显示第一个
[HAVING conditon] 分组时,给出显示条件(查询字段或者函数结果)
[ORDER BY {col_nameexprposition} [ASCDESC],…] 排序
[LIMIT {[offset,]row_countrow_count OFFSET offset}] 限制返回数量
}
ps:select * from user group by username having age>18 order by id asc limit 3; 限制返回数量的limit一定要放在最后
使用比较运算符的子查询:
(1)SELECT AVG( price ) FROM goods;
(2)SELECT ROUND( AVG(price),2 ); // 它是个聚合函数——AVG求平均值进行四舍五入,保留 2 位小数
(3)SELECT id,name,price FROM goods WHERE price >= (SELECT ROUND(AVG(price),2) FROM goods); // 子查询方式
(4)在子查询时的关键字ANY / SOME / ALL子查询返回多个结果
注意:
1. 子查询只能返回一行记录,不然会报错。
2. 子查询还可以包含子查询。
关键字 ANY SOME ALL >、>= 最小值 最小值 最大值 <、<= 最大值 最大值 最小值 = 任意值 任意值 <>、!= 任意值
[NOT] IN引发的子查询
IN 等价于 =ANY
NOT IN 等价于 !=ALL <>ALL
[NOT] EXISTS 引发的子查询返回true false
链接
{[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb2 ON condition
内连接-两表交集,符合所有条件的记录
左外连接-左表全部
右外连接-右表全部
自链接 别名.字段名
相关文章推荐
- mysql delete 千万数据操作
- MYSQL数据操作
- 用批处理对MySQL进行数据操作
- MySQL查询数据操作(DQL)
- MySQL 学习教程(二)【整理】-SQL 基本操作(库操作/ 表操作/ 数据操作)
- MySQL操作03_插入、修改和删除数据操作
- mysql高级高级数据操作
- Django - 与 Mysql 结合 实现 添加数据 和 删除数据操作
- MySQL数据操作(DML)命令
- PHP的常用数据操作(MYSQL)
- MySql常用操作语句(2:数据库、表管理以及数据操作)
- mysql外键,索引等基本操作 和 跨表复制数据操作
- MySQL数据操作的经典语句
- MySQL基本数据操作(DML)
- 用批处理对MySQL进行数据操作
- JSP中对MySQL数据操作的封装
- JAVA调用mysql数据操作时出现错误:impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'
- MySQL 入门(十)—— 数据操作
- MySQL学习总结----数据操作
- Mysql数据操作介绍