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
-