如何更好地学习Mysql数据库

如何更好地学习Mysql数据库,第1张

UPDATE worker_view4 SET name='hi'

ERROR............The target table worker_view4 of the UPDATE is not updatable.

(4)视图中的SELECT中包含子查询。

CREATE VIEW worker_view5(name)

AS SELECT (SELECT name FROM worker)

UPDATE worker_view5 SET name = '刘佳'

该视图中包含了子查询,因此也是不能更新的。

(5)由不可更新的视图导出的视图。

CREATE VIEW worker_view6

AS SELECT * FROM worker_view5

UPDATE worker_view6 SET name = '王仔'

因为worker_view6是不可更新的视图,所以worker_view6也不可以更新的视图。使用UPDATE语句更新时,会出现系统报错。

(6)创建视图时,ALGORITHM为TEMPTABLE类型。

CREATE ALGORITHM=TEMPTABLE

VIEW worker_view7

AS SELECT * FROM worker

UPDATE worker_view7 SET name = '王仔'

因为该视图ALGORITHM为TEMPTABLE类型,所以worker_view7不可以更新的视图。TEMPTABLE类型就是临时表类型。系统默认临时表是不能更新的。

(7)视图对应的表上存在没有默认值的列,而且该列没有包含在视图里。例如,表中包含的name字段没有默认值,但是视图中不包含该字段。那么这个视图是不能更新的。因为,在更新视图时,这个没有默认值的记录将没有值插入,也没有NULL值插入。数据库系统是不会允许这样的情况出现的,数据库系统将会阻止这个视图更新。

注意:视图中虽然可以更新数据,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图来更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,可能会造成数据更新失败。

除了上述条件不能更新视图以外,WITH[CASCADED|LOCAL]CHECK OPTION也将决定视图能否更新。"LOCAL"参数表示更新视图时要满足该视图本身的定义的条件即可;

8.6 删除视图

删除视图是指删除数据库中已经存在的视图。删除视图时,只能删除视图的定义,不会删除数据。MYSQL中,使用DROP VIEW语句来删除视图,不会删除数据。MySQL中,使用DROP VIEW语句来删除视图。但是,用户必须拥有DROP权限。

DROP VIEW[IF EXISTS] 视图名列表 [RESTRICT|CASCADE]

实例一:

SELECT Drop_priv

FROM mysql.user

WHERE user='root'

CREATE VIEW worker_view_del1

AS SELECT * FROM worker

CREATE VIEW worker_view_del2

AS SELECT * FROM worker

CREATE VIEW worker_view_del3

AS SELECT * FROM worker

DROP VIEW IF EXISTS worker_view_del2, worker_view_del3

8.7 本章实例

在test数据库中work_info表上进行视图 *** 作。

1. 在test数据库中work_info表

2. 插入记录

3. 创建视图info_view

4. 查看视图info_view的基本结构和详细结构

5. 查看视图info_view的所有记录

6. 修改视图info_view

7. 更新视图

8. 删除视图

work_info表的结构

字段名 字段描述 数据类型 主键 外键 非空 唯一 自增

id 编号 INT(10) 是 否 是 是 否

name 姓名 VARCHAR(20) 否 否 是 否 否

gender 姓别 VARCHAR(4) 否 否 是 否 否

age 年龄 INT(5) 否 否 否 否 否

address 家庭住址 VARCHAR(50) 否 否 否 否 否

tel 电话号码 VARCHAR(20) 否 否 否 否 否

work_info表中的内容

id name gender age address tel

1 张三 M 18 北市市海淀区 01-155151

2 李四 M 22 北京市昌平区 01-215151

3 王五 F 17 湖南省永州市 025-545845

4 赵六 F 25 辽宁省阜新市 0625-514545

(1) 创建work_info表

USE test

CREATE TABLE IF NOT EXISTS work_info (

id INT(10) NOT NULL UNIQUE PRIMARY KEY,

name VARCHAR(20) NOT NULL,

gender VARCHAR(4) NOT NULL,

age INT(5),

address VARCHAR(50),

tel VARCHAR(20)

) DEFAULT CHARSET=utf8

