掌握视图的定义与维护操作,加深对视图在关系数据库中作用的理解。
二、实验内容在数据库world中完成以下操作:
1、建立亚洲国家的视图asia_country,并要求进行修改和插入操作时仍需保证该视图只有亚洲国家,视图的属性名为Code,Name,Continent,Population,GNP, GovernmentForm.
输入以下代码并运行:
USE world;
CREATE VIEW asia_country
AS
SELECT Code,Name,Continent,Population,GNP,GovernmentForm
FROM country
WHERE Continent='Asia';
对于视图的使用,将其当做基本表即可,可用下面语句用来显示asia_country表中的所有亚洲国家:
USE world;
SELECT *
FROM asia_country;
或者直接在左侧目录【world】下的【视图】下多出的“asia_country”上点击右键,在弹出选项里选择“设计视图”。
结果如下图所示:
2、建立国家简称(country.Code)、城市名(city.Name)、语言名(countrylanguage.Language)的视图cc_language。本视图由三个基本表的连接操作导出,其SQL语句如下:
USE world;
CREATE VIEW cc_language
AS
SELECT country.Code,city.Name,countrylanguage.Language
FROM country,city,countrylanguage
WHERE country.Code=city.CountryCode
AND country.Code=countrylanguage.CountryCode;
用以下语句查看:
USE world;
SELECT *
FROM cc_language;
结果如下图所示:
3、定义一个反映国家独立年份的视图c_indepyear。
输入以下代码并运行:
USE world;
SELECT *
FROM c_indepyear;
结果如下图所示
4、删除视图c_indepyear。
输入以下代码并运行:
USE world;
DROP VIEW c_indepyear
5、在亚洲国家视图asia_country中找出国民生产总值GNP大于50000的国家名称和GNP。
输入以下代码并运行:
USE world;
SELECT Name,GNP
FROM asia_country
WHERE GNP > 50000;
6、在asia_country视图中人口多于一千万的国家名称、政体。
输入以下代码并运行:
USE world;
SELECT Name,GovernmentForm
FROM asia_country
WHERE Population > 10000000
7、将亚洲国家视图asia_country中Code为“AFG”的政体改为“Republic”。
输入以下代码并运行:
USE world;
UPDATE asia_country
SET GovernmentForm = 'Republic'
WHERE 'Code' = 'AFG'
8、向亚洲国家视图asia_countr中插入一个新的国家记录,其中Code为“DMC”、Name为“Demacia”,Cotinent为“Asia”,Population为“10000000”,GNP为“50000”,GovernmentForm为“Monarchy”。
输入以下代码并运行:
USE world;
INSERT INTO asia_country
VALUES('DMC','Demacia','Asia',10000000,50000,'Monarchy')
三、课后练习题
1、建立共和国政体的国家的视图。
输入以下代码并运行:
USE world;
CREATE VIEW republic_form(country_code,country_name,country_government_form)
AS
SELECT Code,Name,GovernmentForm
FROM country
WHERE GovernmentForm = 'Republic';
2、建立君主立宪制(Constitutional Monarchy)国家的视图,并要求进行修改和插入操作时仍须保证该视图只有君主立宪制国家。
输入以下代码并运行:
USE world;
CREATE VIEW constitutional_monarchy
AS
SELECT *
FROM country
WHERE GovernmentForm='Constitutional Monarchy';
3、建立共和国政体且国名生产总值在10000以上的国家视图。
输入以下代码并运行:
USE world;
CREATE VIEW test_6_3
AS
SELECT *
FROM country
WHERE GovernmentForm = 'Republic' AND GNP > 10000
四、出现的问题及解决方案
问题:
ORDER BY关键字降序排序问题
SQL AND & OR 运算符与优先级问题
WHERE语句的特殊条件——例如is null、between and、like模糊查询等问题
Enum枚举类型的设定值问题
解决方案:
参考《数据库系统概论课本》、菜鸟教程(https://www.runoob.com/sql)和CSDN博客
作者:哆啦一泓