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