(2)向work_info表中插入几条记录。

INSERT INTO work_info VALUES

(1, '张三', 'M', 18, '北市市海淀区','01-155151'),

(2,'李四', 'M', 22, '北京市昌平区', '01-215151'),

(3,'王五','F',17,'湖南省永州市','025-545845'),

(4,'赵六','F',25,'辽宁省阜新市','0625-514545')

(3) 创建视图info_view。从work_info表中选出age>20的记录来创建视图。视图的字段包括id、name、gender和address。ALGORITHM设置为MERGE类型。加上WITH LOCAL CHECK OPTION条件。

CREATE ALGORITHM=MERGE

VIEW info_view(id, name, gender, address)

AS SELECT id, name, gender, address

FROM work_info

WHERE age>20

WITH LOCAL CHECK OPTION

(4)查看视图info_view的基本结构和详细结构。

SHOW CREATE VIEW info_view \G

(5)查看视图info_view的所有记录。

SELECT * FROM info_view

(6)修改视图info_view,使其显示age<20的信息,其他条件不变。

ALTER ALGORITHM=MERGE

VIEW info_view(id, name, gender, address)

AS SELECT id, name, gender, address

FROM work_info

WHERE age<20

WITH LOCAL CHECK OPTION

(7)更新视图,将id为3的记录进行更新。设置其gender为M。

UPDATE info_view SET gender='M' WHERE id=3

(8)删除视图。

DROP VIEW info_view

8.8 上机实践

题目要求:

(1)在数据库example下创建college表。

(2)在college表上创建视图college_view。视图的字段包括student_num、student_name、student_age和department。ALGORITHM设置为UNDEFINED类型。加上WITH LOCAL CHECK OPTION条件。

(3)查看视图college_view的详细结构。

(4)更新视图。向视图中插入三条记录。

(5)修改视图,使其显示专业为"计算机"的信息,其他条件不变。

(6)删除视图college_view。

college表的结构

字段名 字段描述 数据类型 主键 外键 非空 唯一 自增

number 学号 INT(10) 是 否 是 是 否

name 姓名 VARCHAR(20) 否 否 是 否 否

major 专业 VARCHAR(20) 否 否 是 否 否

age 年龄 INT(5) 否 否 否 否 否

college_view表的内容

student_num student_name student_age department

0901 张三 20 外语

0902 李四 22 计算机

0903 王五 19 计算机

USE example

CREATE TABLE college(

number INT(10) NOT NULL UNIQUE PRIMARY KEY,

name VARCHAR(20) NOT NULL,

major VARCHAR(20) NOT NULL,

age TINYINT(3)

) DEFAULT CHARSET=utf8

CREATE ALGORITHM=UNDEFINED

VIEW college_view(student_num, student_name, student_age, department)

AS SELECT number, name, age, major

FROM college

WITH LOCAL CHECK OPTION

SHOW CREATE VIEW college_view \G

INSERT INTO college_view VALUES

(0901, '张三', 20, '外语'),

(0902, '李四', 22, '计算机'),

(0903, '王五', 19, '计算机')

CREATE OR REPLACE ALGORITHM=UNDEFINED

VIEW college_view(student_num, student_name, student_age, department)

AS SELECT number, name, age, major

FROM college

WHERE major='计算机'

WITH LOCAL CHECK OPTION

<?php

$p_arr = array("20120101"=>95,

"20120102"=>88,

"20120103"=>47,

"20120104"=>92,

"20120105"=>90,

"20120106"=>72,

"20120107"=>85,

"20120108"=>65,

"20120109"=>98,

"20120110"=>55)

$result = 0

foreach ($p_arr as $key => &$value) {

if ($value>$result)

{

$result = $value

$number = $key

echo "最高成绩"

echo "学号".$number

echo "</br>"

echo "成绩".$result

echo "</br>"

echo "</br>"

echo "</br>"

echo "不及格:"

$result = 0

$number = ""

foreach ($p_arr as $key => &$value) {

if ($value<60)

{

echo "</br>"

echo "学号".$key

echo "</br>"

echo "成绩".$value

?>

第一个问题看w3school的帮助文档


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8574115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存