DML(数据管理语言)
插入数据
#插入指定的值
INSERT INTO 表名(要添加的列段) VALUES (列段对应值);
#从其它表中拷贝数据
INSERT INTO 要插入数据的表
SELECT * FROM 目标表
WHERE 条件筛选;
更改数据
#需要更新的数据。
UPDATE 表
SET id=70#对应列=值
WHERE id = 113;#筛选
#一次修改多表的数据
UPDATE 表1 bo
INNER JOIN 表2 b
ON bo.表1列=b.表2列
SET b.表2列2='119',bo.表1列2=1000
WHERE b.表2列='张无忌';#筛选
删除数据
#删除指定数据
DELETE FROM 表
WHERE 列='值';#筛选
#一次删除多表的数据
DELETE b FROM 表1 b
INNER JOIN 表2 bo ON b.表1列= bo.表2列
WHERE bo.表2列='张无忌';
视图
含义:虚拟表,和普通表一样使用
创建视图
#语法:
create view 视图名
as
查询语句;
视图的修改
#方式一:
create or replace view 视图名
as
查询语句;
#方式二:
alter view 视图名
as
查询语句;
删除、查看视图
#删除视图
DROP VIEW 视图名,视图名,...;
#查看视图
DESC myv3;
SHOW CREATE VIEW myv3;
视图的更新
#1.插入
INSERT INTO myv1 VALUES('张飞','[email protected]');
#2.修改
UPDATE myv1 SET last_name = '张无忌' WHERE last_name='张飞';
#3.删除
DELETE FROM myv1 WHERE last_name = '张无忌';
不允许更新的视图
#①包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
CREATE OR REPLACE VIEW myv1
AS
SELECT MAX(列) m,列 FROM 表
GROUP BY 列;
#②常量视图
CREATE OR REPLACE VIEW myv2
AS
SELECT 'john' NAME;
#③Select中包含子查询
CREATE OR REPLACE VIEW myv3
AS
SELECT 列,(SELECT MAX(列) FROM 表) 最高工资 FROM 表;
#④join
CREATE OR REPLACE VIEW myv4
AS
SELECT 列,列 FROM 表 e
JOIN 表 d
ON e.列=d.列;
#⑤from一个不能更新的视图
CREATE OR REPLACE VIEW myv5
AS
SELECT * FROM myv3;
#⑥where子句的子查询引用了from子句中的表
CREATE OR REPLACE VIEW myv6
AS
SELECT 列 FROM 表
WHERE 列 IN(
SELECT 列 FROM 表 WHERE 列 IS NOT NULL
);