栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

mysql之增删改查和集合操作

mysql之增删改查和集合操作

mysql学习

创建表的时候 晋江加上 create_time字段,为create_time设置默认值CURRENT_TIMESTAMP

CRUD操作

Create( 增 )

单条插入

INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...)

INSERT INTO class_1(name) VALUES('张三');

多条插入

INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...),(值1,值2,...)

INSERT INTO class_1(name) VALUES('张三'),('李四')

Retreve ( 查 )

获取所有记录

SELECt 字段1,字段2(可以用 * 代替全部) FROM 表名

SELECt * FROM class_1
SELECt name FROM class_1

条件查询 ( WHERe,AND,OR)

SELECt 字段1,字段2(可以用 * 代替全部) FROM 表名 WHERe 表达式

SELECt * FROM class_1 WHERe name="张三"
SELECt * FROM class_1 WHERe name="张三" AND id=3

模糊匹配 (LIKE,%)

n%   %n   %n%    n为要模糊查询的内容,%为不确定因素  


SELECt * FROM class_1 WHERe name LIKE "%四%";

限制返回条数 (LIMIT)

LIMIT 需要几条数据   (数量)

SELECt * FROM class_1 WHERe name LIKE "%四%" LIMIT 2;

过滤重复值 (distinct) 去重

对查询的结果进行过滤

如果指定多个字段,会对多个字段联合进行过滤

SELECt distinct 字段1,字段2,... FROM class_1 可以加表达式

SELECt distinct name FROM class_1;

(可以加入任意表达式)
SELECt distinct name FROM class_1 WHERe name LIKE "%四%";

排序问题

对查询的结果进行排序

升序 (ASC) ORDER BY

									ORDER BY  排序字段 ASC 默认

SELECt name,create_time FROM class_1 ORDER BY create_time

数据库默认是升序

降序 (DESC)

									  ORDER BY  排序字段 desc

SELECt name,create_time,id FROM class_1 ORDER BY id desc

获取查询结果的数量(count)

SELECt count(字段) FROM 表名;

SELECt count(*) FROM class_1;
SELECt count(name) FROM class_1;

Update(更新)

UPDATE 表名 SET 字段1=新值,字段2=新值,... WHERe 表达式
											(需要确定要修改那一条数据)
		!!!不加表达式 就会 更改全部的数据!!!

UPDATE class_1 SET name='王五' WHERe id=1

Delete (删除)

DELETE FROM   表名   表达式
				(需要确定要删除那一条数据)
	    !!!不加表达式 就会 删除全部的数据!!!!

DELETe FROM class_1 WHERe id=11
集合操作

并集 UNIOn

子语句 SELECt 必须拥有相同数量的列(字段),且列的数据类型也相同

SELECT name FROM class_1 WHERe name is not NULL
UNIOn
SELECt name FROM class_2 WHERe name is not NULL

交集 JOIN,INNER

1 先将需要求交集的 表 的 字段 提取出来 放到变量里
2 中间添加 JOIN  交集操作
3 添加 ON表达式 表1中的字段 和 表2中的字段  相同的值
4 SELECt s1.name FROM   s1和s2都可以  因为值是相同的


-- 交集
SELECt s1.name FROM
(SELECt name FROM class_1 WHERe name is not NULL) as s1
JOIN
(SELECt name FROM class_2 WHERe name is not NULL) as s2
ON s1.name = s2.name

差集(LEFT JOIN,RIGHT JOIN)

A对B的 差集 就是 LEFT JOIN

-- 差集
SELECt A.name FROM
(SELECt name FROM class_1 WHERe name is not NULL) as A
LEFT JOIN
(SELECt name FROM class_2 WHERe name is not NULL) as B
ON A.name = B.name
WHERe B.name is NULL   // 限定A有  B没有的记录

B对A的 差集 就是 RIGHT JOIN

-- 差集
SELECt B.name FROM
(SELECt name FROM class_1 WHERe name is not NULL) as A
RIGHT JOIN
(SELECt name FROM class_2 WHERe name is not NULL) as B
ON A.name = B.name
WHERe A.name is NULL  // 限定A没有,B有的记录

补集

A与B的补集 = A与B的并集 - A与B的交集

A与B的补集 = A与B的差集 + B对A的 差集 √

-- 差集
-- A->B
SELECt A.name FROM
(SELECt name FROM class_1 WHERe name is not NULL) as A
LEFT JOIN
(SELECt name FROM class_2 WHERe name is not NULL) as B
ON A.name = B.name
WHERe B.name is NULL   

UNIOn  -- 两个差集相加 就是 补集

-- B->A
SELECt B.name FROM
(SELECt name FROM class_1 WHERe name is not NULL) as A
RIGHT JOIN
(SELECt name FROM class_2 WHERe name is not NULL) as B
ON A.name = B.name
WHERe A.name is NULL
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/742991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号