记录相关操作之插入、更新、删除、查询(单表、多表)
一、插入数据(insert)
1. 插入完整数据(顺序插入)
语法一:
INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); # 后面的值必须与字段一一对应
语法二:
INSERT INTO 表名 VALUES (值1,值2,值3…值n);2. 指定字段插入数据
语法:
INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); # 后面的值必须与指定的字段一一匹配3. 插入多条记录
语法:
INSERT INTO 表名 VALUES
(值1,值2,值3…值n),
(值1,值2,值3…值n),
(值1,值2,值3…值n);4. 插入查询结果
语法:
INSERT INTO 表名(字段1,字段2,字段3…字段n)
SELECT (字段1,字段2,字段3…字段n) FROM 表2
WHERE …;
二、更新数据(update)
语法:
UPDATE 表名 SET
字段1=值1,
字段2=值2,
WHERE CONDITION; # where 有则根据条件修改,若是没有,则叫表中的对应字段的值全部修改
示例:
UPDATE mysql.user SET password=password(‘123’)
where user=’root’ and host=’localhost’;
三、删除数据(delete)
删除数据时,如果设置过主键自动增长:
部分删除,会保留行号,先修改主键的值,再添加新的数据
全部删除,会保留行号,先修改主键的值,在添加新的数据 =====> 全部修改可以用 truncate table 表名 来清空表中数据
修改添加数据时的自动增长的起始位置: alter table 表名 auto_increment = 位置(整型数字)
语法:
DELETE FROM 表名
WHERE CONITION;
示例:
DELETE FROM mysql.user
WHERE password=’’;
四、查询数据
1、单表查询
(1)单表查询的语法
SELECT 字段1,字段2... FROM 表名
WHERE 条件
GROUP BY field
HAVING 筛选
ORDER BY field
LIMIT 限制条数
(2)关键字的优先级(重点)
重点中的重点:关键字的执行优先级from #1.找到表
where #2.根据where指定的约束条件,去表中取出一条条记录
group by #3.将取出的一条条记录分组,若没分组,则视为一个整体
having #4.将分组后的结果进行过滤
select #5.执行select
distinct #6.去重
order by #7.排序,默认是升序
limit #8.限制结果的显示条数
(2.1)关键字定义顺序
SELECT DISTINCT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
(2.2)关键字的执行顺序
(7) SELECT
(8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT
(2.3)执行顺序详解
SQL语句的执行过程中,都会产生一个虚拟表,用来保存SQL语句的执行结果
执行FROM语句,知道最开始从哪个表开始的
执行ON语句,根据ON后面指定的条件筛选出符合条件的
添加外部行,只有在连接OUTER JOIN类型时才执行,RIGHT OUTER JOIN、LEFT OUTER JOIN、FULL OUTER JOIN (详细见多表查询)
执行WHERE语句