如何更好地学习Mysql数据库UPDATE worker_view4 SET name='hi';
ERROR............The target table worker_view4 of the UPDATE is not updatable.
(4)视图中怎么能快速学会mysql的SELECT中包含子查询 。
CREATE VIEW worker_view5(name)
AS SELECT (SELECT name FROM worker);
UPDATE worker_view5 SET name = '刘佳';
该视图中包含了子查询怎么能快速学会mysql,因此也是不能更新的 。
(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表中选出age20的记录来创建视图 。视图的字段包括id、name、gender和address 。ALGORITHM设置为MERGE类型 。加上WITH LOCAL CHECK OPTION条件 。
CREATE ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
【怎么能快速学会mysql 怎么能快速学会做表格】AS SELECT id, name, gender, address
FROM work_info
WHERE age20
WITH LOCAL CHECK OPTION;
(4)查看视图info_view的基本结构和详细结构 。
SHOW CREATE VIEW info_view \G
(5)查看视图info_view的所有记录 。
SELECT * FROM info_view;
(6)修改视图info_view,使其显示age20的信息,其怎么能快速学会mysql他条件不变 。
ALTER ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
AS SELECT id, name, gender, address
FROM work_info
WHERE age20
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;
MySQL数据库新特性之存储过程入门教程 在MYSQL 中 终于引入了存储过程这一新特性 这将大大增强MYSQL 的数据库处理能力 在本文中 将指导读者快速掌握MYSQL 的存储过程的基本知识 带领用户入门
存储过程介绍
存储过程是一组为了完成特定功能的SQL语句集 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它 存储过程可由应用程序通过一个调用来执行 而且允许用户声明变量 同时 存储过程可以接收和输出参数 返回执行存储过程的状态值 也可以嵌套调用
存储过程的优点
作为存储过程 有以下这些优点
( )减少网络通信量 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别 可是如果存储过程包含上百行SQL语句 那么其性能绝对比一条一条的调用SQL语句要高得多
( )执行速度更快 存储过程创建的时候 数据库已经对其进行了一次解析和优化 其次 存储过程一旦执行 在内存中就会保留一份这个存储过程 这样下次再执行同样的存储过程时 可以从内存中直接中读取
( )更强的安全性 存储过程是通过向用户授予权限(而不是基于表) 它们可以提供对特定数据的访问 提高代码安全 比如防止 SQL注入
( ) 业务逻辑可以封装存储过程中 这样不仅容易维护 而且执行效率也高
当然存储过程也有一些缺点 比如
可移植性方面 当从一种数据库迁移到另外一种数据库时 不少的存储过程的编写要进行部分修改
存储过程需要花费一定的学习时间去学习 比如学习其语法等
在MYSQL中 推荐使用MYSQL Query Browswer()这个工具去进行存储过程的开发和管理 下面分步骤来学习MYSQL中的存储过程
定义存储过程的结束符
在存储过程中 通常要输入很多SQL语句 而SQL语句中每个语句以分号来结束 因此要告诉存储过程 什么位置是意味着整个存储过程结束 所以怎么能快速学会mysql我们在编写存储过程前 先定义分隔符 我们这里定义 // 为分隔符 我们使用DELIMITER //这样的语法 就可以定义结束符了 当然你可以自己定义其怎么能快速学会mysql他喜欢的符号
如何创建存储过程
下面先看下一个简单的例子 代码如下
DELIMITER //CREATEPROCEDURE `p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENTA procedure BEGINSELECT Hello World ! ;END//
下面讲解下存储过程的组成部分
)首先在定义好终结符后 使用CREATE PROCEDURE 存储过程名的方法创建存储过程 LANGUAGE选项指定了使用的语言 这里默认是使用SQL
)DETERMINISTIC关键词的作用是 当确定每次的存储过程的输入和输出都是相同的内容时 可以使用该关键词 否则默认为NOT DETERMINISTIC
) SQL SECURITY关键词 是表示调用时检查用户的权限 当值为INVOKER时 表示是用户调用该存储过程时检查 默认为DEFINER 即创建存储过程时检查
) MENT部分是存储过程的注释说明部分
lishixinzhi/Article/program/MySQL/201404/30557
MySQL能去哪里学习?自学:
1:b站上有很多mysql的学习视频,都是各个培训机构往期的培训视频
2、淘宝上搜mysql,有很多店主整理好的培训视频,大概三五块钱就有很多
3、51cto,慕课网,csdn之类的网站,上边也有很多培训视频 , 有需要会员的,也有免费的
需要注意下视频的培训日期以及数据库版本 , 最好是选最近两年的培训视频,51cto风哥的视频就挺详细的,就是有点贵
培训机构:
有很多线下的和线上的培训机构,例如晟数学苑 , 老男孩等等,培训的机构海了去了 , 自己了解下哪个机构比较好,报名就是了,就是需要花不少的钱
如果想以此就业的话,也可以去考虑去考下mysql的认证,mysql ocp也就一千来块钱
MYSQL数据库初学者使用指南有很多朋友虽然安装好了mysql但却不知如何使用它 在这篇文章中我们就从连接MYSQL 修改密码 增加用户等方面来学习一些MYSQL的常用命令一 连接MYSQL 格式 mysql h主机地址 u用户名-p用户密码 例 连接到本机上的MYSQL 首先在打开DOS窗口 然后进入目录 mysqlbin 再键入命令mysql uroot p 回车后提示你输密码 如果刚安装好MYSQL 超级用户root是没有密码的 故直接回车即可进入到MYSQL中了 MYSQL的提示符是 mysql 例 连接到远程主机上的MYSQL 假设远程主机的IP为 用户名为root 密码为abcd 则键入以下命令 mysql h uroot pabcd退出MYSQL命令 exit (回车)二 修改密码 格式 mysqladmin u用户名 p旧密码 password 新密码 例 给root加个密码ab 首先在DOS下进入目录mysqlbin 然后键入以下命令mysqladmin uroot password ab 注 因为开始时root没有密码 所以 p旧密码一项就可以省略了例 再将root的密码改为djg mysqladmin uroot pab password djg三 增加新用户 (注意 和上面不同 下面的因为是MYSQL环境中的命令 所以后面都带一个分号作为命令结束符)格式 grant select on 数据库 * to 用户名@登录主机 identified by 密码 例 增加一个用户test 密码为abc 让他可以在任何主机上登录 并对所有数据库有查询 插入 修改 删除的权限 首先用以root用户连入MYSQL 然后键入以下命令 grant select insert update delete on * * to test @ % Identified by abc ;但例 增加的用户是十分危险的 你想如某个人知道test 的密码 那么他就可以在internet上的任何一台计算机上登录你的mysql数据库并对你的资料可以为所欲为了 解决办法见例 例 增加一个用户test 密码为abc 让他只可以在localhost上登录 并可以对数据库mydb进行查询 插入 修改 删除的操作(localhost指本地主机 即MYSQL数据库所在的那台主机) 这样用户即使用知道test 的密码 他也无法从internet上直接访问数据库 只能通过MYSQL主机上的web页来访问了 grant select insert update delete on mydb * to test @localhost identified by abc ;如果你不想test 有密码 可以再打一个命令将密码消掉 grant select insert update delete on mydb * to test @localhost identified by ;注意 你必须首先登录到MYSQL中 以下操作都是在MYSQL的提示符下进行的 而且每个命令以分号结束 四一 操作技巧 如果你打命令时 回车后发现忘记加分号 你无须重打一遍命令 只要打个分号回车就可以了 也就是说你可以把一个完整的命令分成几行来打 完后用分号作结束标志就OK 你可以使用光标上下键调出以前的命令 但以前我用过的一个MYSQL旧版本不支持 我现在用的是 mysql beta win五 显示命令显示数据库列表 show databases;刚开始时才两个数据库 mysql和test mysql库很重要它里面有MYSQL的系统信息 我们改密码和新增用户 实际上就是用这个库进行操作显示库中的资料表 use mysql //打开库 学过FOXBASE的一定不会陌生吧show tables; 显示资料表的结构 describe 表名; 建库 create database 库名; 建表 use 库名 create table 表名 (字段设定列表)删库和删表:drop database 库名;drop table 表名将表中记录清空 delete from 表名; 显示表中的记录 select * from 表名;六 一个建库和建表以及插入数据的实例 drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER(id int( ) auto_increment not null primary key name char( ) not null address varchar( ) default 深圳 year date); //建表结束//以下为插入字段insert into teacher valuess( glchengang 深圳一中 );insert into teacher valuess( jack 深圳一中 );注 在建表中( )将ID设为长度为 的数字字段:int( )并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key( )将NAME设为长度为 的字符字段( )将ADDRESS设为长度 的字符字段 而且缺省值为深圳 varchar和char有什么区别呢 只有等以后的文章再说了 ( )将YEAR设为日期字段 如果你在mysql提示符键入上面的命令也可以 但不方便调试 你可以将以上命令原样写入一个文本文件中假设为school sql 然后复制到c:下 并在DOS状态进入目录mysqlbin 然后键入以下命令 mysql uroot p密码c:school sql如果成功 空出一行无任何显示 如有错误 会有提示 (以上命令已经调试 你只要将//的注释去掉即可使用)七 将文本资料转到数据库中文本资料应符合的格式 字段资料之间用tab键隔开 null值用n来代替 例rose 深圳二中mike 深圳一中数据传入命令 load data local infile 文件名 into table 表名;注意 你最好将文件复制到mysqlbin目录下 并且要先用use命令打表所在的库八 备份数据库(命令在DOS的mysqlbin目录下执行)mysqldump opt schoolschool bbb注释:将数据库school备份到school bbb文件 school bbb是一个文本文件 文件名任取 打开看看你会有新发现 后记 其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异 您最好找本将SQL的书看看 我在这里只介绍一些基本的 其实我也就只懂这些了 呵呵 最好的MYSQL教程还是 晏子 译的 MYSQL中文参考手册 不仅免费每个相关网站都有下载 而且它是最权威的 可惜不是象 PHP 中文手册 那样是chm的格式 在查找函数命令的时候不太方便 lishixinzhi/Article/program/MySQL/201311/29306
如何学好mySQLmysql是数据库怎么能快速学会mysql,你应该先理解数据库怎么能快速学会mysql的基本概念怎么能快速学会mysql,然后学SQL语句 。
之后学习怎么用面向对象的方法建立各个实体之间的关系,再映射成表 。
怎么能快速学会mysql的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于怎么能快速学会做表格、怎么能快速学会mysql的信息别忘了在本站进行查找喔 。
推荐阅读
- oracletemp表空间扩展,oracle11g扩展表空间
- python爬虫vip视频代码的简单介绍
- 农村手机直播带货平台,农村直播带货营销策划方案
- oracle服务端怎么装 oracle服务端怎么安装
- 包含微博开通视频号怎样关闭的词条
- 动漫H小游戏经营,动漫游戏店
- 怎么让显卡变高,显卡怎么设置可以提高帧数
- linux无命令行出现 linux无mmu
- 旧电脑内存硬盘怎么换电脑,老电脑换内存