标签:测试数据 子程序 rmi root用户 github 空间 输入参数 roc ping
**************************************
MySql视图view的使用:创建、修改、删除
***************************************
1. MySql创建视图
创建视图与创建表语法类似,不同的是创建视图是从一条查询语句创建的。视图创建后,可以像一张表一样使用,但只能用于数据查询,如:可以在一个查询中使用、可以在存储过程中、可以在另一个视图中使用。MySql创建视图语法如下:
CREATE VIEW 视图名 AS SELECT 查询语句;
2. MySql视图修改
已经创建的视图,有时会需要修改其查询字段或查询条件,MySql视图修改语法如下:
ALTER VIEW 视图名 AS SELECT 查询语句;
3. MySql视图删除
MySql视图删除语法与删除表DROP TABLE类型,语法如下:
DROP VIEW 视图名;
3. MySql视图使用
创建好视图之后,可以直接通过视图名使用视图,语法如下:
SELECT * FROM 视图名
***************************************
CREATE VIEW语句简介
***************************************
要在MySQL中创建新视图,请使用CREATE VIEW语句。 在MySQL中创建视图的语法如下:
让我们更详细地查看了解以上语法。
视图处理算法
算法属性允许您控制MySQL在创建视图时使用的机制。MySQL提供三种算法:MERGE,TEMP TABLE和UNDEFINED。
视图名称
在数据库中,视图和表共享相同命名空间,因此,视图和表不能具有相同的名称。 此外,视图的名称必须遵循表命名规则。
SELECT语句
在SELECT语句中,可以从数据库中存在的任何表或视图查询数据。SELECT语句必须遵循几个规则:
注意,SELECT语句不需要引用任何表。
**********************************************
Mysql中创建存储过程和函数的语法
**********************************************
mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数必须有返回值,并且函数的参数只有IN类型而存储过程有IN、OUT、INOUT这三种类型。
例子:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#创建数据库
DROP DATABASE IF EXISTS Dpro;
CREATE DATABASE Dpro
CHARACTER SET utf8
;
USE Dpro;
#创建部门表
DROP TABLE IF EXISTS Employee;
CREATE TABLE Employee
(id INT NOT NULL PRIMARY KEY COMMENT ‘主键‘,
name VARCHAR(20) NOT NULL COMMENT ‘人名‘,
depid INT NOT NULL COMMENT ‘部门id‘
);
#插入测试数据
INSERT INTO Employee(id,name,depid) VALUES(1,‘陈‘,100),(2,‘王‘,101),(3,‘张‘,101),(4,‘李‘,102),(5,‘郭‘,103);
#创建存储过程
#改变默认的分隔符(;)为“$$”来作为存储过程结束的标识,随后再恢复默认值。
DELIMITER $$
DROP PROCEDURE IF EXISTS Pro_Employee;
CREATE PROCEDURE Pro_Employee(IN pdepid VARCHAR(20),OUT pcount INT )
READS SQL DATA
SQL SECURITY INVOKER
BEGIN
SELECT COUNT(id) INTO pcount FROM Employee WHERE depid=pdepid;
# 多条sql语句
…
END$$
# $$代表存储过程的结束,再恢复默认的分隔符为(;)
DELIMITER ;
#执行存储过程, 变量名前面加上@,
CALL Pro_Employee(101,@pcount);
# 变量的查询也需要加上@
SELECT @pcount;
# 列出所有存储过程
SHOW PROCEDURE STATUS;
# 查看一个已存在的存储过程的信息
SHOW CREATE PROCEDURE <sp_name>;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DELIMITER $$
create procedure 存储过程名字()
(
[in|out|inout] 参数 datatype
)
begin
MySQL 语句;
end$$
DELIMITER ;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意??
SET myvar = (SELECT id FROM users LIMIT 1);
SELECT myvar into num;
END $$
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
语法解释:
在创建存储过程的时候一般都会用
DELIMITER $$…BEGIN…END$$ DELIMITER ;放在开头和结束,目的就是避免mysql把存储过程内部的";"解释成结束符号,最后通过“DELIMITER ;”来告知存储过程结束。
存储过程的参数有三种类型:
characteristic部分:
LANGUAGE SQL:用来说明语句部分是SQL语句,未来可能会支持其它类型的语句。
[NOT] DETERMINISTIC:如果程序或线程总是对同样的输入参数产生同样的结果,则被认为它是“确定的”,否则就是“非确定”的。如果既没有给定DETERMINISTIC也没有给定NOT DETERMINISTIC,默认的就是NOT DETERMINISTIC(非确定的)CONTAINS SQL:表示子程序不包含读或写数据的语句。
NO SQL:表示子程序不包含SQL语句。
READS SQL DATA:表示子程序包含读数据的语句,但不包含写数据的语句。
MODIFIES SQL DATA:表示子程序包含写数据的语句。
SQL SECURITY DEFINER:表示执行存储过程中的程序是由创建该存储过程的用户的权限来执行。
SQL SECURITY INVOKER:表示执行存储过程中的程序是由调用该存储过程的用户的权限来执行。(例如上面的存储过程我写的是由调用该存储过程的用户的权限来执行,当前存储过程是用来查询Employee表,如果我当前执行存储过程的用户没有查询Employee表的权限那么就会返回权限不足的错误,如果换成DEFINER如果存储过程是由ROOT用户创建那么任何一个用户登入调用存储过程都可以执行,因为执行存储过程的权限变成了root)
COMMENT ‘string‘:备注,和创建表的字段备注一样。
注意:在编写存储过程和函数时建议明确指定上面characteristic部分的状态,特别是存在复制的环境中,如果创建函数不明确指定这些状态会报错,从一个非复制环境将带函数的数据库迁移到复制环境的机器上如果没有明确指定DETERMINISTIC, NO SQL, or READS SQL DATA该三个状态也会报错。
**********************************************
Mysql中事务处理块
**********************************************
标签:测试数据 子程序 rmi root用户 github 空间 输入参数 roc ping
原文地址:http://www.cnblogs.com/songdanzju/p/7465551.html