今天我们了解一下数据库基本增删改查语法和多表链接查的方式
目录
一. INSERT 新增
二. DELETE 删除
1.整表删除
2.带条件删除
3. DELETE , TRUNCATE , DROP 区别
三. UPDATE 修改
1.全部修改
2. 带条件的修改
3.多条件的修改
四. SELECT 查询
五.多表链接查询
1.内联查询
2.外连查询
① LEFT JOIN ON:
② RIGHT JOIN ON:
③ INNER JOIN ON:
3. UNION
4. UNION ALL
一. INSERT 新增
主要功能: 给数据库表增加记录
语法:
INSERT INTO `表名` [(字段,字段,字段......)]
VALUE/VALUES (值1,值2,值3) , [(值1,值2,值3)]
# value:只能插入一条数据
# values:能插入多条数据
不建议的写法:
INSERT INTO `表1` SELECT 字段 FROM `表2`
# 注:查询表和插入表都要存在
CREATE TABLE `表1` SELECT ... FROM `表2`
# 注:查询表存在,插入表不能存在
二. DELETE 删除
主要功能: 删除已有记录,可以依照条件去做删除
1.整表删除
语法:
DELETE FROM `表`
2.带条件删除
语法:
DELETE FROM `表` WHERE 子句(条件)
3. DELETE , TRUNCATE , DROP 区别
①.DELETE 可以删除数据,不能清空索引的自增 是DML
②.TRUNCATE 在DELETE的基础上可以清空主键的索引自增 是DML
③.DROP 是直接删除对应的 表 / 表结构 / 数据库 是DDL
三. UPDATE 修改
主要功能: 修改已有的记录, 可以依照条件去做修改
1.全部修改
UPDATE `表名` SET 字段名 = 值, 字段名 = 值, 字段名 = 值, 字段名 = 值
2. 带条件的修改
UPDATE `表名` SET 字段名 = 值 WHERE 条件
3.多条件的修改
UPDATE `表名` SET 字段名 = 值 WHERE 条件 AND / OR 条件 ......
四. SELECT 查询
主要功能: 对已有数据的查询,可以单表查询也可以多表联查,可以依照条件去做查询
语法:
SELECT [DISTINCT]
{*|
表1.*|
[ 表1.字段1 [as 字段别名1]]
[, 表1.字段2[as 字段别名2]]
[, …]}
FROM 表1 [ as 表别名 ]
[ left|right|inner join 表2 on 表之间的关系 ]
[ WHERE ]
[ GROUP BY ]
[ HAVING]
[ ORDER BY]
[ LIMIT {[ 位置偏移量,] 行数 }] ;
DISTINCT
设定DISTINCT可以去掉重复记录。
AS
表名或者字段名过长时,可以用AS关键字起别名,方便操作。
GROUP BY
按组分类显示查询出的数据。
HAVING
GROUP BY分组时依赖的分组条件。
ORDER BY
将查询出来的结果集按照一定顺序排序完成。
五.多表链接查询
1.内联查询
等值查询
SELECT * FROM 表1, 表2 WHERE 表1.字段1 = 表2.字段2
非等值查询(笛卡尔积)
SELECT * FROM 表1, 表2
其中:
1. 与单表查询相似(SELECT)
2. 多个表放在 FROM 后, 用逗号隔开
3. 可以用 AS 取别名,方便引用
4. 如无重名查询字段,则可省略数据表的指定
2.外连查询
语法:
SELECT * FROM `表1`
left|right|inner join 表2 on 表之间的关系(条件)
① LEFT JOIN ON:
从左表(表1)中返回所有的记录,即便右(表2)中无匹配的行, 如下图:

② RIGHT JOIN ON:
从右(表2)中返回所有的记录,即便左表(表1)中无匹配的行, 如下图:

③ INNER JOIN ON:
在两张表中至少一条数据匹配时,则返回记录, 如下图:

3. UNION
1.求的是两个查询的并集
2.合并的是结果集,不区分表,所以能合并多张表
语法:
SELECT A.FIELD1 FROM <TABLE> A
UNION
SELECT B.FIELD2 FROM <TABLE> B
注:
1.列名不一致时,会以第一张表的表头为准,并对齐栏目
2.会将重复的行进行过滤
3.如果查询的表的列数量不相等时会报错
4.在每个子句的排序中是没有意义的,MySQL在合并时会忽略
5.如果子句中的排序和limit进行结合是有意义的
6.可以对合并后的整表进行排序
4. UNION ALL
与 UNION 不同, UNION ALL 不回去重,而是全部显示