-- 创建db5数据库
create database if not exists db5 character set utf8;
-- 使用db5数据库
use db5;
-- 创建country表
create table country(
id int primary key auto_increment, -- 国家id
name varchar(20) -- 国家名称
);
-- 添加数据
insert into country values (null,"中国"),(null,"美国"),(null, "俄罗斯");
-- 创建city表
create table city(
id int primary key auto_increment, -- 城市id
name varchar(20), -- 城市名称
cid int, -- 外键列,关联country主键列id
constraint cc_fk foreign key (cid) references country(id) -- 添加外键约束
);
-- 添加数据
insert into city values (null,"北京", 1),(null,"上海", 1),(null,"纽约", 2),(null,"莫斯科", 3);
视图的创建、查询、修改、删除
视图的创建
创建视图语法
-- 标准语法
CREATE VIEW 视图名称 [(列名列表)] AS 查询语句;
普通多表查询,查询城市和所属国家
-- 普通多表查询,查询城市和所属国家
SELECT
t1.*,
t2.country_name
FROM
city t1,
country t2
WHERE
t1.cid = t2.id;
-- 经常需要查询这样的数据,就可以创建一个视图
创建视图基本演示
-- 创建一个视图。将查询出来的结果保存到这张虚拟表中
CREATE
VIEW
city_country
AS
SELECT t1.*,t2.country_name FROM city t1,country t2 WHERE t1.cid=t2.id;
创建视图并指定列名基本演示
-- 创建一个视图,指定列名。将查询出来的结果保存到这张虚拟表中
CREATE
VIEW
city_country2 (city_id,city_name,cid,country_name)
AS
SELECT t1.*,t2.country_name FROM city t1,country t2 WHERE t1.cid=t2.id;
视图的查询
查询视图语法
-- 标准语法
SELECT * FROM 视图名称;
查询视图基本演示
-- 查询视图。查询这张虚拟表,就等效于查询城市和所属国家
SELECT * FROM city_country;
-- 查询指定列名的视图
SELECT * FROM city_country2;
-- 查询所有数据表,视图也会查询出来
SHOW TABLES;
查询视图创建语法
-- 标准语法
SHOW CREATE VIEW 视图名称;
查询视图创建语句基本演示
SHOW CREATE VIEW city_country;
视图的修改
修改视图表中的数据
-- 标准语法
UPDATE 视图名称 SET 列名=值 WHERE 条件;
-- 修改视图表中的城市名称北京为北京市
UPDATE city_country SET city_name='北京市' WHERE city_name='北京';
-- 查询视图
SELECT * FROM city_country;
-- 查询city表,北京也修改为了北京市
SELECT * FROM city;
-- 注意:视图表数据修改,会自动修改源表中的数据
修改视图表结构
-- 标准语法
ALTER VIEW 视图名称 [(列名列表)] AS 查询语句;
-- 查询视图2
SELECT * FROM city_country2;
-- 修改视图2的列名city_id为id
ALTER
VIEW
city_country2 (id,city_name,cid,country_name)
AS
SELECT t1.*,t2.country_name FROM city t1,country t2 WHERE t1.cid=t2.id;
视图的删除
删除视图
-- 标准语法
DROP VIEW [IF EXISTS] 视图名称;
-- 删除视图
DROP VIEW city_country;
-- 删除视图2,如果存在则删除
DROP VIEW IF EXISTS city_country2;