MySQL 操作总结(二)
来源:互联网 发布:python在线编译器 编辑:程序博客网 时间:2024/06/04 19:25
MySQL 操作总结(二)
数据的操作(DML)
数据的插入(INSERTINTO):
插入一条:
INSERT INTO table_name(field1, field2,field3)
VALUES(value1,value2, value3)
或者
INSERT INTO table_name
VALUES(value1,value2, value3)
插入多条:
INSERT INTO table_name(field1, field2, field3)
VALUES(value1,value2, value3),
VALUES(value1,value2, value3),
VALUES(value1,value2, value3)
插入查询结果:
INSERT INTO table_name1(field1, field2,field3)
SELECT(field1,field2, field3)
FROMtable_name2
WHERE…
数据的更新(UPDATE):
更新一条或者多条记录:
UPDATE table_name
SETfield1=value1,
field2=value2,
field3=value3
WHERECONDITION
数据的删除(DELETE):
DELETE FROM table_name
WHERECONDITION
数据的查询(DQL)
简单单表记录查询:
SELECT * / SELECT DISTINCT field(去重)/SELECT field1*12 [AS] anothername, field2(重命名)/SELECTCONCAT(field1,“other words”, field2) [AS] anothername(field1和field2重新组合为一个新的字段,并且重命名为anothername)
FROM table_name
WHERE
Field1 = ‘name’ /关系运算符
AND(&&/OR/ ||) /逻辑运算符
…(NOT) BETWEEN AND
…IS (NOT) NULL
…(NOT) IN
…(NOT) LIKE ‘%(_)’
ORDER BY field1 [ASC | DESC], field2 [ASC |DESC] /对查询结果进行排序
LIMIT start_row, row_count /限制查询显示数量,一般用于分页
统计函数和分组数据记录查询:
统计函数:
COUNT():统计表中记录的条数,COUNT(*)不忽略null值,COUNT(field)忽略null值
AVG(): 求平均值,AVG(field)忽略null值
SUM(): 求总和,SUM(field)忽略null值
MAX(): 求最大值,MAX(field)忽略null值
MIN(): 求最小值, MIN(field)忽略null值
注意:若所操作的表中没有任何数据记录,则COUNT函数返回0,其余函数返回null。
分组与统计函数结合使用:
SELECT COUNT(field), GROUP_CONCAT(field) /将分组中的field字段列为一个字段显示
FROMtable_name
WHERECONDITION
GROUP BY field1, field2
HAVING CONDITION;
多表数据联查:
内连接(INNERJOIN):在表关系的笛卡尔积中,保留匹配数据,舍弃不匹配数据(匹配并不代表相等,要根据匹配的条件)
l 自然连接:根据表关系中相同名称的字段进行记录匹配,然后去掉重复列,是一种特殊的等值连接。
l 等值连接:根据表关系中相同名称的字段进行相等(=)记录匹配,不会去掉重复列。
l 不等连接:在表关系笛卡儿积中,保留选择匹配字段不相等的记录,不会去掉重复列。
外连接(OUTERJOIN):在表关系笛卡儿积中,不仅保留表关系中所有匹配的数据记录,而且还会保留部分不匹配的数据记录。
l 左外连接:不仅保留所有匹配记录,而且保留左边表中的不匹配记录。
l 右外连接:与左外连接相对。
l 全外连接:保留所有的匹配与不匹配的数据记录。
内连接查询:
SELECT a.field1, a.field2, b.field3…
FROMtable_name1 a INNER JOIN table_name2 b
ONjoin_condition
外连接查询:
SELECT a.field1, a.field2.. ,b.field1,b.field2
FROMtable_name1 a LEFT | RIGHT | FULL [OUTER] JOIN table_name2 b
ONjoin_condition
合并查询数据记录:
SELECT field1, field2..
FROMtable_name1
UNION(去重) | UNIONALL(不去重)
SELECT field1, field2
FROMtable_name2
子查询:
连接查询性能很差,因为要做笛卡儿积然后在筛选数据,所以建议使用子查询替代连接查询。
子查询可以出现在WHERE子句或者FROM子句中。
子查询在WHERE子句中作为条件:
l 子查询结果返回单行单列数据
SELECT *
FROM table_name1
WHERE field>(
SELECTfield
FROMtable_name2
WHERECONDITION);
l 子查询结果返回单行多列子查询
SELECT *
FROM table_name1
WHERE (field1,field2) = (
SELECT field1, field2
FROM table_name2
WHERE CONDITION);
l 子查询返回多行单列数据
SELECT *
FROM table_name1
WHERE field1 (NOT)IN (
SELECT field1
FROMtable_name2
WHERECONDITION);
除了IN关键字还有(<>=)ANY,(<>=)ALL
l 带有关键字EXISTS的子查询
关键字EXISTS返回一个布尔类型,当返回结果集时为TRUE,不能返回结果集时为FALSE。查询时EXISTS对外表采用遍历方式逐条查询,每次查询都会比较EXISTS的条件语句,当EXISTS里的条件语句返回记录行时则条件为真,此时返回当前遍历到的数据记录;反之,如果EXISTS里的条件语句不能返回记录行,则丢弃当前遍历到的记录。
SELECT *
FROM table_name1a
WHERE EXISTS(
SELECT *
FROM table_name2 b
WHEREa.field = b.field);
子查询在FROM子句中作为一张临时表:
l 子查询结果返回多行多列数据记录
- MySQL 操作总结(二)
- mysql总结(二)
- MySQL总结(二)
- MYSQL基本操作(二)
- Mysql基本操作(二)
- MySQL数据库操作(二)
- MySQL基本操作(二)
- (二)mysql索引操作
- 初涉MySQL操作(二)
- mysql操作命令(二)
- mysql数据库操作(二)
- Mysql常用操作(二)
- sqlite操作总结(二)
- mysql优化总结(二)
- mysql学习总结(二)
- MySQL操作规范(总结)
- MySQL 操作总结(一)
- Mysql Q4M 队列操作封装(二)
- 三级导航菜单的实现
- AngularJS系列之ES6特性(一)
- 回溯法
- 腾讯云 ubuntu服务器mysql安装和外网访问
- 程序并不难
- MySQL 操作总结(二)
- 基于retrofit的网络框架的终极封装(二)-与retrofit的对接与解耦,以及遇到的坑
- 获取当前进程的task_struct指针------current宏
- JQuery源码学习——匿名函数
- 多孔材料吸附性质模拟程序RASPA的离线和在线安装方法
- 第八章:多态(下)
- android so文件加载连接简单理解
- win8.1下安装ubuntu,通过iso文件做双系统步骤,调整引导页
- EL表达式无效?