MySQL学习(3) 视图,游标,语句块儿
1.MySQL创建视图的简单语句为:CREATE VIEW view_name AS SELECT * from TABLE_NAME;
不能对触发器创建视图(VIEW)。但是在5.1.4中是这样描述的,A view can be created from many kinds of SELECT statements. It can refer to base tables or other views. It can use joins, UNION, and subqueries。大致意思是视图可以由大多数SELECT语句组成,可以是参考基础表或其他的视图。能使用连接,合并和子查询。
2.游标(CURSOR),游标在存储过程中的使用。
游标是一种在数据库服务器端操作结果集的方式,如果没有游标我们要对查询的结果集进行处理就要使用高级语言编程实现,这样增加了不必要的网络传输。MySQL在5.0.3支持了游标。
学习的代码如下:
DELIMITER /
/**
*1.修改表列
*1.1增加表列,1.2
*/
ALTER TABLE t ADD COLUMN ii INT;
ALTER TABLE t
/**
*2.MD5函数,现在的加密工作都交给数据库了,不用在应用中加密了。
**/
SELECT MD5('LEST');
/**
*3.视图VIEW,这样我们只要查询视图就可以看到我们要查看的数据,当然前提是我们的SELECT 语句包括了他们。
*/
CREATE OR REPLACE VIEW v_t AS SELECT i from t;
SELECT * from v_t;
DESC v_t;
CREATE PROCEDURE p_iu()
BEGIN
INSERT INTO userinfo VALUES('bill',30);
UPDATE userinfo SET age=20 WHERE username='admin1234';
COMMIT;
EXCEPTION
ROLLBACK;
END;
/**4.将各个操作限制在一起,成功的条件是整个操作顺利完成*/
BEGIN
INSERT INTO t VALUES(12,12);
INSERT INTO tx VALUES(11);
END;
/
/**
*5.游标CURSOR,存储过程和函数支持简单的游标,使用游标是数据库服务器可能会将结果表复制一份,也可能不会,只能在存储过程和函数中使用。
*1.简单的游标应用,done是又游标的实现者操作,对其值进行修改
**/
DROP TABLE IF EXISTS t;//
CREATE TABLE t(i_a INT);//
INSERT INTO t VALUES(2);//
CREATE PROCEDURE p_cur()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a INT;
DECLARE cur1 CURSOR FOR SELECT * from t;
OPEN cur1;
REPEAT
FETCH cur1 INTO a;
UNTIL done END REPEAT;
CLOSE cur1;
END;
//
DELIMITER 根据需要改变。
相关文档:
复制记录,采用自查询方式
sql
INSERT INTO `table` ('id','aa','bb','cc') SELECT 'id','aa','bb','cc' from `table` (WHERE .....)
Tips:
/**
* 复制新纪录的时候,可能要更新id或者是部分数据(假设id自增加的情况)
*
* text_aa 为固定值 ,可在脚本调用中赋变量值 如($aa)
* 注意'text_aa' 与 `cc` 的区别 ......
mysql 导数据库命令
mysql命令导数据库脚本。
mysql>create database databaseName
mysql>use yourDatabase
mysql>source d:yourSql.sql
=========================
1.mysql -u root -p Javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" href="http://www.xland.com.cn/article/74/76/0704/Javascript:;" ......
这几天,项目中有个需求,到数据库这步的结果就是需要批量update的数据,总不能循环使用update....set...吧,这样显示效率是很低,为了解决这个问题,大家也是想了很多的办法。
先说这几个解决方案:
1:循环update操作:什么都不说了,显然淘汰了;
2: ......
http://blog.163.com/mysqldba@126/blog/static/1315356342009931103834396/
最近看了看mysql的状态变量,感觉好多跟以前自己想象的不一样。为了以后能及时发现自己的错误,就先记下来;
http://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html
mysql> show status;
Com_xxx
语句计数变量表示每个xxx ......
如果你搜索GOOGLE,你会找到很多关于mysql的随机数,他们会这样说
生成3,6之间的随机整数
FLOOR(3 + (RAND() * 6))
在4后面添加一个3到6之间的整数
CONCAT(343,FLOOR(3 + (RAND() * 6)))
在某一字段后面添加一位3,6之间的整数
UPDATE test SET xx= CONCAT(xx,FLOOR(3 +(RAND() * 6)));
但是我私自测试了一下, ......